CANN/Hy3混元3推理优化
2026/5/9 12:25:30 网站建设 项目流程

Hunyuan3 (Hy3-preview) 模型在NPU实现高性能推理

【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer

概述

Hunyuan3 (Hy3-preview) 是腾讯混元团队开发的大规模 MoE 语言模型,总参数量 295B,激活参数量约 21B/token。本样例基于 Hunyuan3 开源代码完成模型迁移与 NPU 优化适配,在 Atlas A3 8卡上实现了 ge_graph 图模式高性能推理,Decode 性能达到 28.44 ms/t(对比原始 eager 基线 293 ms/t,10.3x 加速)。

模型关键特性:

  • MoE 架构:80 层(1 Dense FFN + 79 MoE),192 专家,top-8 sigmoid routing
  • GQA Attention:64 Q heads / 8 KV heads,QK Norm before RoPE
  • Shared Expert per MoE layer
  • 120K 大词表
  • 最大上下文 256K

支持的产品型号

Atlas A3 系列产品

环境准备

  1. 安装 CANN 软件包。

    本样例依赖 CANN 开发套件包(cann-toolkit)与 CANN 二进制算子包(cann-kernels),支持的 CANN 软件版本为CANN 9.0.0

    请从软件包下载地址下载Ascend-cann-toolkit_${version}_linux-${arch}.runAscend-cann-A3-ops_${version}_linux-${arch}.run软件包,并参考 CANN 安装文档 进行安装。

    • ${version}表示 CANN 包版本号,如 9.0.0。
    • ${arch}表示 CPU 架构,如 aarch64、x86_64。
  2. 安装 Ascend Extension for PyTorch(torch_npu)。

    Ascend Extension for PyTorch(torch_npu)为支撑 PyTorch 框架运行在 NPU 上的适配插件,本样例支持的 torch_npu 版本为v2.8.0.post6,PyTorch 版本为2.8.0

    请从软件包下载地址下载torch_npu-2.8.0.post4-cp311-cp311-manylinux_2_28_${arch}.whl安装包,参考 torch_npu 安装文档 进行安装。

    • ${arch}表示 CPU 架构,如 aarch64、x86_64。
  3. 下载项目源码并安装依赖的 Python 库。

    # 下载项目源码,以 master 分支为例 git clone https://gitcode.com/cann/cann-recipes-infer.git # 安装依赖的 Python 库,仅支持 Python 3.11 cd cann-recipes-infer pip3 install -r ./models/hy3/requirements.txt
  4. 配置样例运行所需环境信息。

    修改executor/scripts/set_env.sh中的如下字段:

    • IPs:配置所有节点的 IP,按照 rank id 排序,多个节点的 IP 通过空格分开,例如:('xxx.xxx.xxx.xxx' 'xxx.xxx.xxx.xxx')
    • cann_path: CANN 软件包安装路径,例如/usr/local/Ascend/ascend-toolkit/latest

    说明:HCCL 相关配置,如HCCL_SOCKET_IFNAMEHCCL_OP_EXPANSION_MODE,可以参考集合通信文档 并在executor/scripts/function.sh中自定义配置。

权重准备

本样例使用 BF16 原始权重,无需额外权重转换(YAML 中已配置enable_online_split_weight: True,推理启动时自动完成多卡切分)。

请将 Hunyuan3 原始权重下载至本地路径,例如/data/models/hy3-preview/

推理执行

  1. 配置推理执行需要加载的权重文件以及 YAML 文件。

    • 修改 YAML 文件中model_path参数。关于 YAML 文件中的更多配置说明可参见 YAML 参数描述。

      models/hy3/config目录下已提供了较优性能的 YAML 样例供您参考,您可以根据场景选择对应的 YAML 文件:

      YAML 文件执行模式说明
      hy3_rank16_4tp_16ep_gegraph_bf16.yamlge_graph推荐,图模式 + SuperKernel + compile cache
      config/ci/hy3_rank_16_4tp_16ep_eager.yamleager单算子模式,用于调试对比
      config/ci/hy3_rank_16_4tp_16ep_gegraph.yamlge_graphCI 配置,batch_size=16
      config/ci/hy3_rank_16_4tp_16ep_gegraph_longbench.yamlge_graphLongBench 长序列数据集

      本文以hy3_rank16_4tp_16ep_gegraph_bf16.yaml文件为例,修改其中的model_path参数,将其设置为权重准备阶段准备好的权重文件存储路径,例如/data/models/hy3-preview/

    • 修改models/hy3/infer.sh脚本中YAML_FILE_NAME参数。

      YAML_FILE_NAME设置为config文件夹下 YAML 文件名称,例如hy3_rank16_4tp_16ep_gegraph_bf16.yaml

  2. 准备输入 prompt。

    • 使用内置 prompt。

      本样例已在dataset/default_prompt.json中内置了输入 prompt,若您直接使用内置 prompt,本步骤可直接跳过。

      当然,您也可以在dataset/default_prompt.json文件中自定义 prompt 输入。

    • 使用长序列 prompt。

      本样例默认使用内置 prompt,若您需要使用长序列 prompt,可以选择 LongBench 数据集。需要执行以下操作:

      1. 修改 YAML 文件中的dataset参数,将其修改为dataset: "LongBench",使用 LongBench 数据集作为长序列 prompt。

      2. 若您的机器无法联网,需要您从 HuggingFace 手动下载数据集至dataset/LongBench目录下,LongBench文件夹需手工创建,目录中包含LongBench.pydata目录,并需要在LongBench.py中修改数据集加载路径;若您的机器可正常联网,样例执行过程中会自动在线读取 LongBench 数据集,您无需手工下载。

      说明:在使用 LongBench 数据集或其他自定义数据集时,默认执行文本摘要任务,可在cann-recipes-infer/executor/utils/data_utils.pybuild_dataset_input函数里修改默认的 system prompt。

  3. 执行推理脚本。

    cd models/hy3 bash infer.sh

    说明:如果是多机环境,需要在每个节点上执行。

Benchmark

基于 Atlas A3 8卡,使用hy3_rank16_4tp_16ep_gegraph_bf16.yaml配置,BF16 精度。

指标数值测试条件
Prefill 耗时1,452 ms1024 tokens,batch=16
Decode 单步耗时28.44 ms/trange: 27.4-29.4 ms/t,32 tokens
Decode warmup(首次)~91 s含图编译
Decode warmup(cached)~8 scompile cache 命中
对比 eager 基线10.3x 加速原始 eager Decode 293 ms/t

注:性能数据基于 ge_graph 模式 + SuperKernel + compile cache 采集。

【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询