作者:昇腾实战派
知识地图链接:强化学习知识地图

背景概述

本文介绍基于Ascend verl镜像的大语言模型训练实践。该镜像集成了Ubuntu 22.04操作系统和Python 3.11环境,并预装了verl、PyTorch、vLLM、Megatron-LM等框架,为在Ascend硬件上开展深度学习项目提供了开箱即用的解决方案。

镜像内容

镜像内包含以下主要组件(版本信息仅供参考,请根据实际需求选择):

组件 版本
基础镜像 Ubuntu 22.04
Python 3.11
CANN 8.3.RC1
torch 2.7.1
torch_npu 2.7.1
torchvision 0.22.1
vLLM 0.11.0
vLLM-ascend 0.11.0rc1
Megatron-LM v0.12.1
MindSpeed (f2b0977e)
triton-ascend 3.2.0rc4
verl main

镜像使用步骤

下载镜像

  1. 访问ascend-verl镜像仓库(https://quay.io/repository/ascend/verl?tab=tags&tag=latest),选择所需镜像版本并复制拉取命令。
  2. 在服务器上执行以下命令拉取镜像:
docker pull quay.io/ascend/verl:verl-8.2.rc1-910b-ubuntu22.04-py3.11-latest
  1. 验证镜像是否成功拉取:
docker images

快速开始

1. 启动容器

执行以下命令进入镜像环境:

docker run -it -u root --ipc=host --net=host \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /usr/local/sbin/:/usr/local/sbin/ \
-v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf \
-v /var/log/npu/slog/:/var/log/npu/slog \
-v /var/log/npu/profiling/:/var/log/npu/profiling \
-v /var/log/npu/dump/:/var/log/npu/dump \
-v /var/log/npu/:/usr/slog \
-v /usr/lib/jvm/:/usr/lib/jvm \
-v /data02:/data02 \
quay.io/ascend/verl:verl-8.2.rc1-910b-ubuntu22.04-py3.11-latest \
/bin/bash

2. 数据准备与处理

进入工作目录:

cd /verl

下载GSM8K数据集:

  • 访问HuggingFace数据集页面:https://huggingface.co/datasets/openai/gsm8k/tree/main
    数据预处理:
  • 在数据预处理阶段,我们发现需要调整gsm8k.py脚本以确保兼容性
  • 执行数据处理命令:
python3 examples/data_preprocess/gsm8k.py --local_save_dir "/path/to/gsm8k/"

3. 模型训练

配置训练环境并启动训练任务:

set -x
export VLLM_ATTENTION_BACKEND=XFORMERS
python3 -m verl.trainer.main_ppo \
    algorithm.adv_estimator=grpo \
    data.train_files=**/gsm8k/train.parquet \
    data.val_files=**/gsm8k//test.parquet \
    data.train_batch_size=128 \
    data.max_prompt_length=512 \
    data.max_response_length=128 \
    data.filter_overlong_prompts=True \
    data.truncation='error' \
    actor_rollout_ref.model.path=**/Qwen2.5-0.5B-Instruct \
    actor_rollout_ref.actor.optim.lr=5e-7 \
    actor_rollout_ref.model.use_remove_padding=False \
    actor_rollout_ref.actor.entropy_coeff=0.001 \
    actor_rollout_ref.actor.ppo_mini_batch_size=64 \
    actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=20 \
    actor_rollout_ref.actor.use_kl_loss=True \
    actor_rollout_ref.actor.kl_loss_coef=0.001 \
    actor_rollout_ref.actor.kl_loss_type=low_var_kl \
    actor_rollout_ref.model.enable_gradient_checkpointing=True \
    actor_rollout_ref.actor.fsdp_config.param_offload=False \
    actor_rollout_ref.actor.fsdp_config.optimizer_offload=False \
    actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=40 \
    actor_rollout_ref.rollout.enable_chunked_prefill=False \
    actor_rollout_ref.rollout.tensor_model_parallel_size=2 \
    actor_rollout_ref.rollout.name=vllm \
    actor_rollout_ref.rollout.gpu_memory_utilization=0.6 \
    actor_rollout_ref.rollout.n=5 \
    actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=40 \
    actor_rollout_ref.ref.fsdp_config.param_offload=True \
    algorithm.kl_ctrl.kl_coef=0.001 \
    trainer.critic_warmup=0 \
    trainer.logger=console \
    trainer.project_name='verl_grpo_example_gsm8k' \
    trainer.experiment_name='qwen2_7b_function_rm' \
    trainer.n_gpus_per_node=8 \
    trainer.nnodes=1 \
    trainer.save_freq=-1 \
    trainer.test_freq=5 \
    trainer.total_epochs=1 \
    trainer.device=npu $@

通过以上步骤,可以快速在Ascend环境中开展大语言模型的训练任务。建议根据实际硬件配置调整批次大小和并行参数,以获得最佳性能。

Logo

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

更多推荐