根据在工作中部署模型踩的坑而总结的经验,整理部署模型时应该加的docker参数及vLLM/SGLang 推理引擎参数

环境变量

环境变量说明示例
CUDA_VISIBLE_DEVICES指定模型运行在的卡号CUDA_VISIBLE_DEVICES=3CUDA_VISIBLE_DEVICES=2,3
TZ设置容器内时区,影响推理引擎输出日志中的时间戳TZ=Asia/Shanghai

容器启动参数

vLLM 和 SGLang 的容器启动参数基本一致,统一整理如下:

参数说明
--ipc=host使用主机 IPC 命名空间,PyTorch 多进程数据加载需要足够的共享内存
--network host使用主机网络,推理引擎直接绑定主机端口
--shm-size共享内存大小(/dev/shm);服务器资源充足情况下,建议至少256G+,可以设置成500G;实践发现这个值如果设置的比较小会导致有的模型输出”胡言乱语“,比如对于 DeepSeek-V4-Pro,设置成50G会胡言乱语,设置为128G+则正常
--gpus all分配所有 GPU;也支持--gpus '"device=2,3"' 来限制,但是实践过程中发现有时候并不能真的限制(比如使用 vLLM 时),还是需要使用CUDA_VISIBLE_DEVICES变量来限制
--privileged特权模式,允许容器访问主机所有设备(如 InfiniBand 设备)
--cap-add=IPC_LOCK允许锁定内存页,防止被换出到 swap,对 RDMA/InfiniBand 通信必要
--cap-add=SYS_ADMIN系统管理权限,部分 NUMA 绑定操作需要
--cap-add=SYS_NICE允许调整进程优先级,推理引擎会设置线程的 CPU 亲和性和调度优先级
--ulimit memlock=-1取消内存锁定限制(-1 表示无限制),配合 IPC_LOCK 使用
--ulimit stack=67108864设置线程栈大小为 64MB(67108864 bytes),深度模型前向传播时栈需求大
--device=/dev/infiniband挂载 InfiniBand 设备,多节点分布式推理需要 RDMA 通信(如使用 NCCL/Ray)
-v /data/model:/data/model挂载模型权重目录
-e TZ=Asia/Shanghai设置容器时区
--restart unless-stopped异常退出时自动重启

示例

以下仅展示容器参数,不包含引擎参数

docker run -itd --name vllm \
    -v /data/model:/data/model \
    -e TZ=Asia/Shanghai \
    --ipc=host \
    --network host \
    --shm-size 500G \
    --gpus all \
    --privileged \
    --cap-add=IPC_LOCK \
    --cap-add=SYS_ADMIN \
    --cap-add=SYS_NICE \
    --ulimit memlock=-1 \
    --ulimit stack=67108864 \
    --restart unless-stopped \
    vllm/vllm-openai:latest \
    /data/model/DeepSeek-V3.2

vLLM

引擎必加参数

参数默认值说明
--served-model-name模型路径名指定调用模型时使用的名称,客户端请求 API 时使用此名称
--enable-prefix-cachingTrue开启前缀缓存(Automatic Prefix Caching),相同前缀的请求可复用 KV Cache,显著提升多轮对话和系统提示词复用场景性能
--enable-auto-tool-choiceFalse自动选择工具,启用后模型可自动判断何时调用工具
--gpu-memory-utilization0.92GPU 显存利用率(0~1),vLLM 为模型执行器预留的显存比例,剩余用于 KV Cache
--enable-chunked-prefill自动启用分块预填充,将长 prompt 的 prefill 分块处理,降低首 token 延迟(TTFT)
--max-num-batched-tokens自动单次迭代最大批处理 token 数,控制 prefill 阶段的批大小上限
--enable-prompt-tokens-detailsFalse在 API 响应的 usage.prompt_tokens_details 中返回缓存的 token 数等详细信息
--reasoning-parser推理内容解析器
--tool-call-parser工具调用解析器
--trust-remote-codeFalse允许执行 HuggingFace 远程代码(某些自定义模型需要)
--host127.0.0.1服务器监听地址,生产部署通常设为 0.0.0.0
--port8000服务器监听端口

注意:

  1. vLLM 默认在主端口的 /metrics 路径暴露 Prometheus 指标,无需额外参数

引擎常用参数

