跳转至

Dots3 Note

1 简介

Dots3 Note 是基于 Dots3 Note MoE + MLA 架构的大语言模型,并带有音频和视觉多模态编码器。文本、图像和音频形态互不排斥,可同时启用;当设备内存有限时,建议按需启用所需形态。形态不能在同一进程内动态切换,切换时必须重启服务。

形态 输入 典型场景 模态配置
text-only 文本 长上下文对话、文本推理 --language-model-only
image 文本 + 图像(每次请求 ≤ 7 张) MMMU 等视觉任务 --limit-mm-per-prompt '{"image":7,"video":0,"audio":0}'
audio 文本 + 音频 MMAR 等音频任务 --limit-mm-per-prompt '{"image":0,"video":0,"audio":1}'

如果仅需验证文本能力,请选择 text-only;对于 MMMU 等视觉任务,请选择 image;对于 MMAR 等音频任务,请选择 audio。启用某种形态后,后续所有启动和功能验证命令都必须使用相同形态。

本文档基于 vLLM-Ascend v0.22.1rc1(搭配 vLLM 0.22.1)进行验证和编写。Dots3 Note 在该版本中已完全支持,且所有 v0.22.1rc1 及更高版本均可稳定运行。

2 支持的功能

Dots3 Note 在 vLLM-Ascend 上支持以下功能:

功能 支持情况 说明
模型架构 Dots3 Note MoE + MLA MoE 混合专家 + 多头潜在注意力
多模态 音频 + 视觉 音频 / 视觉编码器,按形态启用(见 §5.1)
MTP 投机解码 ✅(text-only / audio) MTP3 + draft eager;image 形态禁用(受 Model Runner V1 限制)
FusedMC2 ✅ 用于 MoE 的融合 dispatch_ffn_combine / mega_moe 算子(--additional-config)
前缀缓存 ✅ --enable-prefix-caching,对相似提示词复用 KV

本章描述验证范围,并不意味着覆盖所有硬件和软件版本组合。复现本文档结果时,请优先使用第 3–4 章列出的验证环境和组件版本。

3 前提条件

安装前,请在主机上完成本章中的检查。只有当硬件、驱动、固件和模型权重全部就绪后,再进入第 4 章。

3.1 硬件介绍

本文档的验证环境如下:

项目 规格
服务器 单节点 Atlas A3 推理系列(Atlas 800I A3,板卡型号 IT22HMDA_4_S)
NPU Atlas A3 产品(8 张卡,每张卡双 die(2 个芯片)),共 16 个芯片,对应 /dev/davinci[0-15]
内存 每个芯片 64 GB 设备内存
芯片软件版本 SOC_VERSION = ascend910_9391(A3 系列)
主机形态 单节点部署(非多节点)

在主机上运行以下检查:

npu-smi info
ls -l /dev/davinci{0..15} /dev/davinci_manager /dev/devmm_svm /dev/hisi_hdc

通过标准:npu-smi info 识别出 8 张卡、共 16 个芯片,且所有芯片报告的设备内存状态正常;容器启动所需的设备文件均存在。如果设备数量或设备文件与本文档不同,请相应调整第 4.2 节中的设备映射及后续并行参数;TP16 配置不能直接套用。

3.2 驱动版本要求

本文档验证的软件环境如下:

项目 版本
NPU 驱动(npu-smi) 26.0.rc1
固件 9.0.0.0.205
CANN 9.0.0
torch-npu 2.10.0

驱动和固件安装在主机上,并通过 /usr/local/Ascend/driver/version.info 和 /usr/local/Ascend/driver/lib64/ 等路径挂载到容器中。请先在主机上运行以下命令:

npu-smi info
cat /usr/local/Ascend/driver/version.info

如果 npu-smi info 输出显示共 8 张卡、16 个芯片且设备内存正常,则主机侧 NPU 已就绪。进入容器后,再次运行 npu-smi info,确认容器内也能看到设备和驱动。

3.3 模型权重

请确保模型权重已完整下载,并确认其在容器内的可见路径。后续所有启动命令均复用以下变量:

MODEL_PATH=/path/to/dots3_note   # Model weight directory inside the container
SERVED_NAME=dots3_note       # Model name exposed by the service

test -d "$MODEL_PATH"

如果模型权重位于主机上,请在容器启动时将主机目录挂载到容器中,并将 MODEL_PATH 设置为挂载后的容器内路径。SERVED_NAME 必须与第 6 章客户端请求中的模型名称一致;否则请求将返回 404。

