ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Zero原理

2021-11-10 12:32:53  阅读:231  来源: 互联网

标签:partition Zero 内存 GPU 原理 model CPU swap


DeepSpeed: Extreme-scale model training for everyone - Microsoft Research

Why model-parallelism is most communication cost?

模型参数在CPU上有一份(只保留自己这个GPU的partition即可);update的时候直接把offload到CPU上的gradients以及常驻CPU内存的optimizer-states, 更新到同样在CPU内存里的模型参数,然后把模型参数swap到GPU上,最后要调GPU的allgather来让所有GPU上的weight-partition都gather到所有GPU上;

Forward&Backward, gradient offload(GPU->CPU), update model, swap(CPU->GPU), 这几个环节之间可以pipeline/overlapped执行!

  • Gradients: Backward的时候,每算出来一部分(partition),就reduce到某一个GPU里去;该GPU再offload到CPU内存里去;update model时直接在CPU内存里计算;
  • Optimizer states: 每个进程存自己的partition; 常驻CPU内存;update model时既做输入,也做输出;
  • Model wegiths: 整个模型常驻GPU显存(我认为,可以每次swap进来几层即可(ZeRO-Infinity?));每个进程把自己那份partition常驻在CPU内存;

GPU上的是FP16的model、activation、gradient;

CPU上的是FP32的model、gradient、optimizer-states;

CPUßàGPU的数据传输,全部是FP16的,省带宽速度快!

Activation checkpoint: Backward时需要用到的activation,可以checkpoint到CPU内存保存一会儿,Backward用的时候再swap到GPU显存;

以上Zero Offload就是Zero-3

分层来取,是Zero Infinity

标签:partition,Zero,内存,GPU,原理,model,CPU,swap
来源: https://blog.csdn.net/smartcat2010/article/details/121245666

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有