min-max-gpt:可扩展的minGPT
你已经了解了minGPT。现在是时候进行扩展了。
这个代码库提供了...
- muP初始化和学习率设置,以及可调整的gpt代码。
- 混合精度训练,带有deepspeed zero-3的FSDP。
- 零依赖Hugging Face:如果你对不依赖Hugging Face进行训练感兴趣,这就是你要的。它不使用accelerate、transformer等,所以你可以拥有最大的控制权。(仍然使用
default_data_collator
和get_scheduler
,但很容易去除) - 优秀的Deepspeed代码库。
使用方法
- 安装:
git clone https://github.com/cloneofsimo/min-max-gpt
cd min-max-gpt
pip install -r requirements.txt
- 单节点训练:
ROOT_DIR=/path/to/dir/min-max-gpt
cd $ROOT_DIR
export WORLD_SIZE=$(nvidia-smi -L | wc -l)
deepspeed --num_gpus $WORLD_SIZE run_trainer.py --learning_rate 1e-4 --head_width 32 --run_name "test"
- 多节点训练:
你需要创建主机文件并指定环境变量。 节点之间必须能够通过无密码SSH相互访问。
$ cat /path/to/dir/min-max-gpt/hostfile
xxx.xxx.xxx.xxx slots=8 #节点0 IP,#GPU数量
xxx.xxx.xxx.xxx slots=8 #节点1 IP,#GPU数量
ROOT_DIR=/path/to/dir/min-max-gpt
cd $ROOT_DIR
export HOST_FILE_PATH=$ROOT_DIR/hostfile
export NGPU_PER_NODE=?? # 例如 8
export NUM_NODES=?? # 例如 2
export SINGLE_RUN=True
./run_multi_node.sh $HOST_FILE_PATH $NGPU_PER_NODE $NUM_NODES $SINGLE_RUN
当前测试状态:
- 在8个80GB A100 GPU上测试通过,可以训练20B参数的模型。
待办事项:
- 多节点训练
- mu-scaling图表
- 在llama上测试