CANN/Hy3混元3推理优化
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/t10.3x 加速。模型关键特性MoE 架构80 层1 Dense FFN 79 MoE192 专家top-8 sigmoid routingGQA Attention64 Q heads / 8 KV headsQK Norm before RoPEShared Expert per MoE layer120K 大词表最大上下文 256K支持的产品型号Atlas A3 系列产品环境准备安装 CANN 软件包。本样例依赖 CANN 开发套件包cann-toolkit与 CANN 二进制算子包cann-kernels支持的 CANN 软件版本为CANN 9.0.0。请从软件包下载地址下载Ascend-cann-toolkit_${version}_linux-${arch}.run与Ascend-cann-A3-ops_${version}_linux-${arch}.run软件包并参考 CANN 安装文档 进行安装。${version}表示 CANN 包版本号如 9.0.0。${arch}表示 CPU 架构如 aarch64、x86_64。安装 Ascend Extension for PyTorchtorch_npu。Ascend Extension for PyTorchtorch_npu为支撑 PyTorch 框架运行在 NPU 上的适配插件本样例支持的 torch_npu 版本为v2.8.0.post6PyTorch 版本为2.8.0。请从软件包下载地址下载torch_npu-2.8.0.post4-cp311-cp311-manylinux_2_28_${arch}.whl安装包参考 torch_npu 安装文档 进行安装。${arch}表示 CPU 架构如 aarch64、x86_64。下载项目源码并安装依赖的 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配置样例运行所需环境信息。修改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_IFNAME、HCCL_OP_EXPANSION_MODE可以参考集合通信文档 并在executor/scripts/function.sh中自定义配置。权重准备本样例使用 BF16 原始权重无需额外权重转换YAML 中已配置enable_online_split_weight: True推理启动时自动完成多卡切分。请将 Hunyuan3 原始权重下载至本地路径例如/data/models/hy3-preview/。推理执行配置推理执行需要加载的权重文件以及 YAML 文件。修改 YAML 文件中model_path参数。关于 YAML 文件中的更多配置说明可参见 YAML 参数描述。在models/hy3/config目录下已提供了较优性能的 YAML 样例供您参考您可以根据场景选择对应的 YAML 文件YAML 文件执行模式说明hy3_rank16_4tp_16ep_gegraph_bf16.yamlge_graph推荐图模式 SuperKernel compile cacheconfig/ci/hy3_rank_16_4tp_16ep_eager.yamleager单算子模式用于调试对比config/ci/hy3_rank_16_4tp_16ep_gegraph.yamlge_graphCI 配置batch_size16config/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。准备输入 prompt。使用内置 prompt。本样例已在dataset/default_prompt.json中内置了输入 prompt若您直接使用内置 prompt本步骤可直接跳过。当然您也可以在dataset/default_prompt.json文件中自定义 prompt 输入。使用长序列 prompt。本样例默认使用内置 prompt若您需要使用长序列 prompt可以选择 LongBench 数据集。需要执行以下操作修改 YAML 文件中的dataset参数将其修改为dataset: LongBench使用 LongBench 数据集作为长序列 prompt。若您的机器无法联网需要您从 HuggingFace 手动下载数据集至dataset/LongBench目录下LongBench文件夹需手工创建目录中包含LongBench.py和data目录并需要在LongBench.py中修改数据集加载路径若您的机器可正常联网样例执行过程中会自动在线读取 LongBench 数据集您无需手工下载。说明在使用 LongBench 数据集或其他自定义数据集时默认执行文本摘要任务可在cann-recipes-infer/executor/utils/data_utils.py的build_dataset_input函数里修改默认的 system prompt。执行推理脚本。cd models/hy3 bash infer.sh说明如果是多机环境需要在每个节点上执行。Benchmark基于 Atlas A3 8卡使用hy3_rank16_4tp_16ep_gegraph_bf16.yaml配置BF16 精度。指标数值测试条件Prefill 耗时1,452 ms1024 tokensbatch16Decode 单步耗时28.44 ms/trange: 27.4-29.4 ms/t32 tokensDecode warmup首次~91 s含图编译Decode warmupcached~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),仅供参考