tencent_hunyuan/Hunyuan-7B-Instruct-FP8
模型介绍文件和版本Pull Requests讨论分析
下载使用量0


🤗 HuggingFace |  🤖 ModelScope |  🪡 AngelSlim

🖥️ 官方网站  |   🕖 HunyuanAPI  |   🕹️ 演示    

GITHUB | cnb.cool | LICENSE | 微信 | Discord

模型介绍

Hunyuan是腾讯开源的高效能大型语言模型系列,旨在支持在多样化计算环境中实现灵活部署。从边缘设备到高并发生产系统,这些模型通过先进的量化支持和超长上下文能力,提供了卓越性能表现。

我们已发布一系列Hunyuan稠密模型,包括预训练和指令微调版本,参数规模涵盖0.5B、1.8B、4B和7B。这些模型采用与Hunyuan-A13B相似的训练策略,因此继承了其强大的性能特性。这一全面的模型家族支持灵活的部署优化——从资源受限的边缘计算(使用较小模型变体)到高吞吐量的生产环境(使用较大模型),同时在各种场景下均保持强大能力。

核心特性与优势

  • 混合推理支持:同时支持快速思考与慢速思考模式,用户可根据需求灵活选择。
  • 超长上下文理解:原生支持256K上下文窗口,在长文本任务中保持稳定性能。
  • 增强型智能体能力:针对智能体任务进行优化,在BFCL-v3、τ-Bench及C3-Bench等基准测试中取得领先成绩。
  • 高效推理:采用分组查询注意力(GQA)技术,并支持多种量化格式,实现高效推理。

相关新闻

  • 2025年7月30日 我们已在Hugging Face开源Hunyuan-0.5B-Pretrain、Hunyuan-0.5B-Instruct、Hunyuan-1.8B-Pretrain、Hunyuan-1.8B-Instruct、Hunyuan-4B-Pretrain、Hunyuan-4B-Instruct、Hunyuan-7B-Pretrain、Hunyuan-7B-Instruct。

基准测试

注:以下基准测试由TRT-LLM-backend在多个基础模型上评估得出。

模型Hunyuan-0.5B-PretrainHunyuan-1.8B-PretrainHunyuan-4B-PretrainHunyuan-7B-Pretrain
MMLU54.0264.6274.0179.82
MMLU-Redux54.7264.4273.5379
MMLU-Pro31.1538.6551.9157.79
SuperGPQA17.2324.9827.2830.47
BBH45.9274.3275.1782.95
GPQA27.7635.8143.5244.07
GSM8K55.6477.2687.4988.25
MATH42.9562.8572.2574.85
EvalPlus39.7160.6767.7666.96
MultiPL-E21.8345.9259.8760.41
MBPP43.3866.1476.4676.19
CRUX-O30.7536.8856.560.75
Chinese SimpleQA12.5122.3130.5338.86
simpleQA (5shot)2.383.614.215.69
主题基准测试Hunyuan-0.5B-InstructHunyuan-1.8B-InstructHunyuan-4B-InstructHunyuan-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

首先,请安装 transformers。

pip install "transformers>=4.56.0"

我们的模型默认采用慢思考推理方式,有两种方法可以禁用CoT推理。

  1. 调用apply_chat_template时传入**"enable_thinking=False"**。
  2. 在提示词前添加**"/no_think"将强制模型不使用CoT推理。同样,在提示词前添加"/think"**将强制模型执行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 进行训练

在接下来的章节中,我们将介绍如何使用 LLaMA-Factory 对 Hunyuan 模型进行微调。

前提条件

请确认已安装以下依赖项:

  • LLaMA-Factory:按照官方安装指南操作
  • DeepSpeed(可选):按照官方安装指南操作
  • Transformer 库:使用配套分支(Hunyuan 提交的代码待审核)
    pip install git+https://github.com/huggingface/transformers@4970b23cedaf745f963779b4eae68da281e8c6ca

数据准备

我们需要准备自定义数据集:

  1. 将数据整理为 json 格式,并放置在 LLaMA-Factory 的 data 目录下。当前实现采用 sharegpt 数据集格式,其结构要求如下:
