周红伟:Sglang+Vllm+Qwen3.5企业级部署案例实操

部署 Qwen3.5

Qwen3.5 可通过流行的推理框架以 API 形式部署。

以下展示了启动 Qwen3.5 模型 OpenAI 兼容 API 服务器的示例命令。

IMPORTANT

不同框架在推理效率和吞吐量方面存在显著差异。 我们建议使用最新版本的框架,以确保最佳性能和兼容性。 对于生产环境负载或高吞吐场景,强烈推荐使用专用的推理引擎,如 SGLang、KTransformers 或 vLLM。

IMPORTANT

该模型默认上下文长度为 262,144 个 token。 如果遇到内存不足(OOM)错误,请考虑缩小上下文窗口。 然而,由于 Qwen3.5 利用扩展上下文处理复杂任务,我们建议至少保持 128K tokens 的上下文长度,以保留其思考能力。

SGLang

SGLang 是一个面向大语言模型和视觉语言模型的快速推理框架。

Qwen3.5 需要使用开源仓库主分支中的 SGLang,可在全新环境中通过以下命令安装:

复制代码

uv pip install 'git+https://github.com/sgl-project/sglang.git#subdirectory=python&egg=sglang[all]'

更多详情请参见其文档

以下命令将在 http://localhost:8000/v1 创建 API 端点:

  • 标准版:以下命令可使用 8 块 GPU 上的张量并行创建最大上下文长度为 262,144 tokens 的 API 端点。

    复制代码

    SGLANG_USE_MODELSCOPE=true python -m sglang.launch_server --model-path Qwen/Qwen3.5-397B-A17B --port 8000 --tp-size 8 --mem-fraction-static 0.8 --context-length 262144 --reasoning-parser qwen3

  • 工具调用:若需支持工具调用,可使用以下命令。

    复制代码

    SGLANG_USE_MODELSCOPE=true python -m sglang.launch_server --model-path Qwen/Qwen3.5-397B-A17B --port 8000 --tp-size 8 --mem-fraction-static 0.8 --context-length 262144 --reasoning-parser qwen3 --tool-call-parser qwen3_coder

  • 多 Token 预测(MTP):推荐使用以下命令启用 MTP:

    复制代码

    SGLANG_USE_MODELSCOPE=true python -m sglang.launch_server --model-path Qwen/Qwen3.5-397B-A17B --port 8000 --tp-size 8 --mem-fraction-static 0.8 --context-length 262144 --reasoning-parser qwen3 --speculative-algo NEXTN --speculative-num-steps 3 --speculative-eagle-topk 1 --speculative-num-draft-tokens 4

vLLM

vLLM 是一个高吞吐、内存高效的 LLM 推理与服务引擎。

Qwen3.5 需要使用开源仓库主分支中的 vLLM,可在全新环境中通过以下命令安装:

复制代码

uv pip install vllm --torch-backend=auto --extra-index-url https://wheels.vllm.ai/nightly

更多详情请参见其文档

有关 Qwen3.5 的详细使用指南,请参阅 vLLM Qwen3.5 使用说明

以下命令将在 http://localhost:8000/v1 创建 API 端点:

  • 标准版本:以下命令可用于在 8 个 GPU 上使用张量并行创建一个最大上下文长度为 262,144 个 token 的 API 端点。

    复制代码

    VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3.5-397B-A17B --port 8000 --tensor-parallel-size 8 --max-model-len 262144 --reasoning-parser qwen3

  • 工具调用:若要支持工具使用,可使用以下命令。

    复制代码

    VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3.5-397B-A17B --port 8000 --tensor-parallel-size 8 --max-model-len 262144 --reasoning-parser qwen3 --enable-auto-tool-choice --tool-call-parser qwen3_coder

  • 多 Token 预测(MTP):推荐使用以下命令启用 MTP:

    复制代码

    VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3.5-397B-A17B --port 8000 --tensor-parallel-size 8 --max-model-len 262144 --reasoning-parser qwen3 --speculative-config '{"method":"qwen3_next_mtp","num_speculative_tokens":2}'

  • 纯文本模式:以下命令会跳过视觉编码器和多模态配置,以释放内存用于额外的 KV 缓存:

    复制代码

    VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3.5-397B-A17B --port 8000 --tensor-parallel-size 8 --max-model-len 262144 --reasoning-parser qwen3 --language-model-only

