🤗 HuggingFace | 🤖 ModelScope | 🪡 AngelSlim
🖥️ 官方网站 | 🕖 HunyuanAPI | 🕹️ 演示
GITHUB | cnb.cool | LICENSE | 微信 | Discord
Hunyuan是腾讯开源的高效能大型语言模型系列,旨在支持在多样化计算环境中实现灵活部署。从边缘设备到高并发生产系统,这些模型通过先进的量化支持和超长上下文能力,提供了卓越性能表现。
我们已发布一系列Hunyuan稠密模型,包括预训练和指令微调版本,参数规模涵盖0.5B、1.8B、4B和7B。这些模型采用与Hunyuan-A13B相似的训练策略,因此继承了其强大的性能特性。这一全面的模型家族支持灵活的部署优化——从资源受限的边缘计算(使用较小模型变体)到高吞吐量的生产环境(使用较大模型),同时在各种场景下均保持强大能力。
注:以下基准测试由TRT-LLM-backend在多个基础模型上评估得出。
| 模型 | Hunyuan-0.5B-Pretrain | Hunyuan-1.8B-Pretrain | Hunyuan-4B-Pretrain | Hunyuan-7B-Pretrain |
|---|---|---|---|---|
| MMLU | 54.02 | 64.62 | 74.01 | 79.82 |
| MMLU-Redux | 54.72 | 64.42 | 73.53 | 79 |
| MMLU-Pro | 31.15 | 38.65 | 51.91 | 57.79 |
| SuperGPQA | 17.23 | 24.98 | 27.28 | 30.47 |
| BBH | 45.92 | 74.32 | 75.17 | 82.95 |
| GPQA | 27.76 | 35.81 | 43.52 | 44.07 |
| GSM8K | 55.64 | 77.26 | 87.49 | 88.25 |
| MATH | 42.95 | 62.85 | 72.25 | 74.85 |
| EvalPlus | 39.71 | 60.67 | 67.76 | 66.96 |
| MultiPL-E | 21.83 | 45.92 | 59.87 | 60.41 |
| MBPP | 43.38 | 66.14 | 76.46 | 76.19 |
| CRUX-O | 30.75 | 36.88 | 56.5 | 60.75 |
| Chinese SimpleQA | 12.51 | 22.31 | 30.53 | 38.86 |
| simpleQA (5shot) | 2.38 | 3.61 | 4.21 | 5.69 |
| 主题 | 基准测试 | Hunyuan-0.5B-Instruct | Hunyuan-1.8B-Instruct | Hunyuan-4B-Instruct | Hunyuan-7B-Instruct |
|---|---|---|---|---|---|
| 数学 | AIME 2024 AIME 2025 MATH | 17.2 20 48.5 | 56.7 53.9 86 | 78.3 66.5 92.6 | 81.1 75.3 93.7 |
| 科学 | GPQA-Diamond OlympiadBench | 23.3 29.6 | 47.2 63.4 | 61.1 73.1 | 60.1 76.5 |
| 编程 | Livecodebench Fullstackbench | 11.1 20.9 | 31.5 42 | 49.4 54.6 | 57 56.3 |
| 推理 | BBH DROP ZebraLogic | 40.3 52.8 34.5 | 64.6 76.7 74.6 | 83 78.2 83.5 | 87.8 85.9 85.1 |
| 指令 遵循 | IF-Eval SysBench | 49.7 28.1 | 67.6 55.5 | 76.6 68 | 79.3 72.7 |
| 智能体 | BFCL v3 τ-Bench ComplexFuncBench C3-Bench | 49.8 14.4 13.9 45.3 | 58.3 18.2 22.3 54.6 | 67.9 30.1 26.3 64.3 | 70.8 35.3 29.2 68.5 |
| 长 上下文 | PenguinScrolls longbench-v2 FRAMES | 53.9 34.7 41.9 | 73.1 33.2 55.6 | 83.1 44.1 79.2 | 82 43 78.6 |
首先,请安装 transformers。
pip install "transformers>=4.56.0"我们的模型默认采用慢思考推理方式,有两种方法可以禁用CoT推理。
以下代码片段展示了如何使用transformers库加载和应用模型。它还演示了如何启用和禁用推理模式,以及如何解析推理过程和最终输出。
我们以tencent/Hunyuan-7B-Instruct为例
from transformers import AutoModelForCausalLM, AutoTokenizer
import os
import re
model_name_or_path = "tencent/Hunyuan-7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, device_map="auto") # You may want to use bfloat16 and/or move to GPU here
messages = [
{"role": "user", "content": "Write a short summary of the benefits of regular exercise"},
]
tokenized_chat = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True,return_tensors="pt",
enable_thinking=True # Toggle thinking mode (default: True)
)
outputs = model.generate(tokenized_chat.to(model.device), max_new_tokens=2048)
output_text = tokenizer.decode(outputs[0])
print("output_text=",output_text)
think_pattern = r'<think>(.*?)</think>'
think_matches = re.findall(think_pattern, output_text, re.DOTALL)
answer_pattern = r'<answer>(.*?)</answer>'
answer_matches = re.findall(answer_pattern, output_text, re.DOTALL)
think_content = [match.strip() for match in think_matches][0]
answer_content = [match.strip() for match in answer_matches][0]
print(f"thinking_content:{think_content}\n\n")
print(f"answer_content:{answer_content}\n\n")
我们建议使用以下参数集进行推理。请注意,我们的模型没有默认的 system_prompt。
{
"do_sample": true,
"top_k": 20,
"top_p": 0.8,
"repetition_penalty": 1.05,
"temperature": 0.7
}若您需要对我们的指令模型进行微调,建议将数据处理为以下格式,该格式同时适用于慢思考和快思考场景。
# think_pattern
think = ""
answer = ""
think_pattern = f"<think>\n{think}\n</think>\n<answer>\n{answer}\n</answer>"
# fast think pattern
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "/no_think海水为什么是咸的" },
{"role": "assistant", "content": "<think>\n\n</think>\n<answer>\n海水是咸的主要是因为其中含有许多溶解在水中的盐类和矿物质。这些盐类和矿物质来自于地球表面的岩石和土壤中的化学物质,随着时间的推移,它们被带到了海洋中。当海水蒸发时,水分蒸发掉了,但盐类和矿物质仍然留在水中,导致海水变得更加咸味。因此,海水的咸度是由其中的盐类和矿物质的含量决定的。\n</answer>"}
]
# slow think pattern
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "1+1=" },
{"role": "assistant", "content": "<think>\n嗯,用户问的是1加1等于多少。首先,我需要确认这是一个基本的算术问题。1加1在十进制的数学体系中,通常的结果是2。不过,可能需要考虑是否有其他情况,比如二进制或者其他数制,但用户没有特别说明,所以默认应该是十进制。另外,有时候可能会有脑筋急转弯的情况,比如在某些语境下1+1可能等于1(比如1滴水加1滴水还是1滴水),但通常数学问题中都是2。所以最准确的回答应该是2。</think>\n<answer>\n在十进制的基本算术运算中,1加1的结果是2。这是数学中最基础的加法运算之一,遵循自然数的加法规则。因此,1 + 1 = 2。\n</answer>"}
]
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("your_tokenizer_path", trust_remote_code=True)
train_ids = tokenizer.apply_chat_template(messages)在接下来的章节中,我们将介绍如何使用 LLaMA-Factory 对 Hunyuan 模型进行微调。
请确认已安装以下依赖项:
pip install git+https://github.com/huggingface/transformers@4970b23cedaf745f963779b4eae68da281e8c6ca我们需要准备自定义数据集:
json 格式,并放置在 LLaMA-Factory 的 data 目录下。当前实现采用 sharegpt 数据集格式,其结构要求如下:[
{
"messages": [
{
"role": "system",
"content": "System prompt (optional)"
},
{
"role": "user",
"content": "Human instruction"
},
{
"role": "assistant",
"content": "Model response"
}
]
}
]详情请参考前文提到的数据格式部分。
"dataset_name": {
"file_name": "dataset.json",
"formatting": "sharegpt",
"columns": {
"messages": "messages"
},
"tags": {
"role_tag": "role",
"content_tag": "content",
"user_tag": "user",
"assistant_tag": "assistant",
"system_tag": "system"
}
}train/llama_factory_support/example_configs 目录下的所有文件复制到 LLaMA-Factory 中的 example/hunyuan 目录。hunyuan_full.yaml 中的模型路径和数据集名称。根据需要调整其他配置:### model
model_name_or_path: [!!!add the model path here!!!]
### dataset
dataset: [!!!add the dataset name here!!!]export DISABLE_VERSION_CHECK=1
llamafactory-cli train examples/hunyuan/hunyuan_full.yamlexport DISABLE_VERSION_CHECK=1
FORCE_TORCHRUN=1 NNODES=${NNODES} NODE_RANK=${NODE_RANK} MASTER_ADDR=${MASTER_ADDR} MASTER_PORT=${MASTER_PORT} \
llamafactory-cli train examples/hunyuan/hunyuan_full.yaml
我们使用自研的 AngleSlim 压缩工具生成了 FP8 和 INT4 量化模型。AngleSlim 是一套致力于打造更易用、全面且高效的模型压缩解决方案的工具集。
我们采用 FP8-static 量化方式,FP8 量化采用 8 位浮点格式,通过少量校准数据(无需训练)预先确定量化尺度,将模型权重和激活值转换为 FP8 格式,以提升推理效率并降低部署门槛。您可以使用 AngleSlim 进行量化,也可以直接下载我们已量化完成的开源模型使用 LINK。
我们采用 GPTQ 和 AWQ 算法实现 W4A16 量化。
GPTQ 逐层处理模型权重,利用少量校准数据最小化量化权重的重构误差,并通过近似 Hessian 逆矩阵的优化过程逐层调整权重。该过程无需重新训练模型,仅需少量校准数据即可完成权重量化,提升推理效率并降低部署门槛。 AWQ 利用少量校准数据(无需训练),统计计算激活值的幅度。对于每个权重通道,计算一个缩放系数 s 来放大重要权重的数值范围,使得量化过程中能够保留更多信息。
您可以使用 AngleSlim 进行量化,也可以直接下载我们已量化完成的开源模型使用 LINK。
本小节介绍 Hunyuan 量化模型的基准测试指标。
| 测试基准 | 量化方式 | Hunyuan-0.5B-Instruct | Hunyuan-1.8B-Instruct | Hunyuan-4B-Instruct | Hunyuan-7B-Instruct |
|---|---|---|---|---|---|
| DROP | B16 FP8 Int4GPTQ Int4AWQ | 52.8 51.6 50.9 48.9 | 76.7 75.1 73.0 71.7 | 78.2 78.3 78.1 78.2 | 85.9 86.0 85.7 85.9 |
| GPQA-Diamond | B16 FP8 Int4GPTQ Int4AWQ | 23.3 22.5 23.3 23.3 | 47.2 47.7 44.43 43.62 | 61.1 60.2 58.1 - | 60.1 60.1 60.0 60.1 |
| OlympiadBench | B16 FP8 Int4GPTQ Int4AWQ | 29.6 29.6 26.8 26.3 | 63.4 62.5 60.9 61.7 | 73.1 73.1 71.1 71.2 | 76.5 76.6 76.2 76.4 |
| AIME 2024 | B16 FP8 Int4GPTQ Int4AWQ | 17.2 17.2 - - | 56.7 55.17 - - | 78.3 76.6 - - | 81.1 80.9 81.0 80.9 |
在部署时,您可以使用 TensorRT-LLM、vLLM 或 SGLang 等框架来提供模型服务,并创建兼容 OpenAI 的 API 端点。
镜像:https://hub.docker.com/r/hunyuaninfer/hunyuan-7B/tags
我们提供了一个基于最新版 TensorRT-LLM 构建的预构建 Docker 镜像。
我们以 tencent/Hunyuan-7B-Instruct 为例
https://hub.docker.com/r/hunyuaninfer/hunyuan-large/tags
docker pull hunyuaninfer/hunyuan-7B:hunyuan-moe-7B-trtllmdocker run --privileged --user root --name hunyuanLLM_infer --rm -it --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --gpus=all hunyuaninfer/hunyuan-7B:hunyuan-moe-7B-trtllmcat >/path/to/extra-llm-api-config.yml <<EOF
use_cuda_graph: true
cuda_graph_padding_enabled: true
cuda_graph_batch_sizes:
- 1
- 2
- 4
- 8
- 16
- 32
print_iter_log: true
EOFtrtllm-serve \
/path/to/HunYuan-moe-7B \
--host localhost \
--port 8000 \
--backend pytorch \
--max_batch_size 32 \
--max_num_tokens 16384 \
--tp_size 2 \
--kv_cache_free_gpu_memory_fraction 0.6 \
--trust_remote_code \
--extra_llm_api_options /path/to/extra-llm-api-config.yml请使用 v0.10.0 或更高版本的 vLLM 进行推理。
我们以 tencent/Hunyuan-7B-Instruct 为例
下载模型文件:
modelscope download --model Tencent-Hunyuan/Hunyuan-7B-Instruct通过 huggingface 下载模型:
export MODEL_PATH=tencent/Hunyuan-7B-Instructexport MODEL_PATH=/root/.cache/modelscope/hub/models/Tencent-Hunyuan/Hunyuan-7B-Instruct/python3 -m vllm.entrypoints.openai.api_server \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--model ${MODEL_PATH} \
--tensor-parallel-size 1 \
--dtype bfloat16 \
--quantization experts_int8 \
--served-model-name hunyuan \
2>&1 | tee log_server.txtcurl http://0.0.0.0:8000/v1/chat/completions -H 'Content-Type: application/json' -d '{
"model": "hunyuan",
"messages": [
{
"role": "system",
"content": [{"type": "text", "text": "You are a helpful assistant."}]
},
{
"role": "user",
"content": [{"type": "text", "text": "请按面积大小对四大洋进行排序,并给出面积最小的洋是哪一个?直接输出结果。"}]
}
],
"max_tokens": 2048,
"temperature":0.7,
"top_p": 0.6,
"top_k": 20,
"repetition_penalty": 1.05,
"stop_token_ids": [127960]
}'本节介绍使用 vLLM 部署量化后模型的流程。
默认服务器采用 BF16 模式。
部署 HunYuan-7B 模型的 Int8 仅权重版本,只需设置环境变量。
接下来启动 Int8 服务。运行:
python3 -m vllm.entrypoints.openai.api_server \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--model ${MODEL_PATH} \
--tensor-parallel-size 1 \
--dtype bfloat16 \
--served-model-name hunyuan \
--quantization experts_int8 \
2>&1 | tee log_server.txt部署 HunYuan-7B 模型的 Int4 仅权重版本,只需设置环境变量,使用 GPTQ 方法即可。
export MODEL_PATH=PATH_TO_INT4_MODEL接下来我们启动 Int4 服务。运行
python3 -m vllm.entrypoints.openai.api_server \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--model ${MODEL_PATH} \
--tensor-parallel-size 1 \
--dtype bfloat16 \
--served-model-name hunyuan \
--quantization gptq_marlin \
2>&1 | tee log_server.txt部署 HunYuan-7B 模型的 W8A8C8 版本仅需设置环境变量
接下来我们启动 FP8 服务。运行
python3 -m vllm.entrypoints.openai.api_server \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--model ${MODEL_PATH} \
--tensor-parallel-size 1 \
--dtype bfloat16 \
--served-model-name hunyuan \
--kv-cache-dtype fp8 \
2>&1 | tee log_server.txt我们还提供了一个基于最新版 SGLang 构建的预构建 Docker 镜像。
我们以 tencent/Hunyuan-7B-Instruct 为例
开始使用:
docker pull lmsysorg/sglang:latestdocker run --entrypoint="python3" --gpus all \
--shm-size 32g \
-p 30000:30000 \
--ulimit nproc=10000 \
--privileged \
--ipc=host \
lmsysorg/sglang:latest \
-m sglang.launch_server --model-path hunyuan/huanyuan_7B --tp 4 --trust-remote-code --host 0.0.0.0 --port 30000如果您想给我们的研发和产品团队留言,欢迎联系我们的开源团队。您也可以通过邮箱(hunyuan_opensource@tencent.com)与我们取得联系。