4 安装

本章仅提供一种安装方式:直接使用官方预构建镜像。

4.1 组件

组件 版本 说明
vLLM 0.22.1 推理服务框架,提供 OpenAI 兼容服务(vllm serve)
vLLM-Ascend (vllm-ascend) 0.22.1rc1 社区维护的 Ascend NPU 硬件插件,通过 vLLM 硬件可插拔接口将 NPU 接入 vLLM,并与 vLLM 版本对齐
torch-npu 2.10.0 PyTorch NPU 算子库,与 torch 版本配套
CANN 9.0.0 Ascend 软件栈(开发套件 + 算子包),容器内路径 /usr/local/Ascend/cann-9.0.0

本文档推荐使用一体化镜像 quay.io/ascend/vllm-ascend:dots3-note-prev-a3-openeuler。该镜像已集成 vLLM、vLLM-Ascend、torch-npu 和 CANN,无需单独安装。

4.2 镜像获取与构建

运行时使用官方 vLLM-Ascend 一体化镜像,其中已包含 vLLM、vLLM-Ascend、torch-npu、CANN 和 NNAL。请选择与您的硬件系列和操作系统匹配的镜像:

镜像 硬件 操作系统
quay.io/ascend/vllm-ascend:dots3-note-prev Atlas A2 Ubuntu
quay.io/ascend/vllm-ascend:dots3-note-prev-openeuler Atlas A2 openEuler
quay.io/ascend/vllm-ascend:dots3-note-prev-a3 Atlas A3 Ubuntu
quay.io/ascend/vllm-ascend:dots3-note-prev-a3-openeuler Atlas A3 openEuler

直接使用官方预构建镜像(推荐)

以下命令均在宿主机上执行:

export IMAGE=quay.io/ascend/vllm-ascend:dots3-note-prev-a3-openeuler
docker pull "$IMAGE"

启动前,在宿主机上设置模型权重的实际路径:

export HOST_MODEL_PATH=/path/to/dots3_note
test -d "$HOST_MODEL_PATH"

Atlas A3 需要映射全部 16 个 davinci 设备并挂载驱动。下面的命令已展开所有设备,可直接复制;如果宿主机目录不同,请先调整挂载源路径:

docker run -it --rm \
    --name vllm-ascend \
    --shm-size=1g \
    --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/davinci8 \
    --device /dev/davinci9 \
    --device /dev/davinci10 \
    --device /dev/davinci11 \
    --device /dev/davinci12 \
    --device /dev/davinci13 \
    --device /dev/davinci14 \
    --device /dev/davinci15 \
    --device /dev/davinci_manager \
    --device /dev/devmm_svm \
    --device /dev/hisi_hdc \
    -v /usr/local/dcmi:/usr/local/dcmi \
    -v /usr/local/Ascend/driver/tools/hccn_tool:/usr/local/Ascend/driver/tools/hccn_tool \
    -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
    -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
    -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
    -v /etc/ascend_install.info:/etc/ascend_install.info \
    -v /root/.cache:/root/.cache \
    -v "$HOST_MODEL_PATH":/models/dots3_note:ro \
    "$IMAGE" bash

容器的默认工作目录为 /workspace,vLLM 和 vLLM-Ascend 以开发模式安装(pip install -e)。进入容器后,设置后续命令共用的路径和服务名称:

export MODEL_PATH=/models/dots3_note
export SERVED_NAME=dots3_note

如果后续需要读取本地图像、音频或其他媒体文件,请在 docker run 时添加相应的只读目录挂载,并确保第 5 章和第 6 章使用容器内路径。

进入容器后,在继续部署之前完成以下最小检查:

npu-smi info
python -c "import vllm, vllm_ascend, torch_npu; print(vllm.__version__)"
pip show vllm vllm-ascend torch-npu
test -d "$MODEL_PATH"

4.3 环境变量

在容器内启动服务前,设置以下环境变量。它们适用于全部三种部署形式;变量说明来自官方 vLLM-Ascend 文档和常见实践:

