1、环境版本冲突
可以先选择requirements.txt是否与自己环境冲突再决定安装哪些
2、NotImplementedError:Using RTX 3090 or 4000 series dosen’t support faster communication via P2P or IB。
4090不支持P2P/IB通信方式
添加环境变量尝试解决:
export NCCL_IB_DISABLE=1; export NCCL_P2P_DISABLE=1。
3、OOM显存爆炸、deepspeed配置
我们采用adam+16bit
关于计算算模型所需显存的文章很多。
model参数+优化器+梯度+中间计算变量即4份model参数,我们需要112g的显存
我们的8*4090 8*24G=192G显然是远远足够的。
实际工作中:
配置zero-2,不起作用
配置zero-3,不起作用
调小batchsize=8,调小batchsize=4,调小batchsize=1,都不起作用
调小序列长度=1024,调小序列长度=256,不起作用
不得尝试速度最慢的ZeRO-Offload,即在zero3的基础上启用cpu计算,
在"zero_optimization"配置中添加
"offload_optimizer": { "device": "cpu", "pin_memory": true }, "offload_param": { "device": "cpu", "pin_memory": true },
终于成功跑起来了
最后序列长度恢复为512,batchsize恢复为16,梯度累计为16,成功跑起来。每张卡可以占满,内存占用520G。