Pycharm远程调试deepspeed!可用!
本人写代码的习惯就是一定是要从别人优秀的代码中调试学习的,直接运行+看的话,可能知道了大概的逻辑但是缺无法知道细节的话(参数的含义或者某某数据格式类型),可能对整体代码逻辑的把控不是狠好,所以还是从调试中学习,这也是我所推崇的。
初衷
学习大模型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
写正常本机的项目地址就行