export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
export LD_PRELOAD=/usr/lib64/libjemalloc.so.2
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export TASK_QUEUE_ENABLE=1
export CPU_AFFINITY_CONF=1
export HCCL_OP_EXPANSION_MODE=AIV
变量 说明
ASCEND_RT_VISIBLE_DEVICES 指定进程可见的 NPU 设备 ID(全部 16 个芯片可见)
LD_PRELOAD(jemalloc) 预加载 jemalloc 内存分配器,以减少多线程场景中的内存碎片
PYTORCH_NPU_ALLOC_CONF=expandable_segments:True 启用虚拟内存功能,以缓解推理过程中动态内存大小调整导致的碎片(官方 OOM 排查建议)
TASK_QUEUE_ENABLE=1 启用 NPU 任务队列,以异步派发算子
CPU_AFFINITY_CONF=1 启用 CPU 核心绑定,以减少跨 NUMA 访问
HCCL_OP_EXPANSION_MODE=AIV 将集合通信算子扩展到 AIV 核心,以提升多卡通信带宽(官方教程中的示例配置)

设置后,先确认关键变量和预加载库:

test -f /usr/lib64/libjemalloc.so.2
echo "$ASCEND_RT_VISIBLE_DEVICES"

如果所选镜像中不存在 jemalloc 路径,请先安装或将其改为镜像中的实际路径;不要使用无效的 LD_PRELOAD 启动服务。

5 在线服务部署

本章每次启动一种服务形式。首次部署时,建议先启动纯文本形式以完成基本流水线验证,然后根据测试目标切换到图像或音频。

5.1 部署模式

三种部署形式对比如下:

形式 输入 典型场景 模态配置 上下文 KV 缓存 MTP 每个 worker 的权重
纯文本 文本 长上下文对话、文本推理 --language-model-only 32768 --gpu-memory-utilization 0.92 ✅ MTP3 36.26 GB
图像 文本 + 图像(每请求 ≤ 7 张) MMMU 等视觉任务 --limit-mm-per-prompt '{"image":7,"video":0,"audio":0}' 32768 --kv-cache-memory-bytes 2816M ❌ ~48.8 GB (+12.5 GB)
音频 文本 + 音频 MMAR 等音频任务 --limit-mm-per-prompt '{"image":0,"video":0,"audio":1}' 4096 --kv-cache-memory-bytes 4G ✅ MTP3 37.88 GB (+1.62 GB)

三种形式均共享 16 个芯片,采用 TP16 + MoE 专家并行(EP16)。启动前,请确认:

test -d "$MODEL_PATH"
npu-smi info

切换形式时,请先在服务终端按 Ctrl+C 正常停止进程,然后检查是否存在残留 worker。只有当正常停止未能完全清理时,才按顺序使用以下命令:

pgrep -af 'VLLM::Worker|vllm serve'
pkill -TERM -f 'VLLM::Worker'

# Last resort when the process still cannot exit
pkill -9 -f VLLM::Worker

确认旧进程已退出且 8000 端口已释放后,再启动另一种形态,避免残留进程占用 NPU 内存。

并发建议:text-only / audio 使用 --max-num-seqs 4;image 可使用 --max-num-seqs 16。image 形态的 2816MB KV 是 16 并发下 FusedMC2 计算峰值允许的上限(每卡约 3.64 GiB);将 KV 增加到 ≥3072MB 会导致 OOM。如果需要更大的 KV 容量,请将并发降低到 8。

5.2 text-only 在线部署

适用于纯文本对话、数学推理和长上下文场景。在容器内,确认第 4.3 节中的环境变量已设置,然后启动:

vllm serve "$MODEL_PATH" \
    --served-model-name "$SERVED_NAME" \
    --tensor-parallel-size 16 \
    --enable-expert-parallel \
    --speculative-config \
      '{"method":"mtp","num_speculative_tokens":3,"enforce_eager":true}' \
    --additional-config \
      '{"enable_fused_mc2":1}' \
    --max-model-len 32768 \
    --gpu-memory-utilization 0.92 \
    --safetensors-load-strategy lazy \
    --enable-prefix-caching \
    --enable-chunked-prefill \
    --async-scheduling \
    --language-model-only \
    --max-num-batched-tokens 8192 \
    --max-num-seqs 4 \
    --default-chat-template-kwargs '{"enable_thinking":false}' \
    --generation-config vllm \
    --compilation-config \
      '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_DECODE_ONLY","cudagraph_capture_sizes":[16],"max_cudagraph_capture_size":16}' \
    --port 8000

保持此终端运行。看到第 5.6 节列出的成功日志后,在另一个容器终端或主机终端中运行健康检查,然后继续第 6.1 节。

5.3 image 在线部署

