1. 环境配置

进入昇腾社区镜像仓库下载下图所示镜像(选择ubuntu版本,openeuler版本会报错)

昇腾镜像仓库详情

创建容器(修改容器名称与镜像ID)

docker run -it -d --net=host --shm-size=1g \     --privileged \     --name 容器名称 \     --device=/dev/davinci_manager \     --device=/dev/hisi_hdc \     --device=/dev/devmm_svm \     -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \     -v /usr/local/sbin:/usr/local/sbin:ro \
    -v /path-to-weights:/path-to-weights:ro \
    -v /home:/home \
    镜像ID

进入容器(修改容器名称)

docker exec -it 容器名称 bash

1.1 创建python环境

创建一个python3.10版本的环境

conda create -n test python=3.10
conda activate test

conda create -n test python=3.10 conda activate test

如果在docker镜像中没有conda,可以输入如下指令确定当前服务器架构

uname -m

如果服务器是arm架构,则可以输入如下指令安装Miniconda

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh

如果在docker镜像中没有wget,输入如下指令进行安装

yum update
yum install -y wget
重新进行安装

如果出现上图所示情况,并且依然无法使用conda,按照如下操作将conda添加到环境变量

echo 'eval "$(/root/miniconda3/bin/conda shell.bash hook)"' >> ~/.bashrc
source ~/.bashrc
再创建python环境即可
conda create -n test python=3.10
conda activate test

1.2 安装Torch、Torch_npu及Apex

安装Torch2.5.1版本

git clone https://oauth2:A_HhBt9-qWdhdTFy66k9@www.modelscope.cn/DanteQ/torch2.5.1.git
cd torch2.5.1
pip install torch-2.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

如果无法使用git命令是因为容器内没有安装git,解决方法是在容器中安装git

yum install -y git

安装Torch_npu依赖

pip install pyyaml
pip install setuptools

安装Torch_npu

pip install torch-npu==2.5.1rc1

Torch与Torch_npu也可在如下链接中下载安装(选择合适的版本)

快速安装-配置与安装-Ascend Extension for PyTorch6.0.RC3开发文档-昇腾社区

获取昇腾适配的Apex-patch源码

git clone -b master https://gitee.com/ascend/apex.git
cd apex/

编译apex的二进制包(请确保torch已安装,setuptools版本小于等于65.7.0)

bash scripts/build.sh --python=3.10

过程中会自动拉取apex官方源码,请保证网络畅通。如果系统提示:

编译apex的二进制包

bash scripts/build.sh --python=3.10

如果编译失败如上图所示,安装patch即可

yum install -y patch

如果编译失败如上图所示,安装g++即可

yum install -y g++

安装apex

cd apex/dist/
pip install --upgrade apex-0.1+ascend-{version}.whl # version为python版本和cpu架构

#例如Python 3.10 和 ARM 架构
pip install --upgrade apex-0.1+ascend-cp310-cp310-linux_aarch64.whl

1.3 安装vllm

如果服务器可以连接github,使用如下指令下载安装

git clone -b v0.7.3 https://github.com/vllm-project/vllm.git
cd vllm
pip install -r requirements-build.txt
VLLM_TARGET_DEVICE=empty pip install .

如果服务器无法连接github,可以使用笔者转存在modelscope的链接下载并解压

git clone https://oauth2:A_HhBt9-qWdhdTFy66k9@www.modelscope.cn/DanteQ/vllm.git 
cd vllm
unzip vllm-main.zip

如果无法使用unzip命令,安装即可

yum install unzip

打开依赖包安装文件,将torch版本修改成2.5.1,然后安装依赖包

cd vllm
pip install -r requirements-uild.txt

安装vllm

VLLM_TARGET_DEVICE=empty pip install .

如上图所示,由于之前已安装过numpy,所以如果报numpy的错误说明setuptools-scm无法检测到版本,可能原因为并未从GitHub的ZIP包或非完整Git仓库中获取的代码,缺少必要的Git元数据(如.git目录)。setuptools-scm通常依赖Git信息来生成版本号,如果代码并非通过Git克隆获取,或.git目录被删除则会导致这个错误。解决办法为手动指定版本:

# 设置临时环境变量指定版本(vllm需要版本为 0.7.3)
export SETUPTOOLS_SCM_PRETEND_VERSION=0.7.3

