快资讯丨多卡训练
时间:2023-06-24 06:24:27来源:博客园

1、前言

近期做到的一些工作涉及到多卡训练,不得不感慨深度学习真的是一个烧钱的活,顺便记录一下,主要记录用法,不涉及实现原理。

2、单机多卡并行

官方DDP文档:


【资料图】

GETTING STARTED WITH DISTRIBUTED DATA PARALLEL

Github 仓库:

Github 中文文档

GETTING STARTED WITH DISTRIBUTED DATA PARALLEL

DataParallel

使用 nn.Dataarallel() 将模型变换一下,一行搞定

model = nn.DataParallel(model)

根据

为方便说明,我们假设模型输入为(32, input_dim),这里的 32 表示batch_size,模型输出为(32, output_dim),使用 4 个GPU训练。nn.DataParallel起到的作用是将这 32 个样本拆成 4 份,发送给 4 个GPU 分别做 forward,然后生成 4 个大小为(8, output_dim)的输出,然后再将这 4 个输出都收集到cuda:0上并合并成(32, output_dim)。可以看出,nn.DataParallel没有改变模型的输入输出,因此其他部分的代码不需要做任何更改,非常方便。但弊端是,后续的loss计算只会在cuda:0上进行,没法并行,因此会导致负载不均衡的问题。

针对负载不均衡问题,一个缓解的方法是将 loss 放入模型内部计算,即在 forward 的时候计算 loss。

DistributedDatarallel

分布式数据并行方法,通过多进程实现。

1、从一开始就会启动多个进程(进程数等于GPU数),每个进程独享一个GPU,每个进程都会独立地执行代码。这意味着每个进程都独立地初始化模型、训练,当然,在每次迭代过程中会通过进程间通信共享梯度,整合梯度,然后独立地更新参数。2、每个进程都会初始化一份训练数据集,通过DistributedSampler函数实现,即同样的模型喂进去不同的数据做训练,也就是所谓的数据并行。3、进程通过local_rank变量来标识自己,local_rank为0的为master,其他是slave。这个变量是torch.distributed包帮我们创建的,使用方法如下:

import argparse  parser = argparse.ArgumentParser()parser.add_argument("--local_rank", type=int, default=-1)args = parser.parse_args()

运行代码

python -m torch.distributed.launch --nproc_per_node=4 --nnodes=1 train.py

其中,nnodes 表示节点数量,单机,即为1,nproc_per_node 为每个节点的进程数量,与 GPU 数量一致。

模型保存与加载TODO

3、遇到的问题

1、DistributedDataarallel 方法,有时候会出现进程卡死的问题,现象上即为显卡的利用率卡在 100%,未启动进程组,根据tjds排查是IO 虚拟化(也称为 VT-d 或 IOMMU)启用了ACS导致,具体原因参考 故障排除——NCCL2.16.2 文档。

方法一:排查原因是BIOS里IO虚拟化(VT-d)默认启动了PCI访问控制服务(ACS)导致GPU间无法直接通过P2P方式通信,需在BIOS关闭此功能,具体操作参考 tjds

1、 查看ACS是否开启执行 lspci -vvv | grep -I acsctl 如果有显示SrcValid+说明已启用ACS功能2、 添加iommu=pt参数到grub(此步骤应该可以跳过)编辑/etc/default/grub文件添加iommu=pt,再执行update-grub更新grub文件3、 关闭BIOS里ACS功能重启操作系统开机时按 del 进入 BIOS 关闭 ACS 功能,不关 VT-d 只关闭 ACS 功能,具体路径:Path: Advanced -> Chipset Configuration -> North Bridge -> IIO Configuration -> Intel VT for Directed I/O (VT-d) -> ACS Control -> Enable / Disable.4、 检查ACS是否关闭执行lspci -vvv | grep -I acsctl 如果全显示SrcValid-说明已关闭ACS功能

方法二:仍然使用 ‘nccl‘ 后端,禁用 GPU 的 P2P 通信。

torch.distributed.init_process_group(backend="ncll")
NCCL_P2P_DISABLE=1 CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 train.py 

嫌麻烦可以写入 bashrc 环境变量。

方法三:更换后端为 ‘gloo’ , shell命令运行程序,纵享丝滑。

torch.distributed.init_process_group(backend="gloo")
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 train.py 

