这篇适合谁
适合有多卡 GPU 服务器、想把腾讯混元 Hunyuan-A13B-Instruct 放到 OpenAI 兼容接口后面的开发者。读完你能启动服务,会按请求开关思考模式,并且跑通一次完整的工具调用。
vLLM 能做什么
vLLM 是一个高性能的大模型推理和服务框架。它基于 PagedAttention 管理 KV 缓存,减少显存浪费,在长文本和高并发场景下更能保持吞吐。它提供 completions 和 chat completions 接口,兼容 OpenAI 协议,现有的 OpenAI 客户端代码可以直接调用[1]。
环境和安装
基础环境是 Ubuntu 22.04、Python 3.12、CUDA 12.8 和 PyTorch 2.8.0[1]。先把 pip 的索引换成清华镜像,再安装 vllm==0.10.0、openai==1.90.0 和 modelscope==1.25.0,版本号都是固定的[1]。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install vllm==0.10.0
pip install openai==1.90.0
pip install modelscope==1.25.0装完先做自检。确认 NVIDIA 驱动、CUDA 版本和 PyTorch 的 CUDA 编译版本能对上,可以分别用 nvidia-smi 和一行 PyTorch 命令查看[1]。这一步是最常见的排错入口,版本不一致时,后面的服务往往根本起不来。
下载权重
下载完成后,模型目录会出现在你设置的 cache_dir 下面。后面 --model 参数要指向的,是这个目录里模型所在的完整路径,两处路径必须一致。路径是否正确,是启动阶段最先排查的内容。
用 ModelScope 的 snapshot_download 下载,模型名是 Tencent-Hunyuan/Hunyuan-A13B-Instruct。cache_dir 要改成你实际保存的路径,直接用示例里的占位文字会出错[1][2]。
from modelscope import snapshot_download
model_dir = snapshot_download('Tencent-Hunyuan/Hunyuan-A13B-Instruct', cache_dir='请修改我!!!', revision='master')思考模式怎么开关
Hunyuan-A13B-Instruct 默认使用慢思考,也就是推理模式。关闭它有两种方法,一是在请求的 extra_body 里传 {"chat_template_kwargs": {"enable_thinking": false}},二是在提示词前加上 /no_think 前缀[1]。
如果希望服务端把推理过程作为单独的 reasoning_content 字段返回,启动时要加上 --enable-reasoning,并指定正确的推理解析器 hunyuan_a13b[1]。少了这两个参数,客户端拿不到 reasoning_content,这是常见的疑惑来源。
启动服务
下面的命令用 vLLM 的 OpenAI API 服务器,在 8085 端口上跑,使用四张卡。它设置了 --max-model-len 8192 和 --gpu_memory_utilization 0.9,并把模型名定为 Hunyuan-A13B-Instruct[1]。官方给出的显存预算建议是 4 张 H20[1]。服务就绪时,日志会出现 Application startup complete[1]。
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m vllm.entrypoints.openai.api_server \
--model /请修改我!!!/Tencent-Hunyuan/Hunyuan-A13B-Instruct \
--served-model-name Hunyuan-A13B-Instruct \
--max-model-len 8192 \
--tensor-parallel-size 4 \
--port 8085 \
--trust_remote_code \
--gpu_memory_utilization 0.9 \
--enable-reasoning \
--reasoning-parser hunyuan_a13b几个参数最值得调整。--tensor-parallel-size 是张量并行的分片数,通常与使用的 GPU 数相同[1]。--max-model-len 限制的是单个请求输入加输出的总长度,值越大占用的显存越多,容易触发显存不足[1]。出现这种情况时,可以把 --gpu_memory_utilization 下调到 0.8 或 0.7[1]。--trust_remote_code 允许加载模型仓库里的自定义代码,有些模型必须打开它才能正确初始化[1]。
服务起来后,用 curl 访问模型列表,确认接口可用[1]。
curl http://127.0.0.1:8085/v1/models用 Python 调用
测试脚本一次发送三个问题:一句日常问候,问模型是谁;一道 AIME 2025 的数学题;以及一个用 Python 写快速排序的请求[1]。整体评价是三个回答都不错,自我认知清晰,数学题的推理和最终答案正确,代码的注释、解释和测试用例也完整[1]。
这种组合很有参考价值。日常问答看的是基本对话能力,数学题考验的是长推理,代码题检验的是输出格式和完整性。三类问题放在一起跑,能比单看一个问题更快地发现服务是否正常。
客户端的基础地址是 http://127.0.0.1:8085/v1,API Key 填占位符 EMPTY[1]。注意端口要和启动命令里的 --port 一致。
from openai import OpenAI
openai_api_key = "EMPTY"
openai_api_base = "http://127.0.0.1:8085/v1" # 使用正确的端口
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)对话请求里设置 temperature=0 和 max_tokens=8000,并通过 chat_template_kwargs 打开思考[1]。
response = client.chat.completions.create(
model="Hunyuan-A13B-Instruct",
messages = [{"role": "user", "content": prompts[i]}],
temperature=0,
max_tokens=8000,
extra_body={
"chat_template_kwargs": {"enable_thinking": True}, # 默认开启思考,设置为False则关闭
}
)返回的 message 中,reasoning_content 和 content 是分开的两个字段[1]。做数学题的测试用的是一道 AIME 2025 的题目,题目答案为 70,模型最终给出的答案也是 70[1]。
工具调用
工具调用要额外加两个参数,启动命令里增加 --tool-call-parser hunyuan_a13b 和 --enable-auto-tool-choice[1][2]。
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m vllm.entrypoints.openai.api_server \
--model /请修改我!!!/Tencent-Hunyuan/Hunyuan-A13B-Instruct \
--served-model-name Hunyuan-A13B-Instruct \
--max-model-len 8192 \
--tensor-parallel-size 4 \
--port 8085 \
--trust_remote_code \
--gpu_memory_utilization 0.9 \
--tool-call-parser hunyuan_a13b \
--enable-auto-tool-choice \
--enable-reasoning \
--reasoning-parser hunyuan_a13b官方 README 中有两处没有更新。在 vLLM 里,工具调用解析器的值应为 hunyuan_a13b,而推理解析器已经集成在 vLLM 中,不需要额外处理[1][2]。
示例中的天气函数是模拟的,接收 location、date 和 unit 三个参数,返回固定的天气描述。真实环境需要接入外部天气接口[1]。
normalized_unit = "°C" if unit == "celsius" else "°F"
# 这里返回一个模拟结果,真实场景可替换为外部 API 调用
return f"{location}{date}多云,气温 28{normalized_unit},湿度 70%,东北风 3 级。"工具调用分三步走。先把包含 tool_calls 的 assistant 消息加入对话历史,再追加一条 role 为 tool 的消息,并带上对应的 tool_call_id,最后再发一次请求,让模型基于工具结果写出最终回答[1]。在深圳天气的测试中,模型最终回答为多云、28°C、湿度 70%、东北风 3 级,内容与模拟结果一致[1]。
常见问题
启动失败时,先看日志里是否出现显存不足的报错,再看模型路径是否存在。确认 CUDA_VISIBLE_DEVICES 列出的卡数和 --tensor-parallel-size 一致,两者不一致时,服务会因为分片数对不上而无法正常启动。
如果思考内容很长,导致回答迟迟不出来,可以按前文的方法在请求里关闭思考,或在提示词前加 /no_think,再比较两种输出的差别。
最常见的问题是显存不足。先降低 --gpu_memory_utilization,再考虑缩短 --max-model-len。客户端的 model 字段必须与 --served-model-name 一致,否则请求会失败[1]。
本文改编自 Datawhale 开源项目 self-llm 中的混元 Hunyuan-A13B-Instruct vLLM 部署教程[1],原文以 Apache-2.0 许可证发布。
来源
- 102-Hunyuan-A13B-Instruct-vLLMDatawhale self-llm (Apache-2.0)
- 2tencent/Hunyuan-A13B-InstructHugging Face (Tencent)
引用本页: 腾讯混元 Hunyuan-A13B 用 vLLM 部署. TellWorld, https://www.tellworld.net/zh/practice/practice-hunyuan-a13b-vllm. 更新于 2026-11-14