# 重新安装
VLLM_TARGET_DEVICE=empty pip install .

如果报上图所示错误说明psutil编译失败,可能原因为缺少python开发头文件,安装python开发包即可

yum install python3-dev

如果报上图所示错误,安装aiohttp即可

conda install aiohttp

安装完成之后可以通过以下指令检查vllm版本

pip list

1.4 安装vllm-ascend

如果服务器可以连接github,使用如下指令下载安装

git clone -b v0.7.3-dev https://github.com/vllm-project/vllm-ascend.git
cd vllm-ascend
git checkout 0713836e95fe993feefe334945b5b273e4add1f1
pip install -e .

如果服务器无法连接github,可以使用笔者转存在modelscope的链接下载并解压

git clone https://oauth2:A_HhBt9-qWdhdTFy66k9@www.modelscope.cn/DanteQ/vllm-ascend.git 
cd vllm-ascend
unzip vllm-ascend.zip
pip install -e .

如果报上图类似的错误,重新运行如下指令直到安装成功即可

pip install -e .

2. 下载与安装

2.1 准备源码

MindSpeed-RL

git clone https://gitee.com/ascend/MindSpeed-RL.git

MindSpeed

git clone https://gitee.com/ascend/MindSpeed.git 
cd MindSpeed
git checkout 0dfa0035ec54d9a74b2f6ee2867367df897299df  
pip install -r requirements.txt 
pip3 install -e .
cp -r mindspeed ../MindSpeed-RL/
cd ..

Megatron-LM

git clone https://github.com/NVIDIA/Megatron-LM.git  # Megatron从github下载,请确保网络能访问
cd Megatron-LM
git checkout core_r0.8.0
cp -r megatron ../MindSpeed-RL/
cd ..

如果服务器无法连接github,可以使用笔者转存在modelscope的链接下载并解压

git clone https://oauth2:A_HhBt9-qWdhdTFy66k9@www.modelscope.cn/DanteQ/Megatron-LM.git
mv Megatron-LM Megatron-zip
cd Megatron-zip
unzip Megatron-LM.zip
mv Megatron-LM ../Megatron-LM
cd ../Megatron-LM
cp -r megatron ../MindSpeed-RL/
cd ..

MindSpeed-LLM

git clone https://gitee.com/ascend/MindSpeed-LLM.git
cd MindSpeed-LLM
git checkout 421ef7bcb83fb31844a1efb688cde71705c0526e
cp -r mindspeed_llm ../MindSpeed-RL/
cd ..

安装MindSpeed-RL依赖

cd ./MindSpeed-RL
pip install -r requirements.txt
pip install antlr4-python3-runtime==4.7.2 --no-deps

安装依赖时如果报错,重新运行指令直到安装成功即可

2.2 下载模型权重

下载Qwen2.5-7B模型权重使用如下指令即可

git clone https://www.modelscope.cn/Qwen/Qwen2.5-7B-Instruct.git

2.3 下载数据集

对于7B模型应使用难度适中的数据集,下载使用Orz math 57K来训练

git clone https://oauth2:A_HhBt9-qWdhdTFy66k9@www.modelscope.cn/datasets/DanteQ/orz_math_57k.git

3. 格式转换

3.1 模型权重转换

在进行RL训练之前,模型需要从HuggingFace权重转换为megatron权重

source /usr/local/Ascend/ascend-toolkit/set_env.sh
cd MindSpeed-RL
vim examples/ckpt/ckpt_convert_qwen25_hf2mcore.sh

修改上图红框内路径及参数,运行如下指令进行模型权重转换

bash examples/ckpt/ckpt_convert_qwen25_hf2mcore.sh

权重转换成功

3.2 数据集预处理

查看数据预处理文件

vim configs/datasets/grpo_pe_nlp.yaml

修改下图三处路径为实际路径

执行如下指令进行数据预处理

bash examples/data/preprocess_data.sh grpo_pe_nlp

预处理成功

预处理后的数据

4. 拉起训练

修改grpo_trainer_qwen25_7b.yaml文件内参数,替换实际模型权重路径与数据集路径

vim configs/grpo_trainer_qwen25_7b.yaml

拉起训练

bash examples/grpo/grpo_trainer_qwen25_7b.sh

成功拉起训练

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