周红伟: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)

相关推荐
jianqiang.xue几秒前
专栏简介:《嵌入式 AI 智能体设计实战》
人工智能·stm32·单片机·物联网·架构·esp32
宋哥转AI2 分钟前
深入理解 AI Agent · 多 Agent 编排 #03:Supervisor 与 Orchestrator——Dream-SaaS 双层编排架构拆解
java·人工智能·ai
逻辑君2 分钟前
ANNA 7.6 知识智能引擎白皮书
人工智能·机器学习
叠层归一研究院2 分钟前
基于区分本源的此刻存在唯一性本体论推演
人工智能·算法
维核科技5 分钟前
三个业务共用一台服务器,显存不够用了
大数据·服务器·人工智能
听我哔哔5 分钟前
AI 漫剧制作步骤全流程分享:从剧本到成片的个人实操记录
人工智能·ai漫剧·漫剧制作
Bode_20027 分钟前
AI工具/大模型学习
人工智能·学习
桐盛科技10 分钟前
什么是边缘计算网关?桐盛科技拆解智慧公厕与能碳管理选型指南
人工智能·边缘计算
lailai041011 分钟前
AI远程控制的技术原理与实现路径
大数据·人工智能
科创致远12 分钟前
芜湖新能源汽车配套企业的多工厂命题:复制一家工厂,复制的是标准esop
大数据·人工智能·汽车·精益工程