服务启动参数
xLLM使用gflags来管理服务启动参数,具体的参数含义如下:
常用参数
| 参数名称 | 类型 | 默认值 | 其他值 | 参数含义 | 其他 |
master_node_addr | string | "127.0.0.1:19888" | ip:port | master节点rpc server的监听地址 | 详情 |
host | string | "" | 当前device所在的机器ip | 当前device用于通信的host ip,每个device上会启动一个rpc server,用于多卡之间通信 | |
port | int32 | 8010 | 任意可用的端口 | 与host参数配套使用,组合后用于device间的rpc通信 | |
model | string | "" | | 模型所在的路径 | |
devices | string | "npu:0" | | 指定当前进程使用的NPU设备 | |
nnodes | int32 | 1 | | 当前服务所使用的device总数 | |
node_rank | int32 | 0 | 0 ~ device总数减1 | 每个device的rank id | |
max_memory_utilization | double | 0.8 | 0-1之间 | 模型权重和KV Cache一起可用的最大device memory占比 | |
max_tokens_per_batch | int32 | 10240 | | 每个step可计算的最大token数量 | |
max_seqs_per_batch | int32 | 1024 | | 每个step可计算的最大sequence数量 | |
enable_chunked_prefill | bool | true | false | 是否开启chunked prefill | |
enable_prefill_sp | bool | false | true | 是否开启 prefill 阶段的 sequence parallel | 支持 enable_chunked_prefill=true,但仅限纯 prefill batch(PREFILL / CHUNKED_PREFILL);MIXED 与 DECODE batch 不会进入 sequence parallel。 |
enable_schedule_overlap | bool | false | true | 是否开启异步调度 | 详情 |
enable_prefix_cache | bool | true | false | 是否开启prefix cache(DeepSeek暂不支持) | |
communication_backend | string | "hccl" | "lccl" | 通信操作采用的后端 | |
block_size | int32 | 128 | | KV Cache存储的block size大小 | |
task | string | "generate" | "embed", "mm_embed" | 服务类型,生成式、embedding或多模态embedding | |
max_cache_size | int64 | 0 | | 可使用的KV Cache大小,单位byte | |
kv_cache_dtype | string | "auto" | "int8" | KV Cache数据类型。"auto"表示与模型dtype对齐(不量化),"int8"启用INT8量化以节省约50%显存。仅MLU后端支持 | |
MOE模型相关参数
| 参数名称 | 类型 | 默认值 | 其他值 | 参数含义 | 其他 |
dp_size | int32 | 1 | 2的指数 | Attention部分的dp规模大小 | |
ep_size | int32 | 1 | 2的指数 | MoE部分的ep规模大小 | |
expert_parallel_degree | int32 | 0 | 1,2 | ep并行相关参数,gflag默认值为0;当ep_size > 1且未显式配置时,部分NPU MoE实现会按EP Level 1处理;当ep_size=devices总数时可设置为2(使用all2all通信) | |
支持 MLA 的模型会自动开启 MLA,不再需要单独配置 CLI 参数。
PD分离相关参数
| 参数名称 | 类型 | 默认值 | 其他值 | 参数含义 | 其他 |
enable_disagg_pd | bool | false | true | 是否启动PD分离 | 详情 |
disagg_pd_port | int32 | 7777 | 任意可用的端口 | 启用PD分离后配置,对应每张卡上启动的pd分离rpc server的监听端口号 | |
instance_role | string | DEFAULT | PREFILL DECODE MIX | 默认情况下为DEFAULT,开启PD分离后需要配置为PREFILL、DECODE或者MIX | |
kv_cache_transfer_mode | string | "PUSH" | "PULL" | PD分离传输KV Cache的模式。PUSH模式:Prefill逐层向Decode传输;PULL模式:Decode一次性拉取Prefill的KV Cache | |
transfer_listen_port | int32 | 26000 | 任意可用的端口 | 启用PD分离后配置,对应每张卡上KV Cache Transfer的监听端口 | |
MTP相关参数
| 参数名称 | 类型 | 默认值 | 其他值 | 参数含义 | 其他 |
draft_model | string | "" | | MTP模型所在的路径 | 详情 |
draft_devices | string | "npu:0" | 与devices格式保持一致,如npu:0或npu:0,npu:1 | 与devices设置保持一致 | |
num_speculative_tokens | int32 | 0 | 任意整数,建议1或者2 | MTP模型每次step输出token的个数 | |
图执行相关参数
| 参数名称 | 类型 | 默认值 | 其他值 | 参数含义 | 其他 |
enable_graph | bool | false | true | 是否启用图执行模式优化decode阶段性能。仅用于decode阶段,对prefill阶段不生效。支持ACL Graph(NPU)、MLU Graph。 | 详情 |
enable_graph_mode_decode_no_padding | bool | false | true | decode阶段按实际num_tokens建图,而不是按padding后的shape建图 | |
enable_prefill_piecewise_graph | bool | false | true | 是否启用prefill阶段的分段Graph。attention以eager执行,其他算子进入图捕获。 | |
max_tokens_for_graph_mode | int32 | 2048 | 任意大于等于0的整数 | 图执行模式最大token数。为0表示不限制。 | |
配套xLLM-service使用的参数
| 参数名称 | 类型 | 默认值 | 其他值 | 参数含义 | 其他 |
etcd_addr | string | "" | ip:port | etcd的rpc server监听地址 | |
enable_service_routing | bool | false | true | 请求是否来自xllm service,当使用xllm service管理xllm实例时使用 | |
其他参数
| 参数名称 | 类型 | 默认值 | 其他值 | 参数含义 | 其他 |
max_concurrent_requests | int32 | 200 | 任意大于等于0的整数 | 限流用,限制实例中正在处理的总请求数;设置为0表示不限流 | |
model_id | string | "" | | 模型名称,非路径 | |
num_request_handling_threads | int32 | 4 | 任意大于0的整数 | 处理输入请求的线程池大小 | |
num_response_handling_threads | int32 | 4 | 任意大于0的整数 | 处理输出的线程池大小 | |
prefill_scheduling_memory_usage_threshold | double | 0.95 | 0-1之间的值 | 当kv cache使用量达到该阈值时,暂停prefill请求的调度 | |
rank_tablefile | string | "" | | 创建通信域的配置文件,多机场景需要 | |