
作者昇腾实战派知识地图https://blog.csdn.net/Lumos_Lovegood/article/details/161601003背景简介VeRL原生支持GPU昇腾作为VeRL开源社区贡献方对VeRL进行适配使其能在NPU上运行。因此需要对社区原生特性在NPU上的支持情况以及一些NPU上的新增特性进行测试。简单说强化学习包含训练和推理两部分是一种边推边训的框架。区别于预训练和微调强化学习是后训练基于推理的结果对训练进行指导。下面介绍VeRL的测试方法环境部署安装HDK、CANN、PTA准备VeRL、vllm、vllm-ascend、Megatron可选、MindSpeed可选等源码安装相关依赖verl/blob/main/docs/ascend_tutorial/get_start/quick_start.rst以release的版本v0.8.0为例基本配套如下verlvllmvllm-ascendtorchtorch_npucannv0.8.00.18.00.18.02.9.02.9.0.post29.0.0详细配套请参考verl/docs/ascend_tutorial/get_start/install_guidance.rst at main · verl-project/verl · GitHub模型训练数据预处理、权重转换、参数配置、启动训练性能throughput端到端吞吐perf/time_per_step单步总时长精度参考指标critic/rewards/mean类似LLM的loss但是越高越好一般要求训练过程中rewards是上升趋势测试验收方式如果是有标杆的情况需要使用训练后保存的权重进行评测参考下面模型推理的精度测试方法模型推理评测服务端使用模型训练的环境拉起服务端# NPU服务端python-mvllm.entrypoints.openai.api_server\--model/home/zbz/Qwen3-32B/\--served-model-name auto\--gpu-memory-utilization0.9\--max-num-seqs24\--max-model-len22528\--max-num-batched-tokens22528\--enforce-eager\--trust-remote-code\--distributed_executor_backendmp\--tensor-parallel-size4\--data-parallel-size1\--generation-config vllm\--port6380model训练后的权重路径需要是hf格式保存后的若是mg格式需要转回hftensor-parallel-sizeTP建议和训练时infer的配置保持一致data-parallel-sizeDP建议和训练时infe的配置保持一致port可任意设置空闲端口max-model-len输入序列长度输出序列长度max-num-batched-tokens 和max-model-len一致即可客户端另起一个会话并且需要新建一个conda或者venv环境安装ais-benchmark避免环境依赖冲突gitclone https://gitee.com/aisbench/benchmark.gitcdbenchmark/ pip3install-e./ --use-pep517按需下载aime、MATH等数据集放到benchmark/ais_bench/datasets目录下然后修改评测脚本vim benchmark/ais_bench/benchmark/configs/models/vllm_api/vllm_api_stream_chat.pyfromais_bench.benchmark.utils.model_postprocessorsimportextract_non_reasoning_contentfromais_bench.benchmark.modelsimportVLLMCustomAPIChatStream models[dict(attrservice,# local or servicetypeVLLMCustomAPI,abbrvllm-api-general,path,model,max_seq_len2048,# 输入长度request_rate0,rpm_verboseFalse,retry2,host_iplocalhost,# 推理服务的IPhost_port6380,# 推理服务的端口enable_sslFalse,max_out_len20480,# 最大输出tokens长度batch_size48,# 推理的最大并发数generation_kwargsdict(temperature0,seed1234,))]评测命令如下ais_bench --models vllm_api_chat --datasets aime2024_gen其中datasets的值需要和benchmark/ais_bench/benchmark/configs/datasets/下各数据集的py文件名称对应一致下面提供循环评测的代码以便验证# 启动命令#!/bin/bashfor((i1;i4;i))doechoaime2024_gen times:$iais_bench--modelsvllm_api_stream_chat--datasetsaime2024_gendonefor((i1;i4;i))doechomath_prm800k_500_0shot_cot_gen times:$iais_bench--modelsvllm_api_stream_chat--datasetsmath_prm800k_500_0shot_cot_gendone故障排查执行训练脚本后ray从一开始就连不通确保各节点python版本、ray的版本一致且各节点没有开启防火墙确保ray通信不会被拦截。可以使用以下代码进行测试关闭防火墙systemctl stop firewalld主节点ray start --head --port 6366备节点ray start --address主节点ip:6366若无法联通需要检查环境的集群配置是否正常。执行训练脚本后一开始ray能联通后续ray自行断联这种情况一般是备节点能够联通主节点但主节点无法联通备节点。可以互换主备节点使用1的方式进行测试。评测报错ValueError: This model’s maximum context length is 0 tokens. However, your request has 195 input tokens. Please reduce the length of the input messages.benchmark/ais_bench/benchmark/configs/models/vllm_api/vllm_api_general.py脚本中的输入输出长度和服务端脚本max_model_len不对应max_model_len 输入输出。