如何进行数据或模型并行训练?

问题描述 投票:0回答:1

我看到了一些使用 PyTorch 进行数据和模型并行训练的示例。 TorchSharp 似乎不支持开箱即用,如果我错了,请纠正我。即使不支持开箱即用,您是否有示例如何在 GPU 之间显式进行数据传输?我的意思是数据并行性归结为在 N 个 GPU 上使用相同的模型副本进行训练。训练中有一个步骤我们需要组合所有模型的梯度,对吧?我不太明白如何以及何时这样做。包含应调用 API 的示例的分步操作列表将会有所帮助。我的模型大小约为 400K 个参数,并且有大约 1.5x10^9 个训练样本。在我的系统上完成一轮所有样本的传输大约需要 5 天,但我有 2 个 GPU 和 1 个强大的 CPU,所以我想尝试使用所有资源,希望将训练时间减少至少两倍.

更新

让我重新表述一下这个问题。我希望它能让事情变得更清楚。我使用 TorchSharp,它和 PyTorch 一样都是 C/C++ libtorch 之上的包装器。在 TorchSharp 中,我没有准备好使用的库来进行任何类型的并行训练。因此,我需要了解如何使用 libtorch/PyTorch/TorchSharp 的基本功能来做到这一点。基本上,我可以用与 PyTorch 类似的方式完成所有张量运算。

现在,如果我将模型加载到 GPU0 和 GPU1 中,然后在 GPU0 上运行一批,在 GPU1 上运行另一批。之后如何仅使用 libtorch/PyTorch/TorchSharp 的基本功能来同步 GPU0 和 GPU1 中的梯度?任何语言的任何示例都可以。如果有人知道如何在 PyTorch 中做到这一点,请分享您的知识。

.net deep-learning pytorch multi-gpu
1个回答
0
投票

如果我正确理解您的问题,您是在问如何在 GPU 上训练模型以减少模型训练时间。为此,您需要配置 GPU,确保它们不忙于训练模型。当您开始训练模型时,您的 GPU 目前不忙非常重要。

© www.soinside.com 2019 - 2024. All rights reserved.