打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
Cambricon PyTorch中级课程已更新,以下为简介及课后练习答案:
一、《Cambricon PyTorch 的多卡分布式训练(DDP)》
课程简介: 讲解分布式训练基础知识,介绍 PyTorch DDP,并结合实例介绍 Cambricon PyTorch 基于 DDP 的分布式训练运行流程
链接:PyTorch 系列 – 寒武纪开发者社区 (cambricon.com)
课后习题:
Q1、常见的分布式训练模式有哪几种?PyTorch DDP 属于哪一种?
Q2、简述 PyTorch DDP 各个接口调用流程。
Q3、简述 CambriconPyTorch适配 DDP 的主要实现过程。
答案:
A1、数据并行,模型并行;DDP 属于数据并行
A2、生成多个进程;每个进程调用 init_process_group;使用 DistributedSampler初始化
数据集;使用 DistributedDataParallel加载分布式训练需要的模型;开始训练
A3、在 torch_mlu中基于 PyTorch原生的 ProcessGroup类派生 ProcessGroupCNCL类,用于封装 CNCL 库,之后通过注册的方式将 ProcessGroupCNCL加入 PyTorch框架,从而使 CNCL 也作为 DDP 的一种通信后端。
二、《Cambricon PyTorch 混合精度训练》
简介:讲解分布式训练基础知识,介绍 PyTorch DDP,并结合实例介绍 Cambricon PyTorch 基于 DDP 的分布式训练运行流程
链接:PyTorch 系列 – 寒武纪开发者社区 (cambricon.com)
课后习题
Q1、GradScaler接口内部实现过程是什么?
Q2、分别说明 Loss 缩放,中间结果 FP32 表示的具体含义
答案
A1、主要过程是将 Loss 乘上 scale 值,然后进行反向传播,每次反向传播后,需要对梯度进行检查,判断是否出现溢出,如果出现,则不进行梯度更新,并缩小scale值大小;如果连续N次正常梯度更新,则扩大scale值。
A2、Loss 缩放:给前向计算的 Loss 乘以一个系数 S,使得反向计算的梯度能够在 FP16 的表示范围内;中间结果 FP32 表示:将向量点乘、规约计算、对位计算中的 FP16 类型变成 FP32 类型去计算,中间结果使用 FP32 表示,最终输出再转成 FP16类型。
热门帖子
精华帖子