分布式训练分为这几类:
按照并行方式来分:模型并行 vs 数据并行
按照更新方式来分:同步更新 vs 异步更新
按照算法来分:Parameter Server算法 vs AllReduce算法文章来源:https://www.toymoban.com/news/detail-522698.html
torch.nn.DataParallel
torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0):
这个函数主要有三个参数:文章来源地址https://www.toymoban.com/news/detail-522698.html
- module:即模型,此处注意,虽然输入数据被均分到不同gpu上,但每个gpu上都要拷贝一份模型。
- device_ids:即参与训练的gpu列表,例如三块卡, device_ids = [0,1,2]。
- output_device:指定输出gpu,一般省略。在省略的情况下,默认为第一块卡,即索引为0的卡。此处有一个问题,输入计算是被几块卡均分的,但输出loss的计算是由这一张卡独自承担的,这就造成这张卡所承受的计算量要大于其他参与训练的卡。
到了这里,关于pytorch 分布式训练的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!