Skip to content

vLLM Ascend 图模式优化

vLLM Ascend 是基于 vLLM 框架为昇腾(Ascend)硬件平台提供高性能大语言模型推理的服务。为充分发挥昇腾 NPU 的计算潜力,vLLM Ascend 引入了图模式(Graph Mode)进行计算图优化,并通过 additional_config 机制提供灵活的底层行为控制。

1. 图模式加速

图模式(Graph Mode)通过提前捕获、编译和优化模型的前向计算图,消除运行时开销,并进行深度融合优化,从而显著提升推理吞吐量与延迟表现。

1.1 注意事项与兼容性

  • 实验性功能:图模式目前处于实验性阶段,未来版本配置方式、模型覆盖范围与性能可能持续改进。
  • 引擎要求:图模式仅适用于 V1 Engine
  • 默认启用:自 v0.9.1rc1 起,vLLM Ascend 默认启用图模式,以与 vLLM 保持一致行为。当前 Qwen 与 DeepSeek 系列模型已得到较充分测试。

1.2 两种图模式类型

图模式名称核心技术适用模型启用方式
ACLGraph基于 ACL(Ascend Computing Language)的图编译Qwen、DeepSeek 系列默认启用(V1 Engine)
TorchAirGraph基于 GE 图模式(Graph Engine)DeepSeek 系列、PanguProMoE需通过 additional_config 显式启用

1.3 ACLGraph 使用

ACLGraph 是默认图模式。对于支持的模型(如 Qwen 系列),只需确保使用 V1 引擎即可自动启用。

离线推理:

python
from vllm import LLM

model = LLM(model="path/to/Qwen2-7B-Instruct")
outputs = model.generate("Hello, how are you?")

在线服务:

bash
vllm serve Qwen/Qwen2-7B-Instruct

1.4 TorchAirGraph 使用

TorchAirGraph 适用于 DeepSeek 等模型,但当前版本不兼容 Chunked-Prefill

离线推理:

python
from vllm import LLM

model = LLM(
    model="path/to/DeepSeek-R1-0528",
    additional_config={
        "torchair_graph_config": {"enabled": True},
        "ascend_scheduler_config": {"enabled": True},
    },
)
outputs = model.generate("Hello, how are you?")

在线服务(建议将配置写入 JSON 文件以避免命令行转义问题):

bash
# 将配置保存到 config.json
cat > torchair_config.json << 'EOF'
{
  "torchair_graph_config": {"enabled": true},
  "ascend_scheduler_config": {"enabled": true}
}
EOF

vllm serve path/to/DeepSeek-R1-0528 \
  --additional-config torchair_config.json

1.5 回退到 Eager 模式

若图模式运行失败或遇到兼容性问题,可设置 enforce_eager=True 强制使用 Eager 模式。

离线推理:

python
from vllm import LLM

model = LLM(model="some_model", enforce_eager=True)
outputs = model.generate("Hello, how are you?")

在线服务:

bash
vllm serve some_model --enforce-eager

2. 附加配置(Additional Configuration)

additional_config 是 vLLM 提供的机制,允许插件(如 vLLM Ascend)灵活控制内部行为。它可通过字典或 JSON 文件传入。

2.1 使用方法

离线模式:

python
from vllm import LLM

llm = LLM(
    model="Qwen/Qwen3-8B",
    additional_config={"config_key": "config_value"},
)

在线模式:

bash
vllm serve Qwen/Qwen3-8B --additional-config config.json

2.2 顶级配置选项

名称类型默认值描述
torchair_graph_configdict{}TorchAir 图模式配置
ascend_scheduler_configdict{}Ascend 调度器配置
weight_prefetch_configdict{}权重预取配置
refreshboolFalse是否刷新全局昇腾配置
kv_cache_dtypestrNoneKV Cache 量化数据类型,当前仅支持 int8
enable_shared_expert_dpboolFalseMoE 共享专家在 DP 中共享时启用
expert_map_pathstrNone专家负载均衡(EPLB)映射文件路径
dynamic_eplbboolFalse是否启用动态 EPLB
num_iterations_eplb_updateint400EPLB 开始更新的迭代次数
multistream_overlap_shared_expertboolFalse是否启用多流共享专家

2.3 TorchAir 图配置

名称类型默认值描述
enabledboolFalse是否启用 TorchAir 图模式
modestrNoneReduce-Overhead 模式设置
enable_view_optimizeboolTrue是否启用视图优化
enable_frozen_parameterboolTrue推理时固定权重内存地址
use_cached_graphboolFalse是否使用缓存的计算图
graph_batch_sizeslist[int][]图缓存的批处理大小列表
graph_batch_sizes_initboolFalse是否动态初始化批处理大小
enable_kv_nzboolFalse是否启用 KV Cache NZ 布局(MLA 模型)
enable_super_kernelboolFalse是否启用 Super Kernel(动态 W8A8 MoE)

2.4 Ascend 调度器配置

名称类型默认值描述
enabledboolFalse是否启用 Ascend 调度器
enable_pd_transferboolFalse是否启用 Prefill-Decode 传输(仅离线)
decode_max_num_seqsint0P-D 传输时 Decode 阶段最大序列数
max_long_partial_prefillsint / floatinf可并发 Partial Prefill 的长提示最大数量
long_prefill_token_thresholdint / floatinf长提示词的最小 Token 阈值

ascend_scheduler_config 还支持继承 vLLM 调度器配置项,如 enable_chunked_prefill: True

2.5 权重预取配置

名称类型默认值描述
enabledboolFalse是否启用权重预取
prefetch_ratiodict{"attn": {"qkv": 1.0, "o": 1.0}, "moe": {"gate_up": 0.8}}各权重的预取比例

2.6 综合配置示例

json
{
  "torchair_graph_config": {
    "enabled": true,
    "use_cached_graph": true,
    "graph_batch_sizes": [1, 2, 4, 8],
    "graph_batch_sizes_init": false,
    "enable_kv_nz": false
  },
  "ascend_scheduler_config": {
    "enabled": true,
    "enable_chunked_prefill": true,
    "max_long_partial_prefills": 1,
    "long_prefill_token_threshold": 4096
  },
  "weight_prefetch_config": {
    "enabled": true,
    "prefetch_ratio": {
      "attn": {"qkv": 1.0, "o": 1.0},
      "moe": {"gate_up": 0.8}
    }
  },
  "multistream_overlap_shared_expert": true,
  "refresh": false
}

参考

Maintained by Robin