问题标签 [distributed-training]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
73 浏览

apache-spark - Spark 内存使用量不断增加,而训练模型仍在继续

我正在使用TensorFlowOnSpark和一个图像数据集训练一个U-Net模型,该数据集可以放入我的 Spark 集群上的内存中,该集群有 3 个工作节点(每个都是 Ubuntu20,内存为 11 GB)。每个节点有 1 个执行器和 4 个 CPU,提供 9 GB 内存。

当模型训练过程开始时,我可以看到每个 executor 上至少有 2GB 的可用空间内存,但是训练的批次越多,executor 使用的内存就越多,直到整个工作因out失败内存错误。

我在单节点配置(1 个使用 Spark 的工作人员)中尝试了我的代码并得到了相同的结果,但是在没有 Spark 的 1 个 CPU 上使用分布式 TensorFlow时我的代码运行良好!!

使用的命令:

为什么会发生这种内存使用量的高增长以及如何解决它?

0 投票
1 回答
5129 浏览

tensorflow - 不允许迭代 `tf.Tensor`:AutoGraph 确实转换了这个函数。这可能表明您正在尝试使用不受支持的功能

我正在尝试将此COLA 存储库调整到我在本地文件夹中的音频数据集。我主要更改文件 contrastive.py 以使方法 _get_ssl_task_data() 适应我的新数据库。

但是,我从 model.fit (它在下面调用我的 model.train_step(data) 方法)触发了一个错误。我试图通过修改 train_step 中的数据形状来修复此错误,但没有任何成功。

我不确定这是因为形状或数据类型不兼容而导致的错误,还是因为我需要添加更多内容来调整我的图表。有人知道我的代码有什么问题吗?如果这确实是问题,我该如何替换 tf.Tensor 的使用?

这是 contrastive.py 的内容:

这是 ContrastiveModel 的代码:

当我运行上面代码中使用 strategy = tf.distribute.MirroredStrategy() 分发的代码时,我得到了这个完整的错误:

0 投票
0 回答
108 浏览

python - 分布式训练时如何在 TensorFlow 中应用梯度裁剪?

我想知道在分布式训练时如何在 TensorFlow 中应用梯度裁剪。这是我的代码:

我读过这个答案:如何在 TensorFlow 中应用渐变剪裁。这是答案中渐变剪辑的代码:

我应该在哪里更改以在我的情况下使用它?

0 投票
1 回答
595 浏览

tensorflow - 如何在 Keras 中使用模型子类化?

在顺序 API 中编写以下模型:

使用分布式训练框架时,我需要将语法转换为使用模型子类化。我查看了文档,但不知道该怎么做。

0 投票
0 回答
119 浏览

python - 如何加快 TF 模型训练?MultiWorkerMirroredStrategy 看起来比非分布式慢很多

使用Keras 分布式训练示例中的代码;使用 TF 2.4.1。

关注其他文档:

https://www.tensorflow.org/guide/distributed_training https://www.tensorflow.org/guide/distributed_training#multiworkermirroredstrategy

在 AWS 中使用 MNIST 模型训练单个 m5.large 节点需要 1m 47s。使用 3 台该类型的机器和 MultiWorkerMirroredStrategy,需要 4 分 30 秒。

仅仅是因为训练是在一个“相对较小”的 MNIST 模型上进行的,并且它开始真正在大型或非常大的数据集上大放异彩吗?

我的实际输入数据要大得多。在 1/2 GB 数据上进行模型训练的最佳方法是什么?1GB?2GB?非分布式在单个节点上是行不通的,但在 MultiWorkerMirroredStrategy 上运行的 MNIST 会引发速度问题。

基于 MNIST 的测试代码如下。

非分布式:

分散式:

0 投票
0 回答
15 浏览

linux - 什么可能会影响 `ps` 列出某个作业的速度?

我发现有时候,ps aux列出某项工作需要很长时间。它首先列出了一些其他工作,然后卡住了几分钟,然后列出了该工作和其余工作。

该特定工作是分布式培训系统中的计算繁重的工作人员。从其他工人那里也观察到,该工人停滞不前。我还没有弄清楚停滞的原因,但我想可能与这ps aux也需要很长时间才能列出来。

有谁知道什么可能会影响ps aux列出某个工作的速度?