[
  {
    "messages": [
      {
        "role": "system",
        "content": "System prompt (optional)"
      },
      {
        "role": "user",
        "content": "Human instruction"
      },
      {
        "role": "assistant",
        "content": "Model response"
      }
    ]
  }
]

详情请参考前文提到的数据格式部分。

  1. 使用以下格式在 data/dataset_info.json 文件中定义您的数据集:
"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"
  }
}

训练执行

  1. 将 train/llama_factory_support/example_configs 目录下的所有文件复制到 LLaMA-Factory 中的 example/hunyuan 目录。
  2. 修改配置文件 hunyuan_full.yaml 中的模型路径和数据集名称。根据需要调整其他配置:
### model
model_name_or_path: [!!!add the model path here!!!]

### dataset
dataset: [!!!add the dataset name here!!!]
  1. 执行训练命令: *单节点训练 注意:设置环境变量 DISABLE_VERSION_CHECK 为 1 以避免版本冲突。
    export DISABLE_VERSION_CHECK=1
    llamafactory-cli train examples/hunyuan/hunyuan_full.yaml
    *多节点训练 在每个节点上执行以下命令。根据您的环境配置 NNODES、NODE_RANK、MASTER_ADDR 和 MASTER_PORT:
    export 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 量化

我们采用 FP8-static 量化方式,FP8 量化采用 8 位浮点格式,通过少量校准数据(无需训练)预先确定量化尺度,将模型权重和激活值转换为 FP8 格式,以提升推理效率并降低部署门槛。您可以使用 AngleSlim 进行量化,也可以直接下载我们已量化完成的开源模型使用 LINK。

Int4 量化

我们采用 GPTQ 和 AWQ 算法实现 W4A16 量化。

GPTQ 逐层处理模型权重,利用少量校准数据最小化量化权重的重构误差,并通过近似 Hessian 逆矩阵的优化过程逐层调整权重。该过程无需重新训练模型,仅需少量校准数据即可完成权重量化,提升推理效率并降低部署门槛。 AWQ 利用少量校准数据(无需训练),统计计算激活值的幅度。对于每个权重通道,计算一个缩放系数 s 来放大重要权重的数值范围,使得量化过程中能够保留更多信息。

您可以使用 AngleSlim 进行量化,也可以直接下载我们已量化完成的开源模型使用 LINK。

量化基准测试

本小节介绍 Hunyuan 量化模型的基准测试指标。

测试基准量化方式Hunyuan-0.5B-InstructHunyuan-1.8B-InstructHunyuan-4B-InstructHunyuan-7B-Instruct
DROPB16
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-DiamondB16
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
OlympiadBenchB16
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 2024B16
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 镜像

我们提供了一个基于最新版 TensorRT-LLM 构建的预构建 Docker 镜像。

我们以 tencent/Hunyuan-7B-Instruct 为例

  • 开始使用:

https://hub.docker.com/r/hunyuaninfer/hunyuan-large/tags

docker pull hunyuaninfer/hunyuan-7B:hunyuan-moe-7B-trtllm
docker 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-trtllm
  • 准备配置文件:
cat >/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
EOF
  • 启动 API 服务器:
trtllm-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

vllm

启动

请使用 v0.10.0 或更高版本的 vLLM 进行推理。

我们以 tencent/Hunyuan-7B-Instruct 为例

  • 下载模型文件:

    • Huggingface:vllm 将自动下载。
    • ModelScope:modelscope download --model Tencent-Hunyuan/Hunyuan-7B-Instruct
  • 通过 huggingface 下载模型:

export MODEL_PATH=tencent/Hunyuan-7B-Instruct
  • 通过 modelscope 下载的模型:
export MODEL_PATH=/root/.cache/modelscope/hub/models/Tencent-Hunyuan/Hunyuan-7B-Instruct/
  • 启动 API 服务器:
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.txt
  • 成功运行服务脚本后,请运行请求脚本
curl 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 模式。

Int8 量化模型部署

部署 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
Int4 量化模型部署

部署 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
FP8 量化模型部署

部署 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 镜像

我们还提供了一个基于最新版 SGLang 构建的预构建 Docker 镜像。

我们以 tencent/Hunyuan-7B-Instruct 为例

开始使用:

  • 拉取 Docker 镜像
docker pull lmsysorg/sglang:latest
  • 启动 API 服务器:
docker 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)与我们取得联系。