服务器参数#
本页提供命令行中用于配置语言模型服务器部署期间行为和性能的服务器参数列表。这些参数使用户能够自定义服务器的关键方面,包括模型选择、并行策略、内存管理和优化技术。
常用启动命令#
要启用多 GPU 张量并行,添加
--tp 2
。如果报告错误“这些设备之间不支持对等访问”,请在服务器启动命令中添加--enable-p2p-check
。python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3-8B-Instruct --tp 2
要启用多 GPU 数据并行,添加
--dp 2
。如果有足够的内存,数据并行对于提高吞吐量更好。它也可以与张量并行一起使用。以下命令总共使用 4 个 GPU。我们推荐使用 SGLang 路由器进行数据并行。python -m sglang_router.launch_server --model-path meta-llama/Meta-Llama-3-8B-Instruct --dp 2 --tp 2
如果在服务期间出现内存不足错误,请尝试通过设置较小的
--mem-fraction-static
值来减少 KV 缓存池的内存使用。默认值为0.9
。python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3-8B-Instruct --mem-fraction-static 0.7
请参阅 超参数调优,了解如何调优超参数以获得更好的性能。
对于 Docker 和 Kubernetes 运行,您需要设置共享内存,用于进程间通信。请参阅 Docker 的
--shm-size
以及 Kubernetes 清单中/dev/shm
大小的更新。如果在处理长提示的预填充期间出现内存不足错误,请尝试设置较小的分块预填充大小。
python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3-8B-Instruct --chunked-prefill-size 4096
要启用
torch.compile
加速,添加--enable-torch-compile
。它可以加速小批量大小的小模型。默认情况下,缓存路径位于/tmp/torchinductor_root
,您可以使用环境变量TORCHINDUCTOR_CACHE_DIR
进行自定义。更多详情,请参考 PyTorch 官方文档 和 启用 torch.compile 缓存。要启用 torchao 量化,添加
--torchao-config int4wo-128
。它也支持其他量化策略 (INT8/FP8)。要启用 fp8 权重量化,在 fp16 检查点上添加
--quantization fp8
,或者直接加载 fp8 检查点而无需指定任何参数。要启用 fp8 KV 缓存量化,添加
--kv-cache-dtype fp8_e5m2
。如果 Hugging Face 分词器中的模型没有聊天模板,您可以指定一个自定义聊天模板。
要在多个节点上运行张量并行,添加
--nnodes 2
。如果您有两个节点,每个节点有两个 GPU,并想运行 TP=4,假设sgl-dev-0
是第一个节点的主机名,50000
是一个可用端口,您可以使用以下命令。如果遇到死锁,请尝试添加--disable-cuda-graph
。# Node 0 python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3-8B-Instruct --tp 4 --dist-init-addr sgl-dev-0:50000 --nnodes 2 --node-rank 0 # Node 1 python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3-8B-Instruct --tp 4 --dist-init-addr sgl-dev-0:50000 --nnodes 2 --node-rank 1
请查阅下面的文档和 server_args.py,以了解更多关于启动服务器时可以提供的参数的信息。
模型、处理器和分词器#
参数 |
描述 |
默认值 |
---|---|---|
|
模型权重的路径。可以是本地文件夹或 Hugging Face 仓库 ID。 |
None |
|
分词器的路径。默认为 |
None |
|
参见不同模式。 |
|
|
要加载的模型权重的格式。 |
|
|
是否允许 Hub 上自定义的模型在自己的建模文件中定义。 |
|
|
模型使用的数据类型 (Dtype)。 |
|
|
KV 缓存的数据类型 (Dtype)。 |
|
|
模型的最大上下文长度。默认为 None(将使用模型 config.json 中的值)。请注意,延长默认值可能会导致异常行为。 |
None |
|
放置模型的设备。 |
None |
|
覆盖 OpenAI API 服务器中 v1/models 端点返回的模型名称。 |
None |
|
|
|
|
调整以使用模型的特定版本。 |
None |
|
设置为 |
|
|
一个 JSON 字符串格式的字典,用于覆盖默认的模型配置。 |
|
|
采用基础图像处理器而不是快速图像处理器(默认)。参见详情。 |
|
服务:HTTP 和 API#
HTTP 服务器配置#
参数 |
描述 |
默认值 |
---|---|---|
|
HTTP 服务器的主机。 |
|
|
HTTP 服务器的端口。 |
|
API 配置#
参数 |
描述 |
默认值 |
---|---|---|
|
为服务器和兼容 OpenAI 的 API 设置 API 密钥。 |
None |
|
存储 API 调用上传或生成文件的目录。 |
|
|
如果设置,在响应使用情况中包含缓存 token 的详细使用情况。 |
|
并行性#
张量并行#
参数 |
描述 |
默认值 |
---|---|---|
|
模型权重分片的 GPU 数量。主要用于节省内存而非提高吞吐量,参见此教程:张量并行如何工作?。 |
|
数据并行#
参数 |
描述 |
默认值 |
---|---|---|
|
对于非 DeepSeek 模型,这是模型的数据并行副本数量。对于 DeepSeek 模型,这是 DeepSeek 模型上数据并行 Attention 的组大小。 |
|
|
即将弃用。数据并行请求的负载均衡策略。 |
|
专家并行#
参数 |
描述 |
默认值 |
---|---|---|
|
启用专家并行,将专家分布到多个 GPU 上用于 MoE 模型。 |
|
|
EP 的大小。请使用 |
|
|
基于 |
|
|
使用 DeepEP MoE 时选择模式:可以是 |
|
内存和调度#
参数 |
描述 |
默认值 |
---|---|---|
|
用于模型权重和 KV 缓存等静态内存的空闲 GPU 内存比例。如果 KV 缓存构建失败,则增加它;如果 CUDA 内存不足,则减少它。 |
None |
|
同时运行的最大请求数。 |
None |
|
可以在 KV 缓存中存储的最大 token 数量。主要用于调试。 |
None |
|
以指定大小的块执行预填充。较大的块大小会加快预填充速度,但会增加 VRAM 使用量。如果 CUDA 内存不足,则减少它。 |
None |
|
一个预填充批次中可以接受的 token 数量的预算。实际限制是此值与 |
|
|
调度策略,控制单个引擎如何处理等待的预填充请求。 |
|
|
控制服务器在接受新的预填充请求时的保守程度。高保守性可能导致饥饿,低保守性可能减慢解码速度。 |
|
|
为将模型参数卸载到 CPU 而保留的 RAM 量(以 GB 为单位)。 |
|
其他运行时选项#
参数 |
描述 |
默认值 |
---|---|---|
|
流式响应的间隔(以 token 为单位)。较小的值导致更流畅的流式传输;较大的值提高吞吐量。 |
|
|
可用于强制更确定的行为。 |
None |
|
看门狗线程的超时设置,如果在批量生成花费时间过长时,它会杀死服务器。 |
|
|
覆盖 Hugging Face 模型权重的默认缓存目录。 |
None |
|
设置在多个 GPU 上分发模型时使用的第一个 GPU。 |
|
|
自动截断超出最大输入长度的请求。 |
|
日志记录#
参数 |
描述 |
默认值 |
---|---|---|
|
全局日志详细程度。 |
|
|
HTTP 服务器日志的单独详细程度。 |
None |
|
记录所有请求的输入和输出以进行调试。 |
|
|
范围从 0 到 2:级别 0 只显示请求中的一些基本元数据,级别 1 和 2 显示请求详细信息(例如,文本、图像),级别 1 将输出限制为 2048 个字符。 |
|
|
打印或记录内部操作的详细计时信息(有助于性能调优)。 |
|
|
导出类似 Prometheus 的指标,用于请求使用和性能。 |
|
|
记录解码进度的频率(以 token 为单位)。 |
|
多节点分布式服务#
参数 |
描述 |
默认值 |
---|---|---|
|
用于初始化 PyTorch 分布式后端的 TCP 地址(例如 |
None |
|
集群中的节点总数。参见Llama 405B 指南。 |
|
|
在分布式设置中,此节点在 |
|
LoRA#
参数 |
描述 |
默认值 |
---|---|---|
|
要应用于模型的适配器列表。每个批次元素使用适当的 LoRA 适配器。此功能不支持 |
None |
|
运行中的批次允许的最大 LoRA 数量,包括基础模型。 |
|
|
用于运行 LoRA 模块的 GEMM 内核的后端。可以是 |
|
内核后端#
参数 |
描述 |
默认值 |
---|---|---|
|
此参数指定用于 Attention 计算和 KV 缓存管理的后端,可以是 |
None |
|
指定用于采样的后端。 |
None |
|
设置多模态 Attention 后端。 |
约束解码#
推测解码#
参数 |
描述 |
默认值 |
---|---|---|
|
推测解码的草稿模型路径。 |
None |
|
推测解码算法。目前支持 EAGLE 和 EAGLE3。请注意,使用 Eagle 推测解码时,禁用 Radix 缓存、分块预填充和重叠调度器。 |
None |
|
在验证之前运行多少次草稿 passes。 |
None |
|
草稿中提出的 token 数量。 |
None |
|
对于 Eagle,每一步保留用于验证的 top 候选数量。 |
None |
|
None |
调试选项#
注意:我们建议保持默认设置,仅在调试时使用这些选项以获得最佳性能。
参数 |
描述 |
默认值 |
---|---|---|
|
禁用用于前缀缓存的 Radix 后端。 |
|
|
禁用用于模型前向计算的 CUDA Graph。在遇到无法更正的 CUDA ECC 错误时使用。 |
|
|
在需要填充时禁用 CUDA Graph;否则,仍然使用 CUDA Graph。 |
|
|
禁用 outlines 语法后端的磁盘缓存。 |
|
|
禁用自定义 all-reduce 内核的使用。 |
|
|
|
|
|
如果 logits 包含 |
|
|
关闭默认始终允许访问 GPU 时进行 P2P 检查的设置。 |
|
|
在 Triton 内核中,将中间 Attention 结果转换为 |
|
优化#
注意:其中一些选项仍在实验阶段。
参数 |
描述 |
默认值 |
---|---|---|
|
启用预填充和解码混合,参见此讨论。 |
|
|
为 Deepseek 模型启用数据并行 Attention。 |
|
|
使用 Torch 编译模型。请注意,编译模型需要很长时间,但能极大地提升性能。编译后的模型也可以缓存以供将来使用。 |
|
|
使用 |
|
|
调整使用 CUDA Graph 时的最大批量大小。默认情况下,这将根据 GPU 特定信息为您选择。 |
None |
|
由 |
None |
|
使用 torchao 优化模型的实验性功能。可能的选择有:int8dq, int8wo, int4wo-<group_size>, fp8wo, fp8dq-per_tensor, fp8dq-per_row。 |
|
|
用于调整 triton 内核中 KV 分割的数量。 |
|
|
对于 FlashInfer MLA Attention 后端,禁用 ragged prefill 包装器的使用。当没有前缀匹配时,ragged prefill 通过计算 MHA 而不是分页 MLA 来提高吞吐量。仅在 FlashInfer 用作 MLA 后端时使用此选项。 |
|
|
禁用 DeepSeek 模型的分块前缀缓存使用。仅在 FA3 用作 Attention 后端时使用此选项。 |
|
|
在 Attention TP 组中启用词汇并行,以避免跨 DP 组进行 all-gather,优化 DP Attention 下的性能。 |
|