Skip to content

https://github.com/sgl-project/sglang

SGLang安装教程

https://blog.csdn.net/weixin_39806242/article/details/145320296

一、环境搭建

  1. 创建虚拟环境:使用conda创建名为sglang的虚拟环境,并激活它。

    conda create -n sglang python=3.12
    conda activate sglang
    
  2. 安装依赖包:通过pip安装vllm、sglang和sgl_kernel。如果遇到ModuleNotFoundError,需要先下载并安装flashinfer的whl包。

    pip install vllm
    pip install sglang==0.4.1.post7
    pip install sgl_kernel
    

下载并安装flashinfer的whl包:

```
wget https://github.com/flashinfer-ai/flashinfer/releases/download/v0.2.0/flashinfer-0.2.0+cu124torch2.4-cp312-cp312-linux_x86_64.whl#sha256=a743e156971aa3574faf91e1090277520077a6dd5e24824545d03ce9ed5a3f59
pip install flashinfer-0.2.0.post1+cu124torch2.4-cp312-cp312-linux_x86_64.whl --no-deps
```

二、启动服务

使用以下命令启动SGLang服务,指定模型路径、主机和端口。模型文件需要提前下载到指定路径。 python3 -m sglang.launch_server --model ./DeepSeek-R1-Distill-Qwen-7B --host 0.0.0.0 --port 8123 启动成功后,服务会在指定端口运行,可以查看日志信息确认服务状态。

三、测试性能

  1. 部署32B模型:使用特定命令部署更大规模的32B模型,并设置相关参数。

    python -m sglang.launch_server --model-path ./DeepSeek-R1-Distill-Qwen-32B/ --load-format dummy --tp 8 --disable-radix
    
  2. 性能测试:通过运行测试脚本,对部署的模型进行性能评估,观察其在不同任务下的表现。

    python3 -m sglang.bench_serving --backend sglang --dataset-name random --num-prompt 100 --random-input 1024 --random-output 1024 --host 127.0.0.1 --port 30000
    

四、测试和应用场景

  1. 简单测试:使用openai库,通过localhost访问SGLang服务,发送测试请求并获取响应结果。

    import openai
    client = openai.Client(base_url="http://localhost:8123/v1", api_key="None")
    response = client.chat.completions.create(
        model="deepseek-ai/DeepSeek-R1-Distill-Qwen-7B",
        messages=[
            {"role": "user", "content": "如何预防肺癌?"},
        ],
        temperature=0,
        max_tokens=4096,
    )
    print(response.choices[0].message.content)
    
  2. 实际应用:可以结合streamlit、langchain等工具,将SGLang部署的模型集成到实际的应用项目中,如构建聊天机器人、问答系统等。

SGLang和vLLM的主要区别

https://www.zhihu.com/question/666943660

性能表现

  • SGLang:率先解决了CPU调度overhead问题,性能比vLLM翻倍,后续vLLM改进后两者性能基本对齐。SGLang v0.3版本在DeepSeek V2 MLA模型上相比vLLM提升7倍吞吐,在小batch size上使用torch.compile提升1.5倍decoding speed。
  • vLLM:在改进后性能与SGLang基本对齐,其在小batch size上的优化提升了decoding speed,在某些模型上也有较好的性能表现。

技术原理

  • SGLang:基于图计算的AI大模型推理加速技术,将复杂的计算任务分解为图结构,利用图计算的高效性和并行性提升推理速度,其核心是将AI模型的计算过程抽象为图结构,通过图计算引擎高效处理。
  • vLLM:基于张量并行、异步调度等机制,通过优化调度策略和并行计算方式提升推理性能,其对多种推理策略的整合和优化使其在不同场景下都能有较好的表现。

支持的模型架构

  • SGLang:支持的模型架构相对较少,如DeepSeek V2 MLA、LLaVA-OneVision、Gemma 2等,但其v0.3版本带来了对新模型架构的扩展支持。
  • vLLM:支持的模型架构较为广泛,包括LLaMA、GPT、OPT等众多主流大语言模型,能更好地满足不同用户对不同模型的推理需求。

推理策略

  • SGLang:未明确提及是否涵盖所有推理策略,其推理策略的完整性和多样性可能不如vLLM,但也在不断优化和改进。
  • vLLM:几乎包含了所有的推理策略,用户可以根据具体需求选择合适的策略,具有较高的灵活性和可配置性。

硬件支持

  • SGLang:不支持多机和PP(Pipeline Parallelism),在A100等硬件上部署时存在限制,无法充分利用多机资源进行分布式推理。
  • vLLM:支持多机多卡等硬件配置,能更好地利用大规模计算资源,适用于需要高性能计算和分布式部署的场景。

生态与应用场景

  • SGLang:生态相对不够完善,安装时会附带安装vLLM,其model excutor是import vLLM,在实际应用和推广上可能受到一定限制。
  • vLLM:开源且社区活跃,拥有较多的用户和应用场景,被广泛应用于各种大模型推理任务中,具有良好的生态基础和社区支持。