Mission 1
TODO 1 / TODO 2
ZeRO:把优化器状态切给不同 GPU
先补的知识
- Adam 等优化器会为参数保存额外状态。
- 每张卡都保存完整状态会浪费显存。
- ZeRO 把参数或优化器状态按 shard 分给多张卡。
图解原理
多人共同保管一本大账本,每个人只负责自己的几页,需要时再同步完整结果。
GPU0: 参数 0-3GPU1: 参数 4-7GPU2: 参数 8-11
语法热身:用参数列表划分负责范围
params = list(model.parameters())
half_idx = len(params) // 2
gpu_partitions = {
0: params[:half_idx],
1: params[half_idx:],
}闯关题
ZeRO 分片的直接目的是什么?
回到 notebook 的作业
这里不直接写答案。你已经拿到足够输入,最后用 notebook 的 TODO 做举一反三。