本人写代码的习惯就是一定是要从别人优秀的代码中调试学习的,直接运行+看的话,可能知道了大概的逻辑但是缺无法知道细节的话(参数的含义或者某某数据格式类型),可能对整体代码逻辑的把控不是狠好,所以还是从调试中学习,这也是我所推崇的。

初衷

学习大模型LLM,OOM问题大家可能都遇见过,那么deepspeed便是绕不过的弯,但是deep是如何实现zero123的,参数权重、梯度、优化器状态是怎么保存的,需要通过源码和具体代码的调试才能掌握,那么我便想找一个简单的deepspeed demo来学习下具体的原理。
所选取的代码时 https://github.com/bobo0810/LearnDeepSpeed

一般的deepspeed脚本

CUDA_VISIBLE_DEVICES=4,6,7 deepspeed cifar10_deepspeed.py --deepspeed --deepspeed_config ds_config.json

使用deepspeed执行

Pycharm配置

在这里插入图片描述
总体大概这样,下面我将分为几个部分分别讲下:

Module name

在这里插入图片描述
一般我们都是选择Script path的,现在选择Module name,再去选择
deepspeed.launcher.runner
注意:deepspeed.launcher.runner 是通过下拉栏的方式选择的,而不是直接输入
parameter:
在这里插入图片描述
相较于正常脚本前面添加:

--include localhost:0
--master_port 5600
--hostfile hostfile_single

再谢要执行的py程序,后面加上python程序的参数。

Enviroment variables

主要设置CUDA_VISIBLE_DEVICES,含义:此时能看见的GPU编号,PATH的作用主要指向ninja的位置,可用通过找到,没有的话,先pip下载一个

which ninja

例子:

PYTHONUNBUFFERED=1;CUDA_VISIBLE_DEVICES=4,6,7;PATH=/root/anaconda3/envs/fs-llm/bin/

Working directory

写正常本机的项目地址就行
在这里插入图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部