缺点就是 gloo 的通信在我用的时候要比 nccl 慢很多。

2、如果训练过程中使用了 Sampler 进行数据分发, dataloader 的 shuffle 不能设置为 True。

3、dataloader 设置 batch_size 时,注意尽量保证每次循环每张卡至少可以分到一个 sample,不然有时候会因某张卡等待输入卡死。

4、我在训练时,dataloader的 num_works 通过 CPU 帮助 GPU 加载数据能够提升 GPU 利用率,倒是没遇到报错。

5、dataloader 的 pin_memory (锁页内存) 按道理是可以锁住一部分内存,减少 CPU 内存拷贝的,但是我用的时候会极大降低 GPU 利用率,此处存疑。

待更新ing

标签:

  • 上一篇文章: 6.22期指(二)|天天热闻
  • 下一篇文章: 最后一页
  • 生活指南
  • 城市基础设施配套费需要交契税吗_城市基础设施|当前快播

    1、城市基础设施是什么意思?城市基础设施(urbaninfrastructure)是城

  • 普洱茶生茶和熟茶的区别在哪里(普洱茶生茶和熟茶的区别)

    来为大家解答以下的问题,洱茶生茶和熟茶的区别在哪里,普洱茶生茶和熟

  • 每日简讯:21健讯Daily|药监局通报3家企业飞检问题;吉利德BCMA CAR-T 2期临床试验被叫停

    这里是《21健讯Daily》,欢迎与21世纪经济报道新健康团队共同关注医药

  • 爱回收:去年全平台二手交易量3200万台,碳排放强度下降18.9%

    App6月22日消息,万物新生(爱回收)集团发布“ESG报告”,2022年内,

  • 欧洲E级超算将落户法国|速看

    科技日报驻法记者李宏策综合法国媒体报道,最新一代的欧洲超级计算机即

  • 环球微头条丨excel2010工具栏怎么还原_excel工具栏怎么还原

    1、1 点『始』菜单栏鼠标移菜单隐藏2 菜单点击菜单栏右角钉图标固定。

  • hcg画师和galg声优没有区别 天天观焦点

    想和galgame声优对谈,和我同样是不能随便露脸的职业,完全是,同一个

  • 100克猪瘦肉含多少蛋白质?

    1100克猪瘦肉含有大约20克的蛋白质。2蛋白质是构成生物体的重要成分之

  • 陕西:十年来毒品犯罪案件总体数量降幅达87.79%

    新华社西安6月22日电(记者姚友明)记者22日从陕西省公安厅获悉,通过

  • 扫描图片转换成word_图片转换成word在线转换免费

    1、你的意思是要把图片上的文字转换成word文字吧,你可以通过使用doPDF

  • 证监会:持续推进审核注册工作制度化、规范化和透明化,强化债券全链条监管和风险防范-世界球精选

    App6月21日消息,证监会发布《关于深化债券注册制改革的指导意见》《关

  • 焦点资讯:40岁老婆万圣节服装DIY,送给TA最特别的情人节礼物!

    你需要的东西白色套装黑色胶带白色纸盘或其他圆形片细绳黑色记号笔

  • 男子在绿化带迷路3天,靠吃野花、喝露水求生 报道

    近日,杭州萧山一市民赵先生带着一面锦旗来到宁围派出所,感谢派出所警

  • 世界微速讯:全球微资讯!焦点速看:存款利率降了,对我们有哪些影响?|观点-速读

    01多家银行陆续下调人民币存款利率(相关资料图)最近,不少银行纷纷调整

  • 深圳市光明区积极推进九大领域儿童友好建设_全球视点

    6月20日上午,无锡市政府副秘书长、市政府妇儿工委副主任殷毅带队到光

  • 常熟银行(601128.SH):尹宪柱辞去副行长、财务总监职务 焦点要闻

    格隆汇6月21日丨常熟银行(601128 SH)公布,近日,本行董事会收到尹宪柱

  • 民生
    • 全领域低碳布局,特斯拉“不仅仅是一家汽车企业”-当前要闻

    • 完美无缺?12星座致命缺点:白羊一根筋,处女太依赖别人,你呢?|全球今亮点

    • 海拔升高100米温度下降多少度正常_海拔每升高100米温度下降多少_全球观速讯

    • 和珅贪走清朝15年的财政,盗贼进入和珅府里,为什么却空手而归?|全球速读