What this PR does / why we need it? Enable kvcache_nz for the decode process in torchair graph mode, which reduces the time consumed by FA in long sequences. Does this PR introduce any user-facing change? If need to enable kvcache_nz, should set the additional_config.torchair_graph_config.enable_kv_nz=True How was this patch tested? 1. Tested in deepseek model: with batchsize 64 and seq_len 1k+3k, 61 layers FA total time improves 20.80ms -> 19.76ms 2. operator precision test: [aclnnFusedInferAttentionScoreV3_result.csv](https://github.com/user-attachments/files/20664138/aclnnFusedInferAttentionScoreV3_result.csv) 3. tpot test from @ttanzhiqiang, and curl one result is normal https://github.com/vllm-project/vllm-ascend/pull/1098#issuecomment-2948542159 https://github.com/vllm-project/vllm-ascend/pull/1098#issuecomment-2954496588 --------- Signed-off-by: chenwaner <861645847@qq.com>
3.3 KiB
3.3 KiB
Additional Configuration
addintional configuration is a mechanism provided by vLLM to allow plugins to control inner behavior by their own. vLLM Ascend uses this mechanism to make the project more flexible.
How to use
With either online mode or offline mode, users can use additional configuration. Take Qwen3 as an example:
Online mode:
vllm serve Qwen/Qwen3-8B --additional-config='{"config_key":"config_value"}'
Offline mode:
from vllm import LLM
LLM(model="Qwen/Qwen3-8B", additional_config={"config_key":"config_value"})
Configuration options
The following table lists the additional configuration options available in vLLM Ascend:
| Name | Type | Default | Description |
|---|---|---|---|
torchair_graph_config |
dict | {} |
The config options for torchair graph mode |
ascend_scheduler_config |
dict | {} |
The config options for ascend scheduler |
expert_tensor_parallel_size |
str | 0 |
Expert tensor parallel size the model to use. |
refresh |
bool | false |
Whether to refresh global ascend config content. This value is usually used by rlhf case. |
expert_map_path |
str | None | When using expert load balancing for the MOE model, an expert map path needs to be passed in. |
The details of each config option are as follows:
torchair_graph_config
| Name | Type | Default | Description |
|---|---|---|---|
enabled |
bool | False |
Whether to enable torchair graph mode |
enable_multistream_moe |
bool | False |
Whether to enable multistream shared expert |
enable_view_optimize |
bool | True |
Whether to enable torchair view optimization |
use_cached_graph |
bool | False |
Whether to use cached graph |
graph_batch_sizes |
list[int] | [] |
The batch size for torchair graph cache |
graph_batch_sizes_init |
bool | False |
Init graph batch size dynamically if graph_batch_sizes is empty |
enable_kv_nz |
bool | False |
Whether to enable kvcache NZ layout |
ascend_scheduler_config
| Name | Type | Default | Description |
|---|---|---|---|
enabled |
bool | False |
Whether to enable ascend scheduler for V1 engine |
ascend_scheduler_config also support the options from vllm scheduler config. For example, you can add chunked_prefill_enabled: true to ascend_scheduler_config as well.
Example
A full example of additional configuration is as follows:
{
"torchair_graph_config": {
"enabled": true,
"use_cached_graph": true,
"graph_batch_sizes": [1, 2, 4, 8],
"graph_batch_sizes_init": false,
"enable_multistream_moe": false,
"enable_kv_nz": false
},
"ascend_scheduler_config": {
"enabled": true,
"chunked_prefill_enabled": true,
},
"expert_tensor_parallel_size": 1,
"refresh": false,
}