1. deepspeed - 预备知识

deepspeed 底层依赖 torch.distributioncuda 等等, 要想更好的理解 deepspeed,需要先弄懂一些预备知识。 由于时间和精力的问题,暂时无法全部讲清楚,我会慢慢补全。 读者可以先参考其他资料。

1.1. torch.distribute

rank 进程号 多进程上下文中,一般假定 rank = 0 为主进程或第一个进程 node 物理节点,表明一个容器或一台机器 节点内部能够包括多个 GPU local_rank 一个 node 中,进程的相对序号 local_rank 在 node 之间独立 world_size 大局进程数 一个分布式使命中 rank 的数量 group 进程组 一个分布式使命就对应一个进程组 只有当用户创立多个进程组时,才会用到

1.2. 自动混合精度AMP

Amp (Automatic Mixed Precision) 自动混合精度

Apex 从英伟达网页 Apex (A PyTorch Extension) — Apex 0.1.0 documentation可以得到apex的全称——A PyTorch Extension(Apex)

torch 原生支持的amp 最简单了,只需要安装有pytorch就能使用,而且代码也简单。限制条件只有一个就是pytorch的版本一定>1.6。 主要是 利用了这两个API——torch.cuda.amp.GradScalar 和 torch.cuda.amp.autocast。

1.3. cuda Stream and Event

https://pytorch.org/docs/stable/generated/torch.cuda.Event.html

https://www.cnblogs.com/1024incn/p/5891051.html

1.4. pin_memory