跳转至

附加配置

附加配置是 vLLM 提供的一种机制,允许插件自行控制内部行为。VLLM Ascend 使用该机制使项目更加灵活。

迁移指南

从 PR #9064 开始,vLLM Ascend 正在将受支持的环境变量迁移到 --additional-config。

重要通知

  • 当前支持:过渡期内同时支持环境变量和 --additional-config
  • 建议:新部署使用 --additional-config,并迁移现有配置
  • 未来计划:环境变量将在未来版本中移除;仅支持 --additional-config

快速参考

环境变量 配置键 类型转换
VLLM_ASCEND_BALANCE_SCHEDULING scheduler_config.enable_balance_scheduling "1" → true, "0" → false
MSMONITOR_USE_DAEMON msmonitor_use_daemon "1" → true, "0" → false
VLLM_ASCEND_ENABLE_MLAPO enable_mlapo "1" → true, "0" → false
VLLM_ASCEND_ENABLE_NZ weight_nz_mode 整数(保持不变,字段名已更改)
VLLM_ASCEND_ENABLE_FUSED_MC2 enable_fused_mc2 整数(保持不变)
VLLM_ASCEND_FUSION_OP_TRANSPOSE_KV_CACHE_BY_BLOCK enable_transpose_kv_cache_by_block "1" → true, "0" → false
VLLM_ASCEND_ENABLE_FLASHCOMM1 enable_flashcomm1 "1" → true, "0" → false

如何使用

在线模式或离线模式下,用户都可以使用附加配置。以 Qwen3 为例:

在线模式:

vllm serve Qwen/Qwen3-8B --additional-config='{"config_key":"config_value"}'

离线模式:

from vllm import LLM

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

配置选项

下表列出了 vLLM Ascend 中可用的附加配置选项:

