Ascend-SACT/Qwen2.5-14B-pretrain
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

运行环境

官网资料

安装指导:

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

MindSpeed

下载MindSpeed加速库

git clone https://gitcode.com/ascend/MindSpeed.git

安装

cd MindSpeed

git checkout 2.2.0_core_r0.12.1

pip install -r requirements.txt

pip3 install -e .

cd ..

无网pip install

对于不能直接访问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

MindSpeed-LLM及Megatron-LM

准备MindSpeed-LLM及Megatron-LM源码

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  # 安装其余依赖库

Transformers版本选择

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。

无网pip install

对于不能直接访问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-hfhuggingface模型类别,默认为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.sh

语料处理

下载tatsu-lab/alpaca

hf download tatsu-lab/alpaca --repo-type=dataset

修改和执行转换脚本

在MindSpeed-LLM文件夹下,运行以下命令

vim ./examples/mcore/qwen25/data_convert_qwen25_pretrain-alpaca.sh
  • ​input​: 原始数据集路径
  • ​tokenizer-name-or-path​: 模型的 tokenizer 路径
  • ​output-prefix​: 微调结果的输出路径前缀

可参考如下修改后的脚本:

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`

该脚本需要修改的参数如下:

  • MASTER_ADDR:单机使用localhost,多机时为第一台设备IP
  • NNODES:本次训练的设备数量
  • NODE_RANK:每台设备的需要。可通过脚本-n 参数传入
  • CKPT_LOAD_DIR:ckpt加载目录
  • CKPT_SAVE_DIR:ckpt保存目录
  • DATA_PATH:数据集文件名前缀。以“_text_document”结尾
  • TOKENIZER_PATH:模型tokenizer所在路径
  • TP、PP:需要和权重转换时保持一致。
  • CP:根据需要设置,当为“megatron_cp_algo”时,不可同时设置--reset-position-ids
  • MBS: Micro Batch Size
  • GBS: Global Batch Size = MBS × TP × PP × NNODES

可参考如下修改后的脚本:

在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