视觉形态禁用 MTP(Model Runner V1 限制),并强制使用分块视觉 prefill,以避免峰值 OOM。MEDIA_DIR 必须是容器内路径,并且必须包含第 6.2 节中的测试图像:

export MEDIA_DIR=/path/to/local-image-root   # Local image media root directory (whitelist)
test -d "$MEDIA_DIR"

在容器内启动:

vllm serve "$MODEL_PATH" \
    --served-model-name "$SERVED_NAME" \
    --tensor-parallel-size 16 \
    --enable-expert-parallel \
    --additional-config \
      '{"enable_fused_mc2":1}' \
    --max-model-len 32768 \
    --kv-cache-memory-bytes 2816M \
    --safetensors-load-strategy lazy \
    --enable-prefix-caching \
    --enable-chunked-prefill \
    --async-scheduling \
    --allowed-local-media-path "$MEDIA_DIR" \
    --limit-mm-per-prompt '{"image":7,"video":0,"audio":0}' \
    --mm-processor-cache-gb 0 \
    --mm-encoder-tp-mode data \
    --skip-mm-profiling \
    --max-num-batched-tokens 1024 \
    --max-num-seqs 16 \
    --generation-config vllm \
    --compilation-config \
      '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_DECODE_ONLY","cudagraph_capture_sizes":[16]}' \
    --port 8000

保持此终端运行。通过第 5.6 节的健康检查后,继续第 6.2 节。

5.4 audio 在线部署

MEDIA_ROOT 必须是容器内路径,并且需要覆盖服务需要读取的本地音频目录:

export MEDIA_ROOT=/path/to/local-audio-root   # Local audio media root directory (whitelist)
test -d "$MEDIA_ROOT"

在容器内启动:

vllm serve "$MODEL_PATH" \
    --served-model-name "$SERVED_NAME" \
    --tensor-parallel-size 16 \
    --enable-expert-parallel \
    --speculative-config \
      '{"method":"mtp","num_speculative_tokens":3,"enforce_eager":true}' \
    --additional-config \
      '{"enable_fused_mc2":1}' \
    --max-model-len 4096 \
    --kv-cache-memory-bytes 4G \
    --safetensors-load-strategy lazy \
    --enable-prefix-caching \
    --enable-chunked-prefill \
    --async-scheduling \
    --limit-mm-per-prompt '{"image":0,"video":0,"audio":1}' \
    --allowed-local-media-path "$MEDIA_ROOT" \
    --mm-encoder-tp-mode data \
    --max-num-batched-tokens 4096 \
    --max-num-seqs 4 \
    --default-chat-template-kwargs '{"enable_thinking":false}' \
    --generation-config vllm \
    --compilation-config \
      '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_DECODE_ONLY","cudagraph_capture_sizes":[4,8,16],"max_cudagraph_capture_size":16}' \
    --port 8000

保持此终端运行。通过第 5.6 节的健康检查后,继续第 6.3 节。

5.5 参数说明

参数分类和说明请参考 vLLM 官方 Engine Arguments 文档(vllm serve 的引擎参数)以及 vLLM-Ascend 文档。下表涵盖三种形态使用的全部参数;排查问题时,请先查看本节,再修改启动命令。

5.5.1 通用参数(三种形态均使用)