名称 类型 默认值 描述
xlite_graph_config dict {} Xlite 图模式的配置选项
finegrained_tp_config dict {} 模块张量并行的配置选项
ascend_compilation_config dict {} Ascend 编译的配置选项
eplb_config dict {} Runner 特定的 EPLB 扩展。参见 专家并行负载均衡器。
scheduler_config dict {} Ascend 调度器扩展的配置选项,包括平衡调度、重计算调度、DyntraLB、ShortRequestFirst 和动态分块流水线并行。
refresh bool false 是否刷新全局 Ascend 配置内容。这通常用于 rlhf 或 ut/e2e 测试用例。
dump_config dict None 内联 msprobe dump 配置。vLLM-Ascend 会将其实例化为临时 JSON 文件,并将该文件传递给调试器。
dump_config_path str None msprobe dump 的配置文件路径(兼容旧选项)。
enable_shared_expert_dp bool False 在 TP rank 间复制共享专家权重,并以数据并行方式运行共享专家。此选项独立于上游 MoE 序列并行;可以启用任一功能或同时启用两者。它会提升性能,但会消耗更多内存。
multistream_overlap_shared_expert bool False 是否启用多流共享专家。此选项仅对具有共享专家的 MoE 模型生效。
enable_cpu_binding bool True 在 ARM 服务器上启用 Ascend 原生 CPU 绑定。设置为 False 可禁用。参见 CPU 绑定。
pa_shape_list list [] 页注意力算子的自定义形状列表。
enable_kv_nz bool False 是否启用 KV 缓存 NZ 布局。此选项仅对使用 MLA 的模型(例如 DeepSeek)生效。
c8_enable_reshape_optim bool True 是否使用 StoreKVBlock 算子加速 LightningIndexer C8 缓存写入。启用后,仅当 SFA 和 LightningIndexer C8 在 PD 预填充(P)节点上激活时,优化才会生效。
mc2_comm_alg str "" 设置 dispatch/combine 算子的 comm_alg 参数,仅支持 ""/"fullmesh"/"hierarchy"/"fullmesh_v2"。"hierarchy" 仅支持 A2/A3,"fullmesh_v2" 目前仅支持 A3。
enable_mc2_hierarchy_comm bool False 通过 ROCE 启用 dispatch/combine 算子的节点间通信。此参数将被弃用,并由 mc2_comm_alg = "hierarchy" 替代
enable_prefill_mc2 bool False 是否为预填充批次保留 mc2_token_capacity。启用后,将使用 max_num_batched_tokens 而不是仅解码容量来计算 mc2_token_capacity。在此场景中,max_num_batched_tokens 的推荐最大值为 tp_size * 512。这是一个临时开关;一旦 MC2 算子在所有场景中完成,此开关将被移除,并且 MC2 将默认启用。
名称 类型 默认值 描述
mega_moe_max_tokens int 65536 在融合 MC2/MegaMoe 路径中,dispatch 后每个 rank 的参考 token 容量。它作为 dispatch_ffn_combine 的 max_output_size 以及 CANN MegaMoe 缓冲区的 max_recv_token_num 传入。如果某个 rank 的实际 MoE 负载超过此值,可能会发生精度下降。绝对安全上限为 num_max_tokens_per_rank * int(self.token_dispatcher.ep_world_size) * min(num_topk, expert_per_rank),但直接使用它可能会消耗非常大的设备内存。请根据实际专家负载分布调整此值。
msmonitor_use_daemon bool False 是否为 msmonitor 使用守护进程模式。旧版 MSMONITOR_USE_DAEMON 环境变量不再受支持。
enable_mlapo bool True 是否启用 MLAPO(模型逐层自适应并行优化)。旧版 VLLM_ASCEND_ENABLE_MLAPO 环境变量不再受支持。
mlapo_keep_prefill_weights bool False 当为 True 时,在 NPU 上保留 MLAPO 预填充权重,而不是在 kv_consumer(仅解码的 D)节点上释放它们。D 节点具有正常的本地预填充路径(recompute / fallback / preempt),当权重被释放时会导致崩溃(issue #11882)。启用此选项以用 NPU 内存换取稳定性。
weight_nz_mode int 1 权重 NZ 模式。0 禁用 NZ,1 仅对量化权重启用 NZ,2 在支持时也对 BF16/FP16 权重启用 NZ。旧版 VLLM_ASCEND_ENABLE_NZ 环境变量不再受支持。
enable_fused_mc2 int 0 融合 MC2 配置。0 禁用融合路径,1 在模型和并行配置支持时启用它。旧版 VLLM_ASCEND_ENABLE_FUSED_MC2 环境变量不再受支持。
enable_transpose_kv_cache_by_block bool True 是否启用按块转置 KV cache。旧版 VLLM_ASCEND_FUSION_OP_TRANSPOSE_KV_CACHE_BY_BLOCK 环境变量不再受支持。
enable_dsa_cp bool False 是否为 DeepSeek V3.2、DeepSeek V4 以及其他具有相同架构的模型启用 dsa_cp。此功能要求启用序列并行。启用它会自动启用 FlashComm。
enable_flashcomm1 bool False 是否启用 SP MoE。旧版 VLLM_ASCEND_ENABLE_FLASHCOMM1 环境变量为兼容性而保留。参见 序列并行。
enable_pcp_o_proj_weight_sharding bool False SFA-PCP 是否在加载时跨 PCP 组对 O-proj 权重进行分片,并在运行时在 PCP 本地和聚合后的权重视图之间切换。此选项不影响 DSA-CP,其原始策略保持固定:预填充聚合完整的 O-proj 权重,解码使用本地权重。此选项必须在服务器启动时设置。
rejection_sampler_config dict {} 拒绝采样器(block verify 和 entropy verify)的配置选项。
dynamic_spec_config dict {} 动态推测解码的配置选项。参见 动态推测解码。
multistream_dsv4_dsa_overlap bool True 是否为 DeepSeek V4 启用 dsa 多流重叠。
rl_config dict {} 一键 RL 模式配置。有关所有字段、两种部署模式、使用示例和迁移指南,请参见 rl_config。
enable_reduce_sample bool False 是否启用 reduce sample 优化,以降低张量并行场景中的通信和计算开销。启用后,logits 将保持跨 TP rank 分区,并且只通信少量 top-k 候选值/索引,而不是执行全词表 all-to-all/all-gather。注意:这是一个实验性功能。限制:(1) 不支持 PD 分离场景。(2) 当请求采样 logprobs 时必须禁用。启用 reduce sample 时,logprobs 会在分区 logits 上静默计算,而不是在全词表上计算,从而产生不正确的 logprob 值和 top-k 排名。(3) 不能与 lmhead TP 同时启用。
combine_quant_mode int 0 融合 MC2 配置。此配置将作为 torch_npu.npu_moe_distribute_combine_v2 算子的 comm_quant_mode 参数传入。有效值范围请参阅算子文档。

各配置选项的详细信息如下:

[!WARNING] 在 HDK 0.26.0 或更早版本中,c8_enable_reshape_optim 可能与使用 AICPU 算子的池化模型发生冲突。将 c8_enable_reshape_optim 设置为 false 以禁用该优化并避免冲突。有关详细信息,请参见 issue #15896。

xlite_graph_config

名称 类型 默认值 描述
enabled bool False 是否启用 Xlite 图模式。有关支持的模型、仅解码与完整模式的区别以及示例,请参见 使用 XliteGraph。
full_mode bool False xlite 运行时的 token 预算大小设置。批次按 token 数量路由:预算内的批次在 xlite 运行时上运行,较大的批次回退到 ACLGraph 下的 runnable。默认情况下(False),预算按解码步骤设置(max_num_seqs × (1 + num_speculative_tokens)),因此预填充和大型混合批次通常会回退。当为 True 时,预算为 max_num_batched_tokens,因此 xlite 同样处理预填充和解码,不使用 ACLGraph 捕获,并建议设置 --enforce-eager(除非配置了推测解码等)。自 v0.28.0 起,路由按 token 数量而不是批次注意力状态进行。
名称 类型 默认值 描述

finegrained_tp_config

名称 类型 默认值 描述
lmhead_tensor_parallel_size int 0 lm_head 的自定义张量并行大小。
oproj_tensor_parallel_size int 0 o_proj 的自定义张量并行大小。
embedding_tensor_parallel_size int 0 embedding 的自定义张量并行大小。
mlp_tensor_parallel_size int 0 mlp 的自定义张量并行大小。

ascend_compilation_config

名称 类型 默认值 描述
enable_npugraph_ex bool True 是否启用 npugraph_ex 后端。
enable_static_kernel bool False 是否启用静态内核。适用于形状变化较少且可预留时间进行静态内核编译的场景。
enable_super_kernel bool 继承 enable_static_kernel 是否启用 Super Kernel 优化。省略时,遵循 enable_static_kernel;显式设置可覆盖该行为。Super Kernel 需要静态内核。
fuse_norm_quant bool True 是否启用 fuse_norm_quant 通道。
fuse_qknorm_rope bool True 是否启用 fuse_qknorm_rope 通道。如果环境中没有 Triton,请将其设置为 False。
fuse_muls_add bool True 是否启用 fuse_muls_add 通道。

eplb_config

接受的字段取决于模型运行器:

  • Model Runner V2 此处仅接受 load_collection_phase。通过 --enable-eplb 和 --eplb-config 配置上游 EPLB。Ascend 使用 上游默认策略和异步 Gloo 移动。
  • Model Runner V1 接受以下旧字段,但不接受 load_collection_phase。 MRv1 在 Ascend 上不接受上游 --enable-eplb。

混合两种模式会在启动时失败,而不是静默忽略配置。

名称 类型 默认值 描述
dynamic_eplb bool False 仅 MRv1。是否启用旧版动态 EPLB。
expert_map_path str None 仅 MRv1。加载已记录的静态专家映射。
expert_heat_collection_interval int 600 仅 MRv1。用于收集专家热度的前向迭代次数。
algorithm_execution_interval int 50 仅 MRv1。允许 EPLB 工作进程完成其 CPU 任务的间隔。
expert_map_record_path str None 仅 MRv1。将计算得到的专家映射保存到指定的 JSON 路径。
num_redundant_experts int 0 在此表中仅 MRv1。通过上游 --eplb-config 配置 MRv2 值。
eplb_policy_type int 2 仅 MRv1。EPLB 策略:0=Random,1=DefaultEplb,2=SwiftBalanceEplb,3=FlashLB。
eplb_heat_collection_stage str "all" 仅 MRv1。选择 "all"、"prefill" 或 "decode" 热度收集。
load_collection_phase str "all" 仅 MRv2。选择 "all"、"prefill" 或 "decode" 负载提交。任何包含 prefill 请求的批次都完全归类为 prefill。

scheduler_config

旧版顶层 enable_balance_scheduling、recompute_scheduler_enable、short_request_first_config 和 profiling_chunk_config 键在迁移期间仍受支持,但已弃用。如果两种格式都提供了相同字段,则以 scheduler_config 中的值为准。

名称 类型 默认值 描述
enable_balance_scheduling bool False 是否启用均衡调度。旧版 VLLM_ASCEND_BALANCE_SCHEDULING 环境变量不再受支持。
recompute_scheduler_enable bool False 是否启用重计算调度器。仅在 PD 分离的 D 节点上有效(kv_role 为 kv_consumer)。不要在 P 节点或 PD 混合模式下启用(没有 kv_transfer_config、kv_role 为 kv_producer,或 kv_role 为 kv_both);启动时将因明确错误而失败。
profiling_chunk_config dict {} 动态分块流水线并行的配置选项。有关详细信息,请参阅 Dynamic Chunked Pipeline Parallel。
short_request_first_config dict {} ShortRequestFirst 预填充调度在 FCFS 同步或异步、PD 预填充(P)或 PD 混合节点上的配置选项。
batch_job_sched_config dict {} 批作业感知调度器的配置选项。有关详细信息,请参阅 Batch-Job-Aware Scheduler。
dyntra_lb_config dict {} PD 分离解码节点上 DyntraLB 负载均衡的配置选项。

scheduler_config.profiling_chunk_config

名称 类型 默认值 描述
enabled bool False 是否启用动态分块流水线并行。需要 pipeline-parallel-size > 1。
smooth_factor float 1.0 平滑因子(0 < x ≤ 1.0)。值越高,越信任动态预测;0.0 禁用动态调整。
min_chunk int 4096 动态计算的最小分块大小。应小于 max-num-batched-tokens。
need_timing bool True 启用/禁用在线校准
max_fit_chunk int 30 在线校准的分块时间数据数量

scheduler_config.dyntra_lb_config

DyntraLB 在数据并行 rank 之间均衡解码请求。它仅在具有 data_parallel_size > 1 的 PD 分离解码节点(kv_role="kv_consumer")上受支持。 dyntra_lb_config.enabled 和 recompute_scheduler_enable 是独立的同级 设置;同时启用两者会选择组合的 DyntraLB 重计算调度器。

名称 类型 默认值 描述
enabled bool False 启用 DyntraLB 并选择 DyntraLB 感知的调度器。
mode str "dynamic" 使用 "static" 或 "dynamic" 激活。
start_step int 250 允许生成计划的第一个已完成的引擎步骤快照。
end_step int -1 排他的最终快照步骤;-1 表示无上限。
bubble_threshold float 5.0 修改调度所需的最大 rank 负载与平均 rank 负载之差的最小值。大于或等于 1 的值为 KV 缓存块;小于 1 的值为归一化比率。
long_req_block_threshold int 700 在动态模式下,新添加请求的块数超过该阈值时激活均衡。默认阈值在 block_size=128 时大约对应 89,600 个 token。
dynamic_max_step int 256 在没有新的长请求加入的情况下,经过这么多活跃步骤后停止动态均衡。
enable_diagnostics bool False 仅用于功能验证和调试的冗长日志。默认禁用,生产环境中应保持禁用。

rejection_sampler_config

注意:块验证和熵验证都能提升投机解码性能(更高的接受率、更低的延迟),但会降低采样精度。更大的 posterior_alpha 会使调整更激进——它会进一步降低高熵 token 的接受阈值,从而提高吞吐量但降低输出质量。用户应根据其具体模型权重和应用场景调整这些参数,以在性能和精度之间找到合适的平衡。

名称 类型 默认值 描述
enable_block_verify bool False 是否启用块验证模式。块验证使用累积概率乘积将所有草稿 token 作为一个块进行评估,可以提高接受率。
enable_entropy_verify bool False 是否启用熵验证模式。熵验证根据目标分布的熵调整接受阈值——高熵(不确定)token 获得更低的阈值(更容易接受),低熵(确定)token 获得更严格的阈值。
posterior_threshold float 0.95 熵调整接受阈值的上限。必须位于 (0, 1] 内。有效阈值为 min(exp(-entropy * posterior_alpha), posterior_threshold)。
posterior_alpha float 0.4 阈值计算中熵的缩放因子。必须 >= 0。更高的值会使阈值对熵更敏感——高熵 token 变得更容易接受,从而提升性能但降低精度。

dynamic_spec_config

注意:这是针对 model runner v1 的探索性功能。支持的方法为 "dspark"(DSpark 置信度头)和 "dflash"(无头;使用草稿 logits 上的 max-softmax 作为置信度代理)。仍然需要匹配的 speculative_config(method: "dspark" 或 "dflash");dynamic_spec_config 仅控制每个请求验证多少个草稿 token。用法和限制参见 动态投机解码。

名称 类型 默认值 描述
method str None 动态方法名称。支持的值:"dspark"、"dflash"。省略或设置为 None 以禁用。
method_params dict {} 方法特定的超参数。为空时,每种方法回退到其内置默认值。

dynamic_spec_config.method_params(当 method 为 "dspark" 或 "dflash" 时)

dspark 和 dflash 共享相同的调度超参数。区别仅在于如何估计每个 token 的接受置信度:DSpark 使用其置信度头(sigmoid),而 DFlash(无头)使用草稿 token 的 max(softmax(logits))。

名称 类型 默认值 描述
initial_verify_budget_per_req int 5 首次重计算之前的每个请求的初始验证预算。
budget_update_interval int 16 每 N 个解码步骤重新计算共享验证预算。
budget_threshold float 0.3 估计平均验证预算时使用的累积生存概率阈值。
min_verify_tokens int 1 每个请求验证的最少草稿 token 数。

scheduler_config.short_request_first_config

ShortRequestFirst 是用于 prefill 和 PD 混合路径上 FCFS 同步或异步调度的等待队列策略。它不支持批作业感知、profiling-chunk 或 PD 分离 D 节点调度。用法、行为和调优指南参见 ShortRequestFirst Prefill 调度。

名称 类型 默认值 描述
enabled bool False 是否启用 ShortRequestFirst 调度。
threshold int 256 提示长度阈值(token 数)。满足 num_prompt_tokens <= threshold 的请求被视为短 prefill,并优先于长 prefill。
long_max_wait_ms float 0.0 长 prefill 在短 prefill 之后等待的最长时间,超过后可被提升到它们之前。0 禁用长请求提升,并保持严格的短请求优先。

scheduler_config.batch_job_sched_config

名称 类型 默认值 描述
enabled bool false 启用批作业感知调度器。
max_jobs int 20 跟踪作业的最大数量。0 表示无限制。
reserve_margin_blocks int 2 作为安全缓冲添加到 KV 缓存预留中的额外块边距。
reserve_max_blocks int 8 可预留的最大块数。
名称 类型 默认值 描述
low_available_tokens_threshold int 4096 用于优先处理长解码任务与短解码任务的阈值。当可用 token 数大于阈值时,优先处理长解码任务;当 ≤ 阈值时,优先处理短解码任务。
short_decode_token_threshold int 32 用于将任务分类为“短解码”的阈值。

rl_config

rl_config 是一键 RL 模式开关。当 enabled 为 true 时,它会在每次初始化时刷新全局 Ascend 配置,强制设置 AscendConfig.weight_nz_mode=0,设置 VLLM_SERVER_DEV_MODE=1,并移除 PYTORCH_NPU_ALLOC_CONF 中的 expandable_segments 条目,同时记录一条信息日志。这些固定的 RL 行为不能作为 rl_config 子字段进行配置。当 enabled 为 false 时,所有其他子字段均被忽略。

当启用 RL 模式时,其固定的 NZ 设置优先于顶层 weight_nz_mode 配置。当 rl_config.enable_batch_invariant 为 false 时,VLLM_BATCH_INVARIANT=1 仍保持启用。

名称 类型 默认值 描述
enabled bool false RL 模式的主开关。当为 true 时,应用以下所有 RL 最佳实践默认值。
sleep_mode_extra_cleanup bool false 同设备模式。在睡眠期间启用 HCCL 进程组释放 + ACL 图工作区清理,以更高的唤醒延迟为代价,向训练器返回更多 NPU 内存。此选项仅在 rl_config 下可用;原顶层 enable_sleep_mode_extra_cleanup 键已移除。
enable_training_consistency bool false 两种模式。启用用于训练-推理一致性的 FA3 注意力后端。需要 flash_attn_npu_v3 包,并且不会隐式启用批不变性。
enable_batch_invariant bool false 两种模式。提供启用批不变确定性计算的另一种方式:当为 true 时,在工作进程启动前设置 VLLM_BATCH_INVARIANT=1。工作端批不变性初始化随后设置 HCCL_DETERMINISTIC=strict 和 LCCL_DETERMINISTIC=1。当为 false 时,保留已有的 VLLM_BATCH_INVARIANT 环境变量设置。需要使用 COMPILE_CUSTOM_KERNELS=1 从源码构建 vllm-ascend;RL 模式已强制 weight_nz_mode=0。

部署模式

  • 同设备模式(睡眠/唤醒 + IPC 权重传输):推理引擎和训练器共享同一张 NPU 卡。使用 enable_sleep_mode=True,并可选使用 sleep_mode_extra_cleanup=True 以获取额外内存。
  • 跨设备模式(暂停/恢复 + HCCL 权重传输):推理引擎和训练器使用不同的 NPU 卡。使用 --weight-transfer-config '{"backend": "nccl"}'。

示例(在线,同设备):

vllm serve DeepSeek-V4 \
    --enable-sleep-mode \
    --enable-return-routed-experts \
    --weight-transfer-config '{"backend": "ipc"}' \
    --additional-config '{"rl_config": {"enabled": true, "enable_training_consistency": true, "enable_batch_invariant": true, "sleep_mode_extra_cleanup": true}}'

示例(在线,跨设备):

vllm serve DeepSeek-V4 \
    --weight-transfer-config '{"backend": "nccl"}' \
    --additional-config '{"rl_config": {"enabled": true}}'

示例(离线):

from vllm import LLM

llm = LLM(
    model="DeepSeek-V4",
    enable_sleep_mode=True,  # same-device mode only
    additional_config={
        "rl_config": {
            "enabled": True,
            "enable_training_consistency": True,
            "enable_batch_invariant": True,
        },
    },
)

迁移指南

之前 之后
export VLLM_ASCEND_ENABLE_NZ=0 "rl_config": {"enabled": true}
export VLLM_SERVER_DEV_MODE=1 "rl_config": {"enabled": true}
export VLLM_BATCH_INVARIANT=1 "rl_config": {"enabled": true, "enable_batch_invariant": true}
--attention-backend FLASH_ATTN 用于 FA3 一致性模式 "rl_config": {"enabled": true, "enable_training_consistency": true}
用于 RL 的顶层 "weight_nz_mode": 0 "rl_config": {"enabled": true}
顶层 "enable_sleep_mode_extra_cleanup": true "rl_config": {"enabled": true, "sleep_mode_extra_cleanup": true}

示例

附加配置示例如下:

{
    "finegrained_tp_config": {
        "lmhead_tensor_parallel_size": 8,
        "oproj_tensor_parallel_size": 8,
        "embedding_tensor_parallel_size": 8,
        "mlp_tensor_parallel_size": 8,
    },
    "enable_kv_nz": False,
    "multistream_overlap_shared_expert": True,
    "rejection_sampler_config": {
        "enable_block_verify": True,
        "enable_entropy_verify": True,
        "posterior_threshold": 0.95,
        "posterior_alpha": 0.4,
    },
    "dynamic_spec_config": {
        "method": "dspark",
        "method_params": {
            "initial_verify_budget_per_req": 5,
            "budget_update_interval": 50,
            "budget_threshold": 0.7,
        },
    },
    "refresh": False
}

KV 流水线并行(KVPP)

在 --additional-config 中设置 enable_kvpp: true,可将持久化 MLA KV-cache 层分布在同一 DP 副本和 PP 阶段内的 TP 以及(配合 Model Runner V2)PCP rank 上。组大小为 TP x PCP:TP4 + PCP2 使用八个 rank;TP1 + PCP2 也会启用 KVPP。DP 副本和 PP 阶段使用独立的组。

PCP 需要 VLLM_USE_V2_MODEL_RUNNER=1。KVPP 仍要求 eager 执行和非混合 MLA,并且不支持 DCP 或 KV 传输连接器。PCP 在缓存写入前收集 prefill KV;层广播在注意力之前恢复先前前向的缓存内容。广播决策使用全局调度批,而不是 PCP 本地段偏移。

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