SGLang是一个高性能的大语言模型推理框架,提供了丰富的服务器参数配置选项。本文将基于官方文档详细介绍SGLang服务器的各种参数配置,帮助开发者更好地优化模型推理性能。
常用启动命令
多GPU张量并行
python -m sglang.launch_server –model-path meta-llama/Meta-Llama-3-8B-Instruct –tp 2
多GPU数据并行
python -m sglang_router.launch_server –model-path meta-llama/Meta-Llama-3-8B-Instruct –dp 2 –tp 2
内存优化
python -m sglang.launch_server –model-path meta-llama/Meta-Llama-3-8B-Instruct –mem-fraction-static 0.7
长提示词优化
python -m sglang.launch_server –model-path meta-llama/Meta-Llama-3-8B-Instruct –chunked-prefill-size 4096
模型和分词器参数
参数描述默认值
–model-path |
模型权重路径,支持本地文件夹或Hugging Face仓库ID |
None |
–tokenizer-path |
分词器路径 |
None |
–tokenizer-mode |
分词器模式:'auto’使用快速分词器,'slow’使用慢速分词器 |
auto |
–skip-tokenizer-init |
跳过分词器初始化,在生成请求中传递input_ids |
False |
–load-format |
模型权重加载格式:‘auto’、‘pt’、‘safetensors’、‘npcache’、‘dummy’、‘gguf’、‘bitsandbytes’、‘layered’ |
auto |
–trust-remote-code |
是否允许在Hub上使用自定义模型定义 |
False |
–context-length |
模型最大上下文长度,默认使用模型config.json中的值 |
None |
–is-embedding |
是否将CausalLM用作嵌入模型 |
False |
–enable-multimodal |
启用多模态功能 |
None |
–revision |
使用的特定模型版本 |
None |
–model-impl |
模型实现:‘auto’、‘sglang’、‘transformers’ |
auto |
HTTP服务器参数
参数描述默认值
–host |
服务器主机地址 |
0.0.0.0 |
–port |
服务器端口 |
30000 |
–allow-credentials |
允许跨域凭据 |
False |
–allowed-origins |
允许的跨域来源 |
* |
–allowed-methods |
允许的HTTP方法 |
GET, POST, OPTIONS |
–allowed-headers |
允许的HTTP头 |
* |
–max-request-size |
最大请求大小(字节) |
1048576 |
–max-queue-size |
最大队列大小 |
1000 |
–max-batch-size |
最大批处理大小 |
1000 |
–max-batch-delay |
最大批处理延迟(秒) |
0.1 |
–max-concurrent-requests |
最大并发请求数 |
1000 |
量化和数据类型参数
参数描述默认值
–dtype |
模型数据类型:‘auto’、‘half’、‘float16’、‘bfloat16’、‘float’、‘float32’ |
auto |
–quantization |
量化方法:‘awq’、‘gptq’、‘squeezellm’、‘marlin’、‘aqlm’、‘exl2’、‘quip’、‘eetq’、‘fp8’ |
None |
–kv-cache-dtype |
KV缓存数据类型 |
auto |
–rope-scaling |
RoPE缩放配置 |
None |
–max-model-len |
模型最大长度 |
None |
–block-size |
块大小 |
None |
–swap-space |
交换空间大小(GB) |
4 |
–gpu-memory-utilization |
GPU内存使用率 |
0.9 |
–max-paddings |
最大填充长度 |
8192 |
–disable-log-stats |
禁用日志统计 |
False |
–disable-log-requests |
禁用请求日志 |
False |
内存和调度参数
参数描述默认值
–max-num-batched-tokens |
批处理的最大token数量 |
2048 |
–max-num-seqs |
最大序列数 |
256 |
–max-paddings |
最大填充长度 |
8192 |
–max-lora-rank |
最大LoRA秩 |
None |
–max-lora-max-rank |
最大LoRA最大秩 |
None |
–max-rolling-batch-size |
最大滚动批处理大小 |
None |
–max-rolling-batch-delay |
最大滚动批处理延迟 |
None |
–max-rolling-batch-preempt |
最大滚动批处理抢占 |
None |
–max-rolling-batch-attention |
最大滚动批处理注意力 |
None |
–max-rolling-batch-cache |
最大滚动批处理缓存 |
None |
–max-rolling-batch-cache-size |
最大滚动批处理缓存大小 |
None |
运行时选项
参数描述默认值
–seed |
随机种子 |
0 |
–max-model-len |
模型最大长度 |
None |
–block-size |
块大小 |
None |
–swap-space |
交换空间大小(GB) |
4 |
–gpu-memory-utilization |
GPU内存使用率 |
0.9 |
–max-paddings |
最大填充长度 |
8192 |
–disable-log-stats |
禁用日志统计 |
False |
–disable-log-requests |
禁用请求日志 |
False |
–max-lora-rank |
最大LoRA秩 |
None |
–max-lora-max-rank |
最大LoRA最大秩 |
None |
日志参数
参数描述默认值
–log-level |
日志级别 |
INFO |
–log-file |
日志文件路径 |
None |
–log-format |
日志格式 |
None |
–log-interval |
日志间隔 |
10 |
–log-requests |
记录请求日志 |
True |
–log-stats |
记录统计日志 |
True |
–log-timestamps |
记录时间戳 |
False |
API相关参数
参数描述默认值
–api-key |
API密钥 |
None |
–api-key-file |
API密钥文件路径 |
None |
–api-key-header |
API密钥头名称 |
Authorization |
–api-key-prefix |
API密钥前缀 |
Bearer |
–api-key-suffix |
API密钥后缀 |
None |
–api-key-format |
API密钥格式 |
None |
–api-key-encoding |
API密钥编码 |
None |
–api-key-hash |
API密钥哈希 |
None |
–api-key-salt |
API密钥盐值 |
None |
–api-key-iterations |
API密钥迭代次数 |
None |
数据并行参数
参数描述默认值
–dp |
数据并行大小 |
1 |
–dp-backend |
数据并行后端 |
None |
–dp-address |
数据并行地址 |
None |
–dp-port |
数据并行端口 |
None |
–dp-world-size |
数据并行世界大小 |
None |
–dp-rank |
数据并行秩 |
None |
–dp-timeout |
数据并行超时 |
None |
–dp-retry |
数据并行重试 |
None |
–dp-verbose |
数据并行详细模式 |
False |
多节点分布式服务参数
参数描述默认值
–nnodes |
节点数量 |
1 |
–node-rank |
节点秩 |
0 |
–dist-init-addr |
分布式初始化地址 |
None |
–dist-init-port |
分布式初始化端口 |
None |
–dist-timeout |
分布式超时 |
None |
–dist-backend |
分布式后端 |
None |
–dist-world-size |
分布式世界大小 |
None |
–dist-rank |
分布式秩 |
None |
张量并行参数
参数描述默认值
–tp |
张量并行大小 |
1 |
–tp-backend |
张量并行后端 |
None |
–tp-address |
张量并行地址 |
None |
–tp-port |
张量并行端口 |
None |
–tp-world-size |
张量并行世界大小 |
None |
–tp-rank |
张量并行秩 |
None |
–tp-timeout |
张量并行超时 |
None |
–tp-retry |
张量并行重试 |
None |
–tp-verbose |
张量并行详细模式 |
False |
流水线并行参数
参数描述默认值
–pp |
流水线并行大小 |
1 |
–pp-backend |
流水线并行后端 |
None |
–pp-address |
流水线并行地址 |
None |
–pp-port |
流水线并行端口 |
None |
–pp-world-size |
流水线并行世界大小 |
None |
–pp-rank |
流水线并行秩 |
None |
–pp-timeout |
流水线并行超时 |
None |
–pp-retry |
流水线并行重试 |
None |
–pp-verbose |
流水线并行详细模式 |
False |
专家并行参数
参数描述默认值
–ep |
专家并行大小 |
1 |
–ep-backend |
专家并行后端 |
None |
–ep-address |
专家并行地址 |
None |
–ep-port |
专家并行端口 |
None |
–ep-world-size |
专家并行世界大小 |
None |
–ep-rank |
专家并行秩 |
None |
–ep-timeout |
专家并行超时 |
None |
–ep-retry |
专家并行重试 |
None |
–ep-verbose |
专家并行详细模式 |
False |
优化和调试选项
参数描述默认值
–disable-radix-cache |
禁用RadixAttention前缀缓存 |
False |
–cuda-graph-max-bs |
CUDA图最大批处理大小 |
None |
–cuda-graph-bs |
CUDA图批处理大小列表 |
None |
–disable-cuda-graph |
禁用CUDA图 |
False |
–disable-cuda-graph-padding |
禁用CUDA图填充 |
False |
–enable-profile-cuda-graph |
启用CUDA图分析 |
False |
–enable-nccl-nvls |
启用NCCL NVLS |
False |
–enable-tokenizer-batch-encode |
启用分词器批处理编码 |
False |
–disable-outlines-disk-cache |
禁用outlines磁盘缓存 |
False |
–disable-custom-all-reduce |
禁用自定义all-reduce内核 |
False |
–enable-mscclpp |
启用mscclpp |
False |
–disable-overlap-schedule |
禁用重叠调度器 |
False |
–enable-mixed-chunk |
启用混合块 |
False |
–enable-dp-attention |
启用数据并行注意力 |
False |
–enable-dp-lm-head |
启用数据并行语言模型头 |
False |
–enable-two-batch-overlap |
启用双批处理重叠 |
False |
–enable-torch-compile |
启用torch.compile优化 |
False |
–torch-compile-max-bs |
torch.compile最大批处理大小 |
32 |
–torchao-config |
torchao配置 |
None |
–enable-nan-detection |
启用NaN检测 |
False |
–enable-p2p-check |
启用P2P检查 |
False |
–triton-attention-reduce-in-fp32 |
Triton注意力在fp32中归约 |
False |
–triton-attention-num-kv-splits |
Triton注意力KV分割数 |
8 |
–num-continuous-decode-steps |
连续解码步数 |
1 |
–delete-ckpt-after-loading |
加载后删除检查点 |
False |
–enable-memory-saver |
启用内存节省器 |
False |
–allow-auto-truncate |
允许自动截断 |
False |
–enable-custom-logit-processor |
启用自定义logit处理器 |
False |
–flashinfer-mla-disable-ragged |
禁用Flashinfer MLA ragged处理 |
False |
–disable-shared-experts-fusion |
禁用共享专家融合 |
False |
–disable-chunked-prefix-cache |
禁用分块前缀缓存 |
False |
–disable-fast-image-processor |
禁用快速图像处理器 |
False |
–enable-return-hidden-states |
启用返回隐藏状态 |
False |
–enable-triton-kernel-moe |
启用Triton MoE内核 |
False |
实际配置示例
基础推理服务器
python -m sglang.launch_server \\
–model-path meta-llama/Meta-Llama-3-8B-Instruct \\
–host 0.0.0.0 \\
–port 30000 \\
–max-num-batched-tokens 4096 \\
–max-num-seqs 256
高性能推理服务器
python -m sglang.launch_server \\
–model-path meta-llama/Meta-Llama-3-8B-Instruct \\
–dtype bfloat16 \\
–gpu-memory-utilization 0.9 \\
–max-model-len 8192 \\
–max-num-batched-tokens 8192 \\
–max-num-seqs 512 \\
–disable-log-stats
量化模型服务器
python -m sglang.launch_server \\
–model-path meta-llama/Meta-Llama-3-8B-Instruct \\
–quantization awq \\
–load-format awq \\
–gpu-memory-utilization 0.8 \\
–max-model-len 4096
多GPU张量并行
python -m sglang.launch_server \\
–model-path meta-llama/Meta-Llama-3-8B-Instruct \\
–tp 2 \\
–enable-p2p-check
多节点分布式
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
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
参数调优建议
内存优化
GPU内存使用率: 根据GPU显存大小调整gpu-memory-utilization
模型长度: 根据实际需求设置max-model-len
批处理大小: 平衡max-num-batched-tokens和max-num-seqs
交换空间: 设置合适的swap-space值
性能优化
数据类型: 优先使用bfloat16或float16
量化: 对于大模型考虑使用量化
日志: 生产环境禁用不必要的日志
CUDA图: 启用CUDA图优化
并发优化
序列数: 根据GPU计算能力调整max-num-seqs
批处理: 合理设置max-num-batched-tokens
并行: 多GPU环境下使用张量并行
数据并行: 使用SGLang Router进行数据并行
常见问题解决
内存不足
- 降低gpu-memory-utilization
- 减少max-model-len
- 使用量化模型
- 增加swap-space
性能瓶颈
- 增加max-num-batched-tokens
- 调整max-num-seqs
- 使用更高效的数据类型
- 启用CUDA图优化
并发限制
- 增加max-num-seqs
- 优化批处理策略
- 使用分布式推理
- 调整服务器资源分配
GPU访问问题
- 添加–enable-p2p-check参数
- 检查GPU驱动和CUDA版本
- 验证GPU间连接
总结
SGLang提供了丰富的参数配置选项,开发者可以根据实际需求进行精细调优。关键是要在性能、内存使用和并发能力之间找到平衡点。建议在生产环境中进行充分的压力测试,找到最适合的参数组合。通过合理配置这些参数,可以显著提升大语言模型的推理性能和资源利用率。
评论前必须登录!
注册