参数 值 说明
--served-model-name dots3_note API 暴露的模型名称;客户端请求必须使用该名称(默认 default 会返回 404)
--tensor-parallel-size 16 张量并行组大小;模型权重分布在 16 个芯片上
--enable-expert-parallel On MoE 层使用专家并行而非张量并行;每个 rank 仅加载其 EP 分片中的专家权重
--safetensors-load-strategy lazy safetensors 权重加载策略:lazy 表示内存映射、按需从文件加载,降低启动峰值内存
--enable-prefix-caching On 自动前缀缓存;相似提示词复用 KV 缓存,提升吞吐量
--enable-chunked-prefill On 分块 prefill,防止单个长请求占用整个批次,降低 TTFT 波动
--async-scheduling On 异步调度,将调度与推理解耦,提升吞吐量
参数 值 说明
--max-num-seqs 纯文本/音频为 4;图像为 16 每个批次的最大并发序列数;应与客户端并发数及对应形态的内存预算相匹配
--generation-config vllm 生成配置来源:vllm 表示不加载模型自身的生成配置,而使用 vLLM 默认配置
--compilation-config 参见 §5.5.4 编译 / 图捕获配置(VLLM_COMPILE、FULL_DECODE_ONLY、捕获大小)
--additional-config 参见 §5.5.4 vLLM-Ascend 附加配置(FusedMC2)
--port 8000 服务监听端口
参数 纯文本 图像 音频 说明
--language-model-only ✅ — — 仅加载语言模型,不加载多模态编码器
--limit-mm-per-prompt — {"image":7,...} {"audio":1,...} 每个请求中各模态输入的上限;当对应模态为 0 时,不加载该编码器(参见 §5.1)。图像使用 7,因为每个请求最多支持 7 张图像;单图像场景可收紧为 1
--max-model-len 32768 32768 4096 模型上下文长度(提示 + 输出)
--max-num-batched-tokens 8192 1024 4096 每个批次的最大 token 数;图像使用 1024 以分块处理大图像预填充,避免 FusedMC2 峰值 OOM
--allowed-local-media-path — MEDIA_DIR MEDIA_ROOT 允许 API 读取本地媒体文件的目录白名单(安全敏感;仅在可信环境中启用)
--mm-processor-cache-gb — 0 — 多模态处理器缓存大小(GB)
--mm-encoder-tp-mode — data data 多模态编码器的张量并行模式(data = 在每个 rank 上复制编码器)
--skip-mm-profiling — ✅ — 跳过多模态内存分析
--speculative-config MTP3 — MTP3 投机解码配置(MTP3 + draft eager);图像形态未设置(Model Runner V1 视觉限制)
--default-chat-template-kwargs enable_thinking:false — enable_thinking:false 默认聊天模板参数,禁用思考输出

5.5.3 KV 缓存配置

形态 KV 缓存 原因
纯文本 --gpu-memory-utilization 0.92 自动分析,已验证
图像 --kv-cache-memory-bytes 2816M FusedMC2 峰值每张卡约需 3.64 GiB;过大的 KV(3328MB)会导致 OOM;结合 --max-num-batched-tokens 1024 分块处理大图像预填充
音频 --kv-cache-memory-bytes 4G 单请求预算约 1,131 tokens(文本 360 + 音频 259 + 输出 512);1GB 仅提供 2,220 tokens,不足,而 4GB 提供 8,956 tokens(2.19 倍)

为什么图像/音频使用显式 --kv-cache-memory-bytes(实测):在 v0.22.1 下自动分析可能分配较大的 KV(音频在 0.92 时获得 21,565 tokens,在 0.95 时获得 25,686 tokens),但图捕获期间的实际峰值内存会超过限制并导致 worker 退出,日志显示 Worker proc VllmWorker-* died unexpectedly。显式 KV 比自动分析更保守,并为图捕获约 3.76 GiB 的峰值预留了余量,因此是当前已验证的稳定方案。

如果坚持使用自动分析,可以设置 VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS=0 以禁用 ACL 图内存估算并再次尝试;该方案未在单模态上验证,不建议作为对外部署测试的默认配置。

5.5.4 编译与 vLLM-Ascend 附加配置

参数 值 说明
--compilation-config.mode VLLM_COMPILE 编译模式
--compilation-config.cudagraph_mode FULL_DECODE_ONLY ACL 图仅捕获解码阶段,降低捕获峰值内存
--compilation-config.cudagraph_capture_sizes 纯文本 [16];图像 [16];音频 [4,8,16] 图捕获批次大小;TP16 + 序列并行要求 16 的倍数,且音频 [4,8] 会在启动时自动移除
--compilation-config.max_cudagraph_capture_size 16(纯文本 / 音频) 最大图捕获批次大小,= max_num_seqs × (1 + num_speculative_tokens) = 4 × 4
--additional-config.enable_fused_mc2 1 启用 FusedMC2(用于 MoE 的融合 dispatch_ffn_combine / mega_moe 算子)

5.6 服务验证

不要仅根据进程存在来判断启动成功。首先等待模型加载和图捕获完成;成功日志应包含:

GPU KV cache size: <tokens>
Maximum concurrency for ... tokens per request: ...
Graph capturing finished ...
Application startup complete.

然后在另一个终端运行健康检查:

curl -sf http://127.0.0.1:8000/v1/models

返回结果应包含模型名称 dots3_note 和对应形态的 max_model_len。同时,确认服务终端没有 worker died、OOM 或持续重启日志。只有同时满足这两个条件,才认为服务已就绪,然后进入第 6 章。

