SuperAPI AI 工具集

sglang

智能体与模型

查看项目

更新于 10-21 16:20

技能介绍

SGLang 是一个面向大语言模型(LLM)与视觉语言模型(VLM)的高性能服务框架,其核心创新是 RadixAttention,用于自动前缀缓存。

一、用途与适用场景 根据资料,SGLang 适用于以下情况:需要结构化输出(JSON、正则、语法);构建带有重复前缀(系统提示、工具定义)的智能体;带函数调用的智能体工作流;共享上下文的多轮对话;需要更快的 JSON 解码(官方称约为标准方式的 3 倍)。 资料同时给出替代建议:若只需简单文本生成、不需要前缀缓存,或希望使用成熟且经过广泛测试的生产系统,可考虑 vLLM;若追求单请求最低延迟(无需批处理)、仅限 NVIDIA 部署,或需要在 H100 上使用 FP8/INT4 量化,可考虑 TensorRT-LLM。

二、主要能力

  1. RadixAttention 前缀缓存:自动缓存并复用请求间的公共前缀。资料称对共享系统提示的智能体负载约快 5 倍,对重复示例的少样本提示约快 10 倍,且零配置、自动生效。其原理是构建已处理 token 的基数树,自动检测共享前缀,复用匹配前缀的 KV 缓存,只计算新 token。
  2. 结构化生成:支持 JSON schema 约束、正则约束和基于 EBNF 语法的生成。
  3. 智能体与函数调用:支持定义工具(tools)并生成工具调用格式,可配合停止词使用。
  4. 多轮对话:随历史增长复用 KV 缓存,逐步加速。
  5. 高级特性:投机解码(可配草稿模型)、多模态(视觉模型)、自动连续批处理与并行请求、OpenAI 兼容 API。

三、使用方式 安装(保留原文命令):

pip install (recommended)

pip install "sglang[all]"

With FlashInfer (faster, CUDA 11.8/12.1)

pip install sglang[all] flashinfer -i https://flashinfer.ai/whl/cu121/torch2.4/

From source

git clone https://github.com/sgl-project/sglang.git cd sglang pip install -e "python[all]"

启动服务(保留原文命令):

Basic server (Llama 3-8B)

python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3-8B-Instruct --port 30000

With RadixAttention (automatic prefix caching)

python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3-8B-Instruct --port 30000 --enable-radix-cache # Default: enabled

Multi-GPU (tensor parallelism)

python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3-70B-Instruct --tp 4 --port 30000

基本推理示例(保留原文代码): import sglang as sgl sgl.set_default_backend(sgl.OpenAI("http://localhost:30000/v1")) @sgl.function def simple_gen(s, question): s += "Q: " + question + "\n" s += "A:" + sgl.gen("answer", max_tokens=100) state = simple_gen.run(question="What is the capital of France?") print(state["answer"])

结构化 JSON 输出、正则约束、语法约束、函数调用、多轮对话、投机解码、多模态、批处理与 OpenAI 兼容 API 的示例代码均在资料中给出,可按需参考。

四、性能数据(来自资料) RadixAttention 加速:少样本提示(10 个示例)vLLM 2.5 秒/请求,SGLang 0.25 秒/请求(10 倍),吞吐量高 4 倍;智能体工作流(1000 token 系统提示)vLLM 1.8 秒/请求,SGLang 0.35 秒/请求(5 倍);JSON 解码标准 45 tok/s,SGLang 135 tok/s(3 倍)。 吞吐量(Llama 3-8B,A100):简单生成 vLLM 2500 tok/s、SGLang 2800 tok/s(1.12 倍);少样本(10 示例)500 对 5000 tok/s(10 倍);智能体(工具调用)800 对 4000 tok/s(5 倍);JSON 输出 600 对 2400 tok/s(4 倍)。

五、支持的模型与硬件 文本模型:Llama 2、Llama 3、Llama 3.1、Llama 3.2;Mistral、Mixtral;Qwen、Qwen2、QwQ;DeepSeek-V2、DeepSeek-V3;Gemma、Phi-3。视觉模型:LLaVA、LLaVA-OneVision;Phi-3-Vision;Qwen2-VL。资料称支持 HuggingFace 上 100+ 模型。 硬件:NVIDIA A100、H100、L4、T4(CUDA 11.8+);AMD MI300、MI250(ROCm 6.0+);Intel Xeon with GPU(coming soon);Apple M1/M2/M3 via MPS(experimental)。

六、限制与注意事项 资料中的操作流程提示:先确认硬件、框架与服务版本、模型格式和预期负载;确认输入格式、标识符与参数;先小规模运行单个请求再扩展;验证延迟、吞吐与输出正确性并检查资源与成本;报告运行内容与不确定项。若服务启动失败或 OOM,应检查模型大小与内存、量化及并行设置;若安装版本缺少某函数、标志或端点,应查阅该版本自身文档并告知用户,不要臆造 API;若输入或参数不明确,应询问用户或明确说明假设。资料强调不得编造结果、参数、标识符、引用或统计数据;不要公开暴露服务或凭据;涉及费用、共享 GPU、云配额、个人或患者数据以及不可撤销操作前应先询问。版本相关细节可能过时,应以所安装版本的官方文档为准。

七、相关技能 资料列出:tensorrt-llm(用 NVIDIA TensorRT 优化 LLM 推理以获得最大吞吐与最低延迟)、outlines(通过有限状态机约束 token 采样生成保证有效的结构化输出)、llama-cpp(在 CPU、Apple Silicon 和消费级 GPU 上运行 LLM 推理,无需 NVIDIA 硬件)。

八、资源 GitHub:https://github.com/sgl-project/sglang Docs:https://sgl-project.github.io/ Paper:RadixAttention(arXiv:2312.07104) Discord:https://discord.gg/sglang