0 投票
0 回答
14 浏览

tensorflow - 没有工作服务器的分布式模型训练

我有兴趣分发我的 DNN 模型的训练。但是,我有兴趣通过 AWS S3 而不是通过本地网络进行通信。为什么?我有一个很棒的基于 Hashicorp Nomad 的批处理/异步计算集群设置。如果我可以通过简单地创建新的批处理作业(例如,每个子样本/小批量的作业)来分发模型训练并将其添加到 Nomad 作业队列并允许集群自动扩展以承担工作,我会很高兴并将其发送回主参数服务器。所以我想我试图避免需要预先了解所有机器、它们的网络身份等。更多的是一种无服务器的方法。

我已经在使用批处理计算作业来进行必要的预处理和一些有限的特征提取,但是分布式训练可以作为作业队列中的作业来构建,并且工人数量会波动吗?

这甚至是一件事吗?还是因为通过 S3 之类的东西交换数据的开销,这是一个坏主意?我目前专注于 TensorFlow,但我们在项目切换框架还不够早。

0 投票
1 回答
181 浏览

python - 梯度计算所需的变量之一已通过就地操作进行了修改:[torch.cuda.FloatTensor [640]] 为版本 4;

我想使用 pytorch DistributedDataParallel 进行对抗训练。损失函数是 trades。代码可以在 DataParallel 模式下运行。但是在 DistributedDataParallel 模式下,我得到了这个错误。当我将loss改成AT时,它可以成功运行。为什么不能在交易亏损的情况下运行?两个损失函数如下:</p>

-- 进程 1 因以下错误而终止:

.

0 投票
0 回答
218 浏览

spacy - 在多个 GPU(不仅仅是一个)上训练 spaCy NER 模型

我正在使用以下代码训练我的 NER 模型。

代码开始:

代码结束。

问题:

问题是每次迭代大约需要 30 分钟——我有 8000 条训练记录,其中包括很长的文本和 6 个标签。

所以我希望使用更多的 GPU 内核来减少它,但似乎只使用了一个内核 - 当我在上面的代码中执行 print(util.gpu) 时,只有第一个内核返回一个非零值。

问题 1:有什么方法可以在训练过程中使用更多的 GPU 内核来提高速度?我会很感激任何线索。

经过更多研究,spacy-ray 似乎旨在实现并行训练。但是我在 nlp.update 中找不到有关使用 Ray 的文档,因为我发现的只是使用“python -m spacy ray train config.cfg --n-workers 2”。

问题 2:Ray 是否支持使用 GPU 进行并行处理,是否仅适用于 CPU 内核?
问题 3:我如何将 Ray 集成到我使用 nlp.update 的 Python 代码中,而不是使用“python -m spacy ray train config.cfg --n-workers 2”。?

谢谢!

环境:

上面的所有代码都在 AWS Sagemaker 上使用 ml.p3.2xlarge EC2 实例的一个 conda_python3 笔记本中。
使用的Python 版本:3
spaCy 使用的版本:3.0.6

0 投票
0 回答
233 浏览

deep-learning - 如何使用 DDP 训练的模型运行 nnU-Net 推理?

我正在尝试让 nnU-Net - 一种深度学习分割方法 ( https://github.com/MIC-DKFZ/nnUNet ) - 在使用训练数据集完成模型训练后运行推理nnUNetTrainerV2_DDP

我在nnUNet_change_trainer_class存储模型的文件夹上运行,我看到文件夹中的checkpoint.modelmodal_bestpkl 文件正在更新,但是在开始对我的测试集进行预测后,我收到以下错误:

AssertionError: model output folder not found. Expected: E:\Pieterjan\nnUNet_project\nnUNet_trained_models\nnUNet\3d_fullres\Task101_Lung\nnUNetTrainerV2__nnUNetPlansv2.1

nnUNetTrainerV2__nnUNetPlansv2.1 似乎是使用仅在一个 GPU 上训练的模型时开始推理时使用的默认设置,但我使用了两个 GPU(因此我使用了_DDP trainernnU-Net 提供的)。我也尝试简单地重命名文件夹,但问题仍然存在。

如何设置 nnU-Net 以nnUNetTrainerV2_DDP__nnUNetPlansv2.1用于对我的测试数据集进行推理?

提前干杯!