cxl
Published on 2025-05-10 / 17 Visits
0
0

SGLang常用命令

记录一下在网上搜罗的平常使用SGLang中可能会经常用到的一些命令以及选项

一、基础配置

参数

类型

说明

示例/建议值

--model-path

必需

模型路径(支持 HuggingFace 或本地路径)

/mnt/disk1/LLM/QwQ-32B

--host

可选

服务监听地址(默认 127.0.0.1

0.0.0.0(开放外部访问)

--port

可选

服务端口号

4000

--device

可选

运行设备(默认 cuda

cuda(GPU) 或 cpu(调试用)

二、模型与分词器

参数

说明

注意事项

--dtype

模型计算精度(默认 bfloat16

half(FP16)、float32(高精度调试)

--trust-remote-code

信任远程代码(加载自定义模型必需)

需确认模型来源可信

--kv-cache-dtype

KV 缓存数据类型(默认同 dtype

auto(自动选择)、fp8_e5m2(FP8 优化)

--reasoning-parser

指定推理解析器(针对特定模型)

deepseek-r1(DeepSeek R1 专用)

三、并行策略

参数

说明

性能影响

--tp

张量并行 GPU 数(模型切分)

4(4卡切分模型权重)

--dp

数据并行 GPU 数(已弃用,推荐 sglang_router

需结合 --tp 使用

--nnodes

分布式多节点部署的总节点数

需配合 --dist-init-addr 指定通信地址

四、内存与调度

参数

说明

调优建议

--max-total-tokens

KV 缓存最大容量(单位:Token)

96000(根据 GPU 显存调整)

--mem-fraction-static

静态内存(模型+KV缓存)占显存比例

0.9(显存不足时降低)

--max-prefill-tokens

单次预填充 Token 上限

16384(长文本需增大)

--chunked-prefill-size

分块预填充的块大小

4096(长提示词显存不足时减小)

--schedule-policy

请求调度策略

lpm(最长前缀优先)、fcfs(先到先得)

五、服务与API

参数

说明

功能特性

--stream-output

启用流式输出(逐 Token 返回)

需前端兼容 SSE 协议

--stream-interval

流式输出间隔(单位:Token)

2(每生成 2 个 Token 返回一次)

--enable-metrics

启用 Prometheus 格式性能指标导出

结合监控系统使用

六、内核与后端

参数

说明

兼容性要求

--attention-backend

注意力计算后端

flashinfer(高性能)、triton(通用)

--triton-attention-num-kv-splits

Triton 核的 KV 切分数

4(根据 GPU 架构调整)

--disable-cuda-graph-padding

禁用 CUDA Graph 填充优化

解决特定 CUDA 兼容性问题

七、调试与优化

参数

说明

使用场景

--warmups

预热次数(冷启动优化)

3(生产环境推荐 5-10 次)

--enable-torch-compile

启用 Torch 编译加速(小批量有效)

首次编译耗时较长

--disable-cuda-graph

禁用 CUDA Graph

遇到 CUDA ECC 错误时启用

八、高级功能

参数

说明

专用场景

--reasoning-parser

结构化推理解析器

deepseek-r1(DeepSeek R1 模型专用)

--lora_paths

加载 LoRA 适配器列表

多任务适配(需禁用 CUDA Graph)

--speculative-draft-model-path

推测解码草稿模型路径

加速生成(需 Eagle 算法支持)

九、日志与监控

参数

说明

输出级别

--log-level

全局日志级别

INFODEBUG

--log-requests

记录请求的输入输出(调试用)

注意隐私数据泄露风险

--enable-metrics

导出 Prometheus 指标

集成到 Grafana 等监控系统

十、其他关键参数

参数

说明

默认值

--max-running-requests

最大并发请求数

6(根据 GPU 算力调整)

--cpu-offload-gb

CPU 显存卸载保留量(GB)

0(不启用)

--random-seed

随机种子(控制确定性)

系统随机

完整命令示例

  python3 -m sglang.launch_server \
  --model-path /mnt/disk1/LLM/QwQ-32B \
  --host 0.0.0.0 \
  --port 4000 \
  --dtype half \
  --trust-remote-code \
  --tp 4 \
  --max-total-tokens 96000 \
  --max-running-requests 6 \
  --mem-fraction-static 0.9 \
  --max-prefill-tokens 16384 \
  --chunked-prefill-size 4096 \
  --schedule-policy lpm \
  --attention-backend flashinfer \
  --stream-output \
  --device cuda \
  --kv-cache-dtype auto \
  --stream-interval 2 \
  --disable-cuda-graph-padding \
  --enable-metrics \
  --warmups 3 \
  --triton-attention-num-kv-splits 4 \
  --reasoning-parser deepseek-r1

关键配置总结

  1. 性能调优

    • 通过 --tp + --chunked-prefill-size 平衡显存与吞吐。

    • 使用 --warmups 减少冷启动延迟。

  2. 生产部署

    • 务必设置 --enable-metrics 监控服务状态。

    • 多节点时通过 --dist-init-addr 指定通信地址。

  3. DeepSeek 专用

    • --reasoning-parser deepseek-r1 启用定制推理逻辑。

    • 配合 --quantization fp8 实现高效量化。

命令参数附录

  -h, --help   显示帮助信息并退出
  --model-path MODEL_PATH模型权重的路径。可以是本地文件夹或Hugging Face仓库ID。
  --tokenizer-path TOKENIZER_PATH分词器的路径。
  --host HOST   服务器的主机地址。
  --port PORT   服务器的端口。
  --tokenizer-mode {auto,slow}分词器模式。'auto'会使用可用的快速分词器,而'slow'总是使用慢速分词器。
  --skip-tokenizer-init如果设置,跳过初始化分词器,并在生成请求时传递input_ids。
  --load-format {auto,pt,safetensors,npcache,dummy,gguf,bitsandbytes,layered}要加载的模型权重格式。“auto”将尝试以safetensors格式加载权重,如果不可用则回退到pytorch bin格式。“pt”将以pytorch bin格式加载权重。“safetensors”将以safetensors格式加载权重。“npcache”将以pytorch格式加载权重并在numpy缓存中存储以加快加载速度。“dummy”将使用随机值初始化权重,主要用于性能分析。“gguf”将以gguf格式加载权重。“bitsandbytes”将使用bitsandbytes量化加载权重。“layered”逐层加载权重,以便在一个层被量化之前加载另一个层,从而减小峰值内存占用。
  --trust-remote-code   是否允许Hub上自定义模型在其自己的建模文件中定义。
  --dtype {auto,half,float16,bfloat16,float,float32}模型权重和激活的数据类型。* "auto"对FP32和FP16模型使用FP16精度,对BF16模型使用BF16精度。 * "half"为FP16。推荐用于AWQ量化。 * "float16"与"half"相同。 * "bfloat16"在精度和范围之间取得平衡。 * "float"是FP32精度的简写。 * "float32"为FP32精度。
  --kv-cache-dtype {auto,fp8_e5m2,fp8_e4m3}KV缓存存储的数据类型。“auto”将使用模型数据类型。“fp8_e5m2”和“fp8_e4m3”支持CUDA 11.8+。
  --quantization-param-path QUANTIZATION_PARAM_PATH包含KV缓存缩放因子的JSON文件的路径。当KV缓存数据类型为FP8时通常需要提供。否则,默认缩放因子为1.0,可能导致准确性问题。
  --quantization {awq,fp8,gptq,marlin,gptq_marlin,awq_marlin,bitsandbytes,gguf,modelopt,w8a8_int8}量化方法。
  --context-length CONTEXT_LENGTH模型的最大上下文长度。默认为None(将使用模型config.json中的值)。
  --device {cuda,xpu,hpu,cpu}设备类型。
  --served-model-name SERVED_MODEL_NAME覆盖OpenAI API服务器v1/models端点返回的模型名称。
  --chat-template CHAT_TEMPLATE内置聊天模板名称或聊天模板文件的路径。仅用于兼容OpenAI API的服务器。
  --is-embedding        是否将CausalLM用作嵌入模型。
  --revision REVISION   使用的具体模型版本。可以是分支名、标签名或提交ID。未指定时,使用默认版本。
  --mem-fraction-static MEM_FRACTION_STATIC用于静态分配(模型权重和KV缓存内存池)的内存比例。如果遇到内存不足错误,请使用较小的值。
  --max-running-requests MAX_RUNNING_REQUESTS正在运行的最大请求数量。
  --max-total-tokens MAX_TOTAL_TOKENS内存池中的最大token数量。如果未指定,将根据内存使用比例自动计算。此选项通常用于开发和调试目的。
  --chunked-prefill-size CHUNKED_PREFILL_SIZE分块预填充中每个块的最大token数量。设置为-1表示禁用分块预填充。
  --max-prefill-tokens MAX_PREFILL_TOKENS预填充批次中的最大token数量。实际限制将是此值和模型最大上下文长度之间的较大值。
  --schedule-policy {lpm,random,fcfs,dfs-weight}请求的调度策略。
  --schedule-conservativeness SCHEDULE_CONSERVATIVENESS调度策略的保守程度。较大的值意味着更保守的调度。如果经常看到请求被撤回,请使用较大的值。
  --cpu-offload-gb CPU_OFFLOAD_GB为CPU卸载保留的RAM GB数。
  --prefill-only-one-req PREFILL_ONLY_ONE_REQ如果为true,则每次预填充仅处理一个请求。
  --tensor-parallel-size TENSOR_PARALLEL_SIZE, --tp-size TENSOR_PARALLEL_SIZE张量并行大小。
  --stream-interval STREAM_INTERVAL流式传输的间隔(或缓冲区大小),按token长度计算。较小的值使流式传输更平滑,而较大的值提高吞吐量。
  --stream-output       是否作为一系列不连续的段输出。
  --random-seed RANDOM_SEED随机种子。
  --constrained-json-whitespace-pattern CONSTRAINED_JSON_WHITESPACE_PATTERNJSON约束输出中允许的语法空白的正则表达式模式。例如,要允许模型生成连续的空格,请将模式设置为[\n\t ]*
  --watchdog-timeout WATCHDOG_TIMEOUT设置看门狗超时时间(秒)。如果前向批处理花费的时间超过此值,服务器将崩溃以防止挂起。
  --download-dir DOWNLOAD_DIR模型下载目录。
  --base-gpu-id BASE_GPU_ID开始分配GPU的基础GPU ID。在单台机器上运行多个实例时很有用。
  --log-level LOG_LEVEL所有记录器的日志级别。
  --log-level-http LOG_LEVEL_HTTPHTTP服务器的日志级别。如果没有设置,默认重用--log-level。
  --log-requests        记录所有请求的输入和输出。
  --show-time-cost      显示自定义标记的时间成本。
  --enable-metrics      启用日志Prometheus指标。
  --decode-log-interval DECODE_LOG_INTERVAL解码批次的日志间隔。
  --api-key API_KEY     设置服务器的API密钥。也用于兼容OpenAI API的服务器。
  --file-storage-pth FILE_STORAGE_PTH后端文件存储的路径。
  --enable-cache-report返回openai请求中usage.prompt_tokens_details中的缓存token数量。
  --data-parallel-size DATA_PARALLEL_SIZE, --dp-size DATA_PARALLEL_SIZE数据并行大小。
  --load-balance-method {round_robin,shortest_queue}数据并行性的负载均衡策略。
  --expert-parallel-size EXPERT_PARALLEL_SIZE, --ep-size EXPERT_PARALLEL_SIZE专家并行大小。
  --dist-init-addr DIST_INIT_ADDR, --nccl-init-addr DIST_INIT_ADDR初始化分布式后端的主机地址(例如`192.168.0.2:25000`)。
  --nnodes NNODES       节点数量。
  --node-rank NODE_RANK节点排名。
  --json-model-override-args JSON_MODEL_OVERRIDE_ARGS用于覆盖默认模型配置的JSON字符串格式的字典。
  --lora-paths [LORA_PATHS ...]LoRA适配器列表。可以提供str格式的路径列表,或{名称}={路径}的重命名路径格式。
  --max-loras-per-batch MAX_LORAS_PER_BATCH运行批次中的最大适配器数量,包括仅基础模型的请求。
  --lora-backend LORA_BACKEND选择多LoRA服务的内核后端。
  --attention-backend {flashinfer,triton,torch_native}选择注意力层的内核。
  --sampling-backend {flashinfer,pytorch}选择采样层的内核。
  --grammar-backend {xgrammar,outlines}选择语法引导解码的后端。
  --enable-flashinfer-mla启用FlashInfer MLA优化
  --speculative-algorithm {EAGLE}推测算法。
  --speculative-draft-model-path SPECULATIVE_DRAFT_MODEL_PATH草稿模型权重的路径。可以是本地文件夹或Hugging Face仓库ID。
  --speculative-num-steps SPECULATIVE_NUM_STEPS在推测解码中从草稿模型采样的步骤数。
  --speculative-num-draft-tokens SPECULATIVE_NUM_DRAFT_TOKENS在推测解码中从草稿模型采样的token数。
  --speculative-eagle-topk {1,2,4,8}在eagle2每步中从草稿模型采样的token数。
  --enable-double-sparsity启用双重稀疏性注意力
  --ds-channel-config-path DS_CHANNEL_CONFIG_PATH双重稀疏性通道配置的路径
  --ds-heavy-channel-num DS_HEAVY_CHANNEL_NUM双重稀疏性注意力中的重型通道数量
  --ds-heavy-token-num DS_HEAVY_TOKEN_NUM双重稀疏性注意力中的重型token数量
  --ds-heavy-channel-type DS_HEAVY_CHANNEL_TYPE


Comment