参数默认值说明
--max-num-seqs自动单次迭代最大序列数,控制并发请求数上限
--kv-cache-dtypeautoKV Cache 数据类型:auto/fp8_e4m3/fp8_e5m2/bfloat16。使用 FP8 可减少约一半 KV Cache 显存
--tensor-parallel-size / -tp1张量并行数,跨 GPU 切分模型层,需相同数量 GPU
--pipeline-parallel-size / -pp1流水线并行数,跨 GPU 切分模型层,支持跨节点
--data-parallel-size / -dp1数据并行数,每个 DP 副本独立处理请求
--enable-expert-parallel / -epFalse对 MoE 模型使用专家并行而非张量并行
--max-model-len自动推导模型最大上下文长度(prompt + output),支持 k/m/g 格式如 8k32k

推测解码(Speculative Decoding / MTP)

vLLM 的推测解码参数统一通过 --speculative-config / -sc 以 JSON 对象传递,不再使用单独的 --speculative-* 顶层参数。

JSON CLI 参数传递方式:vLLM 支持两种等价的 JSON 参数传递方式——JSON 字符串或逐键点分写法,以下两种写法完全等价:

# 方式一:JSON 字符串
--speculative-config '{"method":"mtp","num_speculative_tokens":1}'

# 方式二:逐键点分写法
--speculative-config.method mtp --speculative-config.num_speculative_tokens 1

嵌套键用 . 连接,例如 --speculative-config.draft_tensor_parallel_size 1

参数默认值说明
--speculative-config / -sc推测解码配置入口,接受 JSON 字符串或逐个键值对

--speculative-config JSON 通用键:

https://docs.vllm.ai/en/latest/api/vllm/config/speculative/#vllm.config.speculative

键名类型默认值说明
methodstringNone推测方法:draft_model / ngram / suffix / mtp / eagle / eagle3 / dflash / custom_class。省略时 vLLM 尝试从配置自动推断
modelstringNone草稿模型名称、EAGLE 头或辅助模型标识符。ngram/suffix/mtp 方法通常可省略
num_speculative_tokensint > 0None每步提议的推测 token 数量。对于无法从模型元数据推断的方法为必填项
draft_tensor_parallel_sizeint >=1None草稿模型的张量并行度,只能是 1 或与目标模型的 TP 相同
parallel_draftingboolfalse启用并行起草,所有推测 token 并行生成而非顺序生成。仅与 EAGLE 和 draft_model 方法兼容

Docker 启动示例

docker run -itd --name vllm \
    -v /data/model:/data/model \
    -v /model:/model \
    -e TZ=Asia/Shanghai \
    --ipc=host \
    --network host \
    --shm-size 500G \
    --gpus all \
    --privileged \
    --cap-add=IPC_LOCK \
    --cap-add=SYS_ADMIN \
    --cap-add=SYS_NICE \
    --ulimit memlock=-1 \
    --ulimit stack=67108864 \
    --restart unless-stopped \
    vllm/vllm-openai:latest \
    /model/DeepSeek-V3.2 \
    --served-model-name deepseek-v3 \
    --enable-prefix-caching \
    --enable-auto-tool-choice \
    --gpu-memory-utilization 0.95 \
    --enable-prompt-tokens-details

进入容器调试

vLLM 镜像中设置的 entrypoint 是 vllm serve,如果需要启动一个容器方便测试部署命令,可以在运行容器时通过 --entrypoint 指定 entrypoint:

docker run -itd --name vllm \
    -v /data/model:/data/model \
    -v /model:/model \
    -e TZ=Asia/Shanghai \
    --ipc=host \
    --network host \
    --shm-size 50G \
    --gpus all \
    --privileged \
    --cap-add=IPC_LOCK \
    --cap-add=SYS_ADMIN \
    --cap-add=SYS_NICE \
    --ulimit memlock=-1 \
    --ulimit stack=67108864 \
    --entrypoint /bin/bash \
    --restart unless-stopped \
    vllm/vllm-openai:latest

SGLang

引擎必加参数

参数默认值说明
--served-model-nameNone覆盖 OpenAI API /v1/models 端点返回的模型名称
--enable-cache-reportFalse在返回结果的 usage.prompt_tokens_details 中返回 cached token 数量
--host127.0.0.1HTTP 服务器地址
--port30000HTTP 服务器端口
--enable-metricsFalse启用 Prometheus 监控指标
--trust-remote-codeFalse允许执行 HuggingFace 远程代码
--context-lengthNone覆盖模型最大上下文长度,不指定则使用模型 config.json 中的值
--mem-fraction-staticNone(自动)模型权重 + KV Cache 占用的显存比例,显存不足时可调小此值
--chunked-prefill-sizeNone分块预填充每个 chunk 的最大 token 数,设为 -1 则禁用分块预填充
--max-prefill-tokens16384单个 prefill batch 最大 token 数
--reasoning-parserNone推理模型解析器:deepseek-r1/deepseek-v3/glm45/gpt-oss/kimi/qwen3/qwen3-thinking/step3
--tool-call-parserNone工具调用解析器:deepseekv3/deepseekv31/glm/glm45/glm47/gpt-oss/kimi_k2/llama3/mistral/pythonic/qwen/qwen25/qwen3_coder/step3
--allow-auto-truncateFalse允许自动截断超出最大输入长度的请求,而不是返回错误

