安装指导:
https://gitcode.com/Ascend/MindSpeed-LLM/blob/2.2.0/docs/pytorch/install_guide.md
快速入门:
https://gitcode.com/Ascend/MindSpeed-LLM/blob/2.2.0/docs/quick_start.md
git clone https://gitcode.com/ascend/MindSpeed.gitcd MindSpeed
git checkout 2.2.0_core_r0.12.1
pip install -r requirements.txt
pip3 install -e .
cd ..对于不能直接访问internet的服务器,可通过共享磁盘的方式安装。
有网环境下:pip download --no-deps -r ../git/MindSpeed/requirements.txt -d offline_packages_mindspeed
无网环境下:pip install --no-index --find-links=../../pip/offline_packages_mindspeed/ -r requirements.txt
git clone https://gitcode.com/ascend/MindSpeed-LLM.git
git clone https://github.com/NVIDIA/Megatron-LM.git # megatron从github下载,请确保网络能访问cd Megatron-LM
git checkout core_v0.12.1
cp -r megatron ../MindSpeed-LLM/
cd ../MindSpeed-LLM
git checkout 2.2.0
mkdir logs
pip install -r requirements.txt # 安装其余依赖库1.qwen3,llama3.3系列模型依赖transformers 4.51.0, 需要在环境配置完成后手动执行pip install transformers==4.51.0; 2.glm4.5-moe系列模型依赖transformers 4.54.0, 需要在环境配置完成后手动执行pip install transformers==4.54.0。
对于不能直接访问internet的服务器,可通过共享磁盘的方式安装。
有网环境下:pip download --no-deps -r ../git/MindSpeed-LLM/requirements.txt -d offline_packages_mindspeed-llm
无网环境下:pip install --no-index --find-links=../../pip/offline_packages_mindspeed-llm/ -r requirements.txt
pip install modelscope
modelscope download --model Qwen/Qwen2.5-14B --local_dir ./Qwen2.5-14B使用昇腾MindSpeed训练/微调,要求模型权重采用Megatron格式。当原始权重为HuggingFace格式时,需要转换为Megatron-Mcore格式。
在MindSpeed-LLM文件夹下,运行以下命令
vim ./examples/mcore/qwen25/ckpt_convert_qwen25_hf2mcore_InnoSpark.sh脚本中含有以下的参数
| 参数 | 说明 | 必填 |
|---|---|---|
--model-type GPT | 指定模型类型为GPT系列 | ✅ |
--use-mcore-models | 转换为Megatron-Mcore格式 | ✅ |
--target-tensor-parallel-size | 张量并行度设置 | ✅ |
--target-pipeline-parallel-size | 流水线并行度设置 | ✅ |
--tokenizer-model | 指定分词器路径 | ✅ |
--load-model-type | 加载权重的类别(可以是hf、mg) | ✅ |
--save-model-type | 存储权重的类别(可以是hf、mg) | ✅ |
--load-dir | 权重文件加载路径 | ✅ |
--save-dir | 权重文件保存路径 | ✅ |
--model-type-hf | huggingface模型类别,默认为llama2 | |
--params-dtype | 指定权重转换后的权重精度模式,默认为fp16,如果源文件格式为bf16,则需要设置为bf16 | ✅ |
请根据实际情况修改脚本中的模型路径及 TP、PP 参数:
model_hf_path:原始权重路径model_mg_path:转换后权重路径TP、PP:需与训练脚本保持一致可参考如下修改后的脚本:
# 修改 ascend-toolkit 路径
source /usr/local/Ascend/ascend-toolkit/set_env.sh
export CUDA_DEVICE_MAX_CONNECTIONS=1
model_root_path="xxx" # 这里填根路径,需要修改
model_hf_path="${model_root_path}/Qwen2.5-14B"
model_mg_path="${model_root_path}/Qwen2.5-14B-mg"
TP=8
PP=2
#set -x
# --num-layer-list 11,13,19,21 参数根据需要添加
# 设置需要的权重转换参数
python convert_ckpt.py \
--use-mcore-models \
--model-type GPT \
--load-model-type hf \
--save-model-type mg \
--target-tensor-parallel-size ${TP} \
--target-pipeline-parallel-size ${PP} \
--add-qkv-bias \
--load-dir ${model_hf_path}/ \
--save-dir ${model_mg_path}/ \
--tokenizer-model ${model_hf_path}/tokenizer.json \
--model-type-hf llama2 \
--params-dtype bf16修改好后,在MindSpeed-LLM文件夹下,运行以下命令
bash ./examples/mcore/qwen25/ckpt_convert_qwen25_hf2mcore_InnoSpark.shhf download tatsu-lab/alpaca --repo-type=dataset在MindSpeed-LLM文件夹下,运行以下命令
vim ./examples/mcore/qwen25/data_convert_qwen25_pretrain-alpaca.sh可参考如下修改后的脚本:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
dataset_root_path="xxx/dataset"#xxx是根路径,需要修改
dataset_path="${dataset_root_path}/tatsu-lab-alpaca"
dataset_name="${dataset_path}/train-00000-of-00001-a09b74b3ef9c3b56.parquet"
dataset_output_prefix="${dataset_path}/alpaca-qwen2.5-14B"
model_root_path="xxx"#xxx是根路径,需要修改
model_hf_path="${model_root_path}/Qwen2.5-14B"
set -x
python ./preprocess_data.py \
--input ${dataset_name} \
--tokenizer-name-or-path ${model_hf_path}/ \
--output-prefix ${dataset_output_prefix} \
--tokenizer-type PretrainedFromHF \
--workers 4 \
--log-interval 1000
在MindSpeed-LLM文件夹下,运行以下命令
bash ./examples/mcore/qwen25/data_convert_qwen25_pretrain-alpaca.sh在MindSpeed-LLM文件夹下,运行以下命令
`vim ./examples/mcore/qwen25/pretrain_qwen25_14b_32k_ptd_InnoSpark.sh`该脚本需要修改的参数如下:
可参考如下修改后的脚本:
在MindSpeed-LLM文件夹下,运行以下命令
#!/bin/bash
export CUDA_DEVICE_MAX_CONNECTIONS=1
export HCCL_CONNECT_TIMEOUT=1800
export HCCL_INTRA_ROCE_ENABLE=1
# Change for multinode config
NPUS_PER_NODE=16
MASTER_ADDR=localhost
MASTER_PORT=6000
NNODES=1
NODE_RANK=0
WORLD_SIZE=$(($NPUS_PER_NODE*$NNODES))
echo "Script executed with NODE_RANK set to: $NODE_RANK"
dataset_root_path="xxx" #xxx是根路径,需要修改
dataset_path="${dataset_root_path}/tatsu-lab-alpaca"
dataset_prefix="${dataset_path}/alpaca-qwen2.5-14B"
#dataset_path="${dataset_root_path}/InnoSpark_data/pretrain"
#dataset_prefix="${dataset_path}/Siyouyuliao_QA_0_combine-qwen2-14b"
model_root_path="xxx" #xxx是根路径,需要修改
model_hf_path="${model_root_path}/Qwen2.5-14B"
model_mg_path="${model_root_path}/Qwen2.5-14B-mg"
CKPT_LOAD_DIR="${model_mg_path}/"
CKPT_SAVE_DIR="${model_mg_path}/"
DATA_PATH="${dataset_prefix}_text_document"
TOKENIZER_PATH="${model_hf_path}/"
TP=8
PP=2
MBS=1
GBS=16
SEQ_LEN=32768
TRAIN_ITERS=13
在MindSpeed-LLM文件夹下,运行以下命令
bash ./examples/mcore/qwen25/pretrain_qwen25_14b_32k_ptd_InnoSpark.sh当完成预训练或微调后,可将Megatron-Mcore格式的权重,再转换为HuggingFace格式。
在MindSpeed-LLM文件夹下,运行以下命令
vim ./examples/mcore/qwen25/ckpt_convert_qwen25_mcore2hf_InnoSpark.sh可参考如下修改后的脚本:
model_root_path="xxx" # xxx是模型的根路径
model_hf_path="${model_root_path}/Qwen2.5-14B"
model_mg_path="${model_root_path}/Qwen2.5-14B-mg"
# 设置并行策略
python convert_ckpt.py \
--use-mcore-models \
--model-type GPT \
--model-type-hf llama2 \
--load-model-type mg \
--save-model-type hf \
--target-tensor-parallel-size 1 \
--target-pipeline-parallel-size 1 \
--add-qkv-bias \
--load-dir ${model_mg_path}/ \
--save-dir ${model_hf_path}/ # 需要填入原始HF模型路径,新权重会存于./model_from_hf/qwen2.5_7b_hf/mg2hg/在MindSpeed-LLM文件夹下,运行以下命令
bash ./examples/mcore/qwen25/ckpt_convert_qwen25_mcore2hf_InnoSpark.sh