×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

【开发者学院】中级课程—PyTorch框架使用(2小节)(本文附课后小练习答案) 三叶虫2023-02-23 16:24:46 回复 查看 社区交流 干货资源
【开发者学院】中级课程—PyTorch框架使用(2小节)(本文附课后小练习答案)
分享到:

image.png

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)

课后习题

Q1GradScaler接口内部实现过程是什么?

Q2分别说明 Loss 缩放,中间结果 FP32 表示的具体含义

答案

A1主要过程是将 Loss 乘上 scale 值,然后进行反向传播,每次反向传播后,需要对梯度进行检查,判断是否出现溢出,如果出现,则不进行梯度更新,并缩小scale值大小;如果连续N次正常梯度更新,则扩大scale值。

A2Loss 缩放:给前向计算的 Loss 乘以一个系数 S,使得反向计算的梯度能够在 FP16 的表示范围内;中间结果 FP32 表示:将向量点乘、规约计算、对位计算中的 FP16 类型变成 FP32 类型去计算,中间结果使用 FP32 表示,最终输出再转成 FP16类型。


版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