KTransformers

KTransformers 是一个灵活的框架,支持通过 CPU-GPU 异构计算体验前沿的大语言模型推理优化。

有关使用 KTransformers 运行 Qwen3.5 的信息,请参阅 KTransformers 部署指南

Hugging Face Transformers

Hugging Face Transformers 提供了一个_轻量级_服务器,可用于快速测试和中等负载部署。

运行 Qwen3.5 需要最新版的 transformers

复制代码

pip install "transformers[serving] @ git+https://github.com/huggingface/transformers.git@main"

更多详情请参见其文档。同时请确保已安装 torchvision 和 pillow。

然后,运行 transformers serve 启动服务器,API 端点位于 http://localhost:8000/v1;如果可用,它会自动将模型加载到加速器上:

复制代码

transformers serve --force-model Qwen/Qwen3.5-397B-A17B --port 8000 --continuous-batching

通过 Chat Completions API 使用 Qwen3.5

Chat Completions API 可通过标准 HTTP 请求或 OpenAI SDK 访问。

此处我们展示使用 OpenAI Python SDK 的示例。

开始之前,请确保已安装 SDK 并配置了 API 密钥和 API 基础 URL,例如:

复制代码

pip install -U openai # Set the following accordingly export OPENAI_BASE_URL="http://localhost:8000/v1" export OPENAI_API_KEY="EMPTY"

TIP

我们建议在生成时使用以下采样参数组合:

  • 思考模式:temperature=0.6, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=0.0, repetition_penalty=1.0
  • 指令(或非思考)模式:temperature=0.7, top_p=0.8, top_k=20, min_p=0.0, presence_penalty=1.5, repetition_penalty=1.0

请注意,不同推理框架对采样参数的支持情况可能有所不同。

纯文本输入
复制代码

from openai import OpenAI # Configured by environment variables client = OpenAI() messages = [ {"role": "user", "content": "Type \"I love Qwen3.5\" backwards"}, ] chat_response = client.chat.completions.create( model="Qwen/Qwen3.5-397B-A17B", messages=messages, max_tokens=81920, temperature=0.6, top_p=0.95, extra_body={ "top_k": 20, }, ) print("Chat response:", chat_response)

相关推荐
Li emily3 小时前
解决了加密货币api多币种订阅时的数据乱序问题
人工智能·python·api·fastapi
山川绿水3 小时前
bugku——PWN——overflow2
人工智能·web安全·网络安全
程序员cxuan3 小时前
微信读书官方发了 skills,把我给秀麻了。
人工智能·后端·程序员
存在morning3 小时前
【GO语言开发实践】二 GO 并发快速上手
大数据·开发语言·golang
fake_ss1983 小时前
AI时代学习全栈项目开发的新范式
java·人工智能·学习·架构·个人开发·学习方法
nassi_3 小时前
对AI工程问题的一些思考
大数据·人工智能·hadoop
AI技术控4 小时前
《Transformers are Inherently Succinct》论文解读:从“能表达什么”到“多紧凑地表达”
人工智能·python·深度学习·机器学习·自然语言处理
蔡俊锋4 小时前
AI记忆压缩术:从305GB到7.4GB的魔法
人工智能·ai·ai 记忆
Upsy-Daisy4 小时前
AI Agent 项目学习笔记(二):Spring AI 与 ChatClient 主链路解析
人工智能·笔记·学习
zhangxingchao4 小时前
AI应用开发六:企业知识库
前端·人工智能·后端