SGLang推理加速:原生集成NVIDIA Model Optimizer,实现无缝量化部署

SGLang最新功能原生支持NVIDIA Model Optimizer量化!这一集成简化了从全精度模型到高性能量化端点的整个优化与部署流程,无需多步工具切换。通过SGLang中的ModelOpt API,只需三步即可完成量化(支持NVFP4、MXFP4、FP8等)、导出与部署。性能表现突出:在NVIDIA B200上,Model Optimizer与SGLang优化可实现比原生FP8高达2倍的单GPU吞吐量。结合Blackwell架构,从DGX Spark到GB300 NVL72均可显著提升延迟降低与内存节省。提供完整示例代码,助力开发者快速上手。(128字)

(12月2日更新)

我们兴奋地宣布,SGLang新增一项重大功能:NVIDIA Model Optimizer的原生量化支持!这一集成优化了整个模型优化与部署流程,让你能在SGLang生态内直接从全精度模型转换为高性能量化端点。

高效服务大型语言模型(LLM)是生产环境中的最大挑战之一。模型量化是减少内存占用并提升推理速度的关键技术。此前,这一过程需要多步工作流和独立工具。现在,通过最新更新(PRs #7149#9991#10154),我们彻底消除了这些复杂性。

Model Optimizer与SGLang的优化结合,可在NVFP4与FP8推理中实现高达2倍的单GPU吞吐量提升。

新功能:SGLang中的直接ModelOpt API

SGLang现已直接集成NVIDIA Model Optimizer,让你能在SGLang代码中调用其强大的量化API。

这一新功能开启了简化的三步工作流:

  • 量化:使用SGLang-ModelOpt接口应用先进量化技术,支持NVFP4、MXFP4、FP8等加速低精度推理。
  • 导出:保存优化后的模型文件,完全兼容SGLang运行时。
  • 部署:直接在SGLang运行时加载量化模型,在NVIDIA平台上服务,立即享受更低延迟和内存节省。

性能成果

通过新API优化的模型带来显著性能提升。这些优化可与其他NVIDIA软件硬件栈组件叠加,并适用于最新Blackwell架构的各种形式,从DGX Spark到GB300 NVL72。

NVIDIA B200单GPU吞吐量 vs 端到端延迟:DeepSeek-R1-0528在多种配置下的Model Optimizer NVFP4量化模型对比FP8和NVFP4(初始API暂不支持DeepSeek-R1-0528)

上图展示NVIDIA B200单GPU吞吐量 vs 端到端延迟,针对DeepSeek-R1-0528的多配置,使用Model Optimizer NVFP4量化模型,对比原生FP8和NVFP4。(DeepSeek-R1-0528在本API初始发布中暂不支持)

根据InferenceMAX最新结果,Model Optimizer与SGLang优化相比原生FP8基线,可实现高达2倍单GPU吞吐量。这些性能收益即将通过本博客所述原生集成实现。

快速上手指南

SGLang提供示例脚本,演示完整的Model Optimizer量化与导出流程。确保在SGLang环境中安装nvidia-modeloptaccelerate,然后运行以下代码片段:

import sglang as sgl
from sglang.srt.configs.device_config import DeviceConfig
from sglang.srt.configs.load_config import LoadConfig
from sglang.srt.configs.model_config import ModelConfig
from sglang.srt.model_loader.loader import get_model_loader

# 配置模型,使用ModelOpt量化并导出
model_config = ModelConfig(
    model_path="Qwen/Qwen3-8B",
    quantization="modelopt_fp8",  # 或 "modelopt_fp4"
    trust_remote_code=True,
)

load_config = LoadConfig(
    modelopt_export_path="./quantized_qwen3_8b_fp8",
    modelopt_checkpoint_save_path="./checkpoint.pth",  # 可选,伪量化检查点
)
device_config = DeviceConfig(device="cuda")

# 加载并量化模型(导出自动进行)
model_loader = get_model_loader(load_config, model_config)
quantized_model = model_loader.load_model(
    model_config=model_config,
    device_config=device_config,
)

量化导出后,可通过SGLang部署模型:

# 部署导出的量化模型
python -m sglang.launch_server \
   --model-path ./quantized_qwen3_8b_fp8 \
   --quantization modelopt \
   --port 30000 --host 0.0.0.0

或使用Python API:

import sglang as sgl
from transformers import AutoTokenizer

def main():
   # 部署导出的ModelOpt量化模型
   llm = sgl.Engine(
      model_path="./quantized_qwen3_8b_fp8",
      quantization="modelopt"
   )

   # 使用Qwen3-8B聊天模板格式化提示
   tokenizer = AutoTokenizer.from_pretrained("./quantized_qwen3_8b_fp8")

   messages = [
       [{"role": "user", "content": "Hello, how are you?"}],
       [{"role": "user", "content": "What is the capital of France?"}]
   ]

   prompts = [
       tokenizer.apply_chat_template(m, tokenize=False, add_generation_prompt=True)
       for m in messages
   ]

   # 运行推理
   sampling_params = {"temperature": 0.8, "top_p": 0.95, "max_new_tokens": 512}
   outputs = llm.generate(prompts, sampling_params)

   for i, output in enumerate(outputs):
      print(f"Prompt: {prompts[i]}")
      print(f"Output: {output['text']}")

if __name__ == "__main__":
    main()

结语

这一原生Model Optimizer集成强化了SGLang作为LLM推理简单强大平台的承诺。我们将继续缩小高性能模型优化与部署间的差距。

期待你使用这一新功能取得的性能提升!请访问我们的GitHub仓库拉取最新版本试用。

欢迎加入专用Slack频道#modelopt,讨论modelopt、量化及低精度数值话题!若未加入工作区,请先在此加入

致谢

NVIDIA团队:Zhiyu Cheng, Jingyu Xin, Huizi Mao, Eduardo Alvarez, Pen Chung Li, Omri Almog

SGLang团队与社区:Qiaolin Yu, Xinyuan Tong