引擎常用参数

内存与调度/并行策略等

参数默认值说明
--max-running-requestsNone最大同时运行的请求数
--max-queued-requestsNone最大排队请求数
--max-total-tokensNone内存池中的最大 token 数,不指定则根据显存比例自动计算
--kv-cache-dtypeautoKV Cache 数据类型:auto/fp8_e5m2/fp8_e4m3/bf16/bfloat16/fp4_e2m1
--tensor-parallel-size / --tp-size / --tp1张量并行数
--pipeline-parallel-size / --pp-size1流水线并行数
--data-parallel-size / --dp-size1数据并行数
--expert-parallel-size / --ep-size / --ep1专家并行数(MoE 模型)
--moe-a2a-backendnoneMoE 专家并行 All-to-All 通信后端:none/deepep/mooncake/mori/nixl/ascend_fuseep
--dist-init-addr / --nccl-init-addrNone多节点分布式初始化地址(如 192.168.0.2:25000
--nnodes1多节点推理的节点数
--node-rank0当前节点的 rank

内核后端

参数默认值说明
--attention-backendNone注意力层内核后端:triton/flashinfer/fa3/fa4/flashmla/trtllm_mla 等
--fp8-gemm-backendautoFP8 GEMM 后端:auto/deep_gemm/flashinfer_trtllm/flashinfer_cutlass/cutlass/triton
--moe-runner-backendautoMoE 计算后端:auto/deep_gemm/triton/flashinfer_trtllm/flashinfer_cutlass/cutlass

推测解码

参数默认值说明
--speculative-algorithmNone推测解码算法:EAGLE/EAGLE3/NEXTN/STANDALONE/NGRAM
--speculative-draft-model-pathNone草稿模型路径
--speculative-num-stepsNone草稿模型采样步数
--speculative-eagle-topkNoneEAGLE 每步采样的 token 数

Docker 启动示例

docker run -itd --name sgl \
    -v /data/model:/data/model \
    -e TZ=Asia/Shanghai \
    --restart unless-stopped \
    --ipc=host \
    --network host \
    --shm-size 500G \
    --gpus all \
    --privileged \
    --cap-add=IPC_LOCK \
    --cap-add=SYS_ADMIN \
    --cap-add=SYS_NICE \
    --ulimit memlock=-1 \
    --ulimit stack=67108864 \
    lmsysorg/sglang:latest \
    sglang serve \
      --model-path /data/model/MiniMax--MiniMax-M2.7 \
      --enable-cache-report \
      --enable-metrics \
      --mem-fraction-static 0.9

两个引擎参数对照表

功能vLLMSGLang
模型路径位置参数(如 /model/xxx--model-path
API 模型名称--served-model-name--served-model-name
GPU 显存比例--gpu-memory-utilization (0.92)--mem-fraction-static (自动)
KV Cache 数据类型--kv-cache-dtype--kv-cache-dtype
前缀缓存--enable-prefix-caching默认启用(RadixAttention)
分块预填充--enable-chunked-prefill--chunked-prefill-size
张量并行--tensor-parallel-size / -tp--tensor-parallel-size / --tp-size / --tp
流水线并行--pipeline-parallel-size / -pp--pipeline-parallel-size / --pp-size
数据并行--data-parallel-size / -dp--data-parallel-size / --dp-size
量化方法--quantization / -q--quantization
监听地址--host (127.0.0.1)--host (127.0.0.1)
监听端口--port (8000)--port (30000)
推理解析器--reasoning-parser--reasoning-parser
工具调用--enable-auto-tool-choice + --tool-call-parser--tool-call-parser
缓存 token 报告--enable-prompt-tokens-details--enable-cache-report
Prometheus 指标默认在 /metrics 暴露--enable-metrics(需显式开启)
信任远程代码--trust-remote-code--trust-remote-code
最大上下文长度--max-model-len--context-length
推测解码--speculative-config / -sc(JSON 对象)--speculative-algorithm + 相关参数
最大并发序列数--max-num-seqs--max-running-requests