单机多卡微调
备注
阅读本篇前,请确保已按照 安装教程 准备好昇腾环境及 LLaMA-Factory !
本篇为 快速开始 的进阶,同样首先安装 DeepSpeed 和 ModelScope:
pip install -e ".[deepspeed,modelscope]" -i https://pypi.tuna.tsinghua.edu.cn/simple
多卡 NPU 指定
使用 export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3
指定所需 NPU 卡号,此处为 0~3 四卡 NPU。
备注
昇腾 NPU 卡从 0 开始编号,docker 容器内也是如此;
如映射物理机上的 6,7 号 NPU 卡到容器内使用,其对应的卡号分别为 0,1
或使用以下脚本自动检测并指定多卡 NPU:
# ------------------------------ detect npu --------------------------------------
# detect npu via npu-smi
if command -v npu-smi info &> /dev/null; then
num_npus=$(npu-smi info -l | grep "Total Count" | awk -F ":" '{print $NF}')
npu_list=$(seq -s, 0 $((num_npus-1)))
else
num_npus=-1
npu_list="-1"
fi
echo using npu : $npu_list
num_gpus=$(echo $npu_list | awk -F "," '{print NF}')
# --------------------------------------------------------------------------------
export ASCEND_RT_VISIBLE_DEVICES=$npu_list
基于 LoRA 的模型多卡分布式微调
通过 ASCEND_RT_VISIBLE_DEVICES
变量指定多卡后,使用 torchrun 启动分布式训练,需指定 nproc_per_node
参数为 NPU 卡数量,其余参数配置与 快速开始 中单卡微调保持一致
torchrun --nproc_per_node $num_npus \
--nnodes 1 \
--node_rank 0 \
--master_addr 127.0.0.1 \
--master_port 7007 \
src/train.py <your_path>/qwen1_5_lora_sft_ds.yaml