如果健康检查失败,请按以下顺序排查:服务是否仍在加载、端口 8000 是否正在监听、--served-model-name 是否正确,以及服务终端是否显示 NPU OOM 或异常 worker 退出。

6 功能验证

功能验证的目标是使用真实请求确认“客户端 → OpenAI 兼容接口 → 模型推理 → 响应”流水线可用。仅执行与当前服务形态对应的小节。

6.1 纯文本

在另一个终端执行:

curl http://127.0.0.1:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "dots3_note",
        "messages": [{"role": "user", "content": "What is the capital of France?"}],
        "temperature": 0,
        "max_tokens": 640
    }'

通过标准:HTTP 请求成功,响应中的 model 与服务名称匹配,并且 choices[0].message.content 包含有效的文本答案。

6.2 图像

首先确认测试图像位于第 5.3 节中配置的 MEDIA_DIR 白名单内,并将下面的路径替换为实际文件:

curl http://127.0.0.1:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "dots3_note",
        "messages": [{
            "role": "user",
            "content": [
                {"type": "image_url", "image_url": {"url": "file:///path/to/image.png"}},
                {"type": "text", "text": "What is shown in this image?"}
            ]
        }],
        "temperature": 0,
        "max_tokens": 256
    }'

通过标准:HTTP 请求成功,响应包含与图像内容相关的有效文本,并且服务终端未显示媒体路径拒绝、HTTP 400 或 OOM。

本地路径必须位于 --allowed-local-media-path 白名单内;base64 data URL 通过 HTTP 提交,不需要本地路径白名单。

6.3 音频

首先确认 /path/to/audio.wav 存在。以下命令依赖于支持 base64 -w0 的 GNU coreutils:

curl -s http://127.0.0.1:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d @<(printf '{
        "model":"dots3_note",
        "messages":[{
            "role":"user",
            "content":[
                {"type":"audio_url","audio_url":{"url":"data:audio/wav;base64,'; base64 -w0 /path/to/audio.wav; printf '"}},
                {"type":"text","text":"What does the speaker say?"}
            ]
        }],
        "temperature":0,
        "max_tokens":1024
    }')

通过标准:HTTP 请求成功,响应包含与音频内容相关的有效文本,并且服务终端未显示音频解码、HTTP 400 或 OOM 错误。

7 准确性评估(参考)

本章仅提供准确性评估指南供参考。它涵盖 GSM8K 数据集,该数据集用于评估纯文本数学推理。本章中的评估命令仅供参考;第 3-5 章中的部署和服务启动步骤是运行这些命令的前提。

GSM8K 用于评估纯文本数学推理。gsm8k 数据集内置于 evalscope 中,会从 ModelScope 自动下载,并包含 4-shot 模板和 \boxed{} 答案提取。评估前,请确认第 5.2 节中的纯文本服务正在运行,并且客户端请求中的模型名称必须为 dots3_note(默认模型名称 default 会返回 404)。

首先在容器内安装 evalscope:

# Install inside the container (for domestic networks, use the Tsinghua mirror)
pip install evalscope -i https://pypi.tuna.tsinghua.edu.cn/simple

# Verify the installation
evalscope eval --help
python -c "import evalscope; print(evalscope.__version__)"

然后先运行冒烟测试,再运行完整评估:

# Smoke test (5 samples)
evalscope eval \
  --model dots3_note \
  --api-url http://127.0.0.1:8000/v1 \
  --api-key EMPTY \
  --eval-type openai_api \
  --datasets gsm8k \
  --generation-config '{"temperature": 0, "max_tokens": 2048}' \
  --eval-batch-size 4 \
  --limit 5

# Full evaluation (1319 samples, remove --limit)
evalscope eval \
  --model dots3_note \
  --api-url http://127.0.0.1:8000/v1 \
  --api-key EMPTY \
  --eval-type openai_api \
  --datasets gsm8k \
  --generation-config '{"temperature": 0, "max_tokens": 2048}' \
  --eval-batch-size 4

内置数据集需要访问 ModelScope。对于国内网络,请在运行前设置 export MODELSCOPE_API_URL=https://modelscope.cn。

8 性能评估(参考)

本章仅提供性能评估指南供参考。本章中的评估方法和命令仅供参考;第 3-5 章中的部署和服务启动步骤是运行这些命令的前提。

8.1 使用 AISBench

请参阅 使用 AISBench 进行性能评估 了解详情。

8.2 使用 vLLM Benchmark

请参阅 vllm benchmark 了解更多详情。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 vl/vllm-ascend