盘古7B(Pangu 7B)模型在CANN NPU上的低时延推理:从环境搭建到性能压测的完整实战指南

发布时间:2026/9/18 23:04:47
盘古7B(Pangu 7B)模型在CANN NPU上的低时延推理:从环境搭建到性能压测的完整实战指南 盘古7BPangu 7B模型在CANN NPU上的低时延推理从环境搭建到性能压测的完整实战指南【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer本指南以 models/pangu_7b/README.md 为核心系统讲解华为开源盘古系列 7B 大语言模型如何在 CANN 平台Atlas A3、950PR/DT 系列产品上完成适配、量化与低时延推理。文章覆盖 CANN 与 torch_npu 环境搭建、权重下载与 MXFP8 量化转换、YAML 推理配置逐项解析、内置 prompt 与 LongBench 长序列推理以及批量性能实验脚本的使用方法读者按步骤操作即可跑通权重准备 → 配置 → 推理 → 压测的完整链路。概述盘古 7B 模型与 NPU 推理样例盘古 7B 是华为开源的盘古系列大语言模型之一参数量为 7B。本项目以 openPangu-Embedded-7B 为例基于 HuggingFace 官方实现 modeling_openpangu_dense.py。从源码结构看盘古 7B 属于 Dense稠密架构模型其 NPU 适配版本在保留 GPT-NeoX/OPT 风格 Transformer 结构的基础上引入了若干面向昇腾硬件的实现细节使用torch_npu.npu_rms_norm等 NPU 融合算子加速 RMSNorm见 modeling_openpangu_dense.py 中的PanguEmbeddedRMSNorm通过module/linear.py提供的ColumnParallelLinear、QKVParallelLinear、RowParallelLinear等并行线性层封装实现张量并行切分通过 module/fuse_moe_gmm.py 的FusedMoEGMM与 module/quantization 下的量化方法mxfp8/mxfp4/fp8 等对接 A8W8 量化推理推理入口 infer.py 与 Runner runner_openpangu_dense.py 基于executor/model_runner.py的ModelRunner基类实现权重加载、图编译acl_graph/ge_graph、prefill/decode 两阶段推理等能力。支持的产品型号本样例支持以下昇腾产品型号Atlas A3 系列Atlas 950PR/DT 系列环境准备1. 安装 CANN 软件包样例的编译与执行依赖 CANN 开发套件包toolkit与 CANN 二进制算子包ops支持版本为CANN 9.0.0。需下载并安装以下两个软件包Ascend-cann-toolkit_${version}_linux-${arch}.runAscend-cann-${soc}-ops_${version}_linux-${arch}.run其中占位符含义如下占位符含义示例${soc}芯片版本A3、950${version}CANN 包版本号9.0.0${arch}CPU 架构aarch64、x86_642. 安装 Ascend Extension for PyTorchtorch_nputorch_npu 是支撑 PyTorch 框架运行在 NPU 上的适配插件。本样例支持的版本组合为Ascend Extension for PyTorch26.0.0.alpha001PyTorch2.11.0需要下载torch_npu-2.11.0rc1-cp312-cp312-manylinux_2_28_${arch}.whl安装包${arch}为 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/pangu_7b/requirements.txt依赖清单见 models/pangu_7b/requirements.txt主要包括torch2.11.0、transformers4.55.0、datasets3.6.0、compressed-tensors0.6.0、accelerate1.0.1、einops0.8.0、sentencepiece0.1.99等。其中compressed-tensors用于承载量化模型权重格式sentencepiece用于盘古模型的 tokenizer 加载。4. 配置样例运行所需环境信息修改 executor/scripts/set_env.sh 中的如下字段IPs配置所有节点的 IP按照 rank id 排序多个节点的 ip 通过空格分开例如(xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx)。recipes_path当前代码仓根目录例如/home/cann-recipes-infer。cann_pathCANN 软件包安装路径例如/usr/local/Ascend/ascend-toolkit/latest。说明HCCL 相关配置如HCCL_SOCKET_IFNAME、HCCL_OP_EXPANSION_MODE可以参考集合通信文档并在 executor/scripts/function.sh 中自定义配置。从 executor/scripts/set_env.sh 源码可见该脚本还负责将代码仓根目录加入PYTHONPATH、source CANN 的setenv.bash并设置ASCEND_HOME_PATH这是离线推理样例得以导入executor、module等公共模块的前提。权重准备请根据所使用的模型类型自行下载原始权重到本地路径例如/dev/shm/ckpts/openPangu-Embedded-7B。以 openPangu-Embedded-7B 为例可使用huggingface_hub下载# Alternative from huggingface_hub import snapshot_download # 下载指定模型到本地目录 snapshot_download( repo_idFreedomIntelligence/openPangu-Embedded-7B, local_dir./openPangu-Embedded-7B, # 如果该模型很大建议设置以下参数以支持断点续传和并发下载 max_workers8 )MXFP8 量化权重转换若需要使用 W8A8 量化推理需先将 BF16 权重转换为量化权重。以 mxfp8 为例目前仅支持 mxfp8 的 A8W8 量化hif8 和 mxfp4 尚未开放python /cann-recipes-infer/models/pangu_7b/utils/convert_model.py --input_bf16_hf_path /dev/shm/ckpts/openPangu-Embedded-7B/ --output_hf_path /dev/shm/ckpts/openPangu-Embedded-7B-MXFP8/ --w8a8 --w_quant mxfp8注意mxfp8 量化仅支持 Atlas A5 硬件。转换脚本 models/pangu_7b/utils/convert_model.py 的完整命令行参数如下参数说明--input_bf16_hf_pathBF16 原始权重目录必填--output_hf_path量化权重输出目录必填--w8a8是否启用 W8A8 量化开关--w_quant权重量化策略可选hif8/fp8/mxfp8/mxfp4默认mxfp4--c8是否启用 KV Cache 8bit 量化--quant_param_path使用--c8时 KV Cache 量化参数quant_parameters_*.pth所在目录从实现来看该脚本会依次完成以下工作辅助文件拷贝copy_aux_files将 tokenizer、config、generation_config 以及tokenization_*.py、configuration_*.py、modeling_*.py等远程代码文件一并复制到输出目录保证量化后的目录仍可被from_pretrained正常加载量化配置生成generate_mxfp_quant_config/generate_hifp_quant_config生成写入config.json的quantization_configMXFP8 采用 group_size32 的分组量化策略strategy: grouptype: float并自动忽略 LayerNorm、q_norm/k_norm、lm_head、embed_tokens 等不应量化的层权重逐张量处理_process_single_weight仅对 2D 的 Linear*.weight做量化量化权重与*_scale一同写入新的 safetensors并更新model.safetensors.index.json的 weight_map可选 KV Cache 量化参数合并当开启--c8时将各层quant_parameters_*.pth中的 scale 参数合并到输出权重中。量化算子层面mxfp8 依赖torch_npu.npu_dynamic_mx_quantdst_typefloat8_e4m3fn实现分块动态量化量化产生的 3D scale 会 reshape 为 2D 存储以便推理阶段按块反量化。YAML 推理配置详解在 models/pangu_7b/config 目录下已提供较优性能的 YAML 样例包括openpangu_v5_7b.yamlBF16 精度基线配置exe_mode: eagermm_quant_mode/gmm_quant_mode: A16W16openpangu_v5_7b_mxfp8.yamlMXFP8 W8A8 量化配置exe_mode: acl_graphmm_quant_mode/gmm_quant_mode: A8W8model_path指向量化权重目录openpangu_v5_7b_mxfp4.yaml、openpangu_v5_7b_hif8.yaml为 infer.sh 中预留的注释项对应 hif8/mxfp4 权重方案当前尚未开放。推理前需要修改 YAML 文件中的model_path参数将其设置为权重准备阶段准备好的权重文件存储路径例如/dev/shm/ckpts/openPangu-Embedded-7BBF16或/dev/shm/ckpts/openPangu-Embedded-7B-MXFP8MXFP8。各参数说明如下详见 models/pangu_7b/config/README.mdBasic Config基础配置参数默认值/示例说明model_namepangu_7B模型名称字符串类型model_path/dev/shm/ckpts/openPangu-Embedded-7B模型权重路径字符串类型exe_modeeager执行模式支持[ge_graph, eager, acl_graph]world_size1参与推理的 NPU 卡数整型Model Config模型配置参数默认值/示例说明mm_quant_modeA16W16矩阵乘量化模式支持[A16W16, A8W8]gmm_quant_modeA16W16GMM分组矩阵乘量化模式支持[A16W16, A8W8]with_ckptTrue是否加载权重支持[False, True]enable_profilerFalse是否开启 profiling支持[False, True]enable_cache_compileFalse是否开启编译缓存cache compile支持[False, True]enable_weight_nzFalse是否启用权重 NZ 格式支持[False, True]enable_online_split_weightTrue是否启用在线权重切分支持[False, True]tokenizer_modedefaultTokenizer 模式支持[default, chat]Data Config数据配置参数默认值/示例说明datasetdefault数据集类型支持[default, LongBench]input_max_len2048输入最大长度max_new_tokens256最大生成新 token 数batch_size1全局 batch size需能被 ep_size 整除Parallel Config并行配置参数默认值/示例说明attn_tp_size1Attention 张量并行数attn_dp_size world_size // attn_tp_sizemoe_tp_size1MoE 张量并行数moe_ep_size world_size // moe_tp_sizeembed_tp_size1Embedding 张量并行数lmhead_tp_size1LMHead 张量并行数参数校验与执行模式说明源码补充在 models/pangu_7b/models/model_setting.py 的check_vars/update_vars中实现了配置的校验与运行时环境变量推导check_model_settings校验exe_mode必须是ge_graph/eager/acl_graph之一否则抛出ValueError并提示 eager 模式不支持 cache compile 特性check_parallel_settings校验batch_size必须能被moe_ep_size world_size // moe_tp_size整除update_vars根据embed_tp_size推导每个 rank 的batch_size_per_rank并根据执行模式设置TASK_QUEUE_ENABLE环境变量——acl_graph模式仅支持0或1推理脚本会自动将其置为1eager 等其他模式则置为默认值2用于优化 host 侧性能。三种执行模式的差异简要说明eagerPyTorch 原生逐算子下发模式便于调试与精度比对ge_graph通过 GEGraph Engine构图执行减少算子下发开销acl_graph基于 torchair 的 aclgraph 图模式CompilerConfig.mode reduce-overhead配合torch.compile与TASK_QUEUE_ENABLE1实现低时延推理是 MXFP8 样例推荐的执行模式。推理执行1. 修改 YAML 与 infer.sh修改 YAML 文件中的model_path参数见上文修改 models/pangu_7b/infer.sh 脚本中的YAML_FILE_NAME参数将其设置为config文件夹下 YAML 文件的名字例如openpangu_v5_7b.yaml或openpangu_v5_7b_mxfp8.yaml。infer.sh 的实现逻辑是先定位脚本自身路径依次 source executor/scripts/set_env.sh 与 executor/scripts/function.sh 完成环境变量初始化再以MODEL_DIR、YAML_PARENT_PATH、YAML_FILE_NAME拼接出完整 YAML 路径并调用launch函数拉起推理进程。2. 准备输入 prompt使用内置 prompt本样例已在 dataset/default_prompt.json 中内置了输入 prompt一段关于 attention function 的英文文本若直接使用内置 prompt 可跳过本步骤也可以在dataset/default_prompt.json文件中自定义 prompt 输入。使用长序列 prompt本样例默认使用内置 prompt若需要使用长序列 prompt需执行以下操作修改 YAML 文件中的dataset参数为dataset: LongBench使用 LongBench 数据集作为长序列 prompt若机器无法联网需要手动从 huggingface 下载 LongBench 数据集至dataset/LongBench目录下LongBench文件夹需手工创建目录中包含LongBench.py和data目录并在LongBench.py中修改数据集加载路径若机器可正常联网样例执行过程中会自动在线读取 LongBench 数据集无需手工下载。说明在使用 LongBench 数据集或其他自定义数据集时默认执行文本摘要任务可在 executor/utils/data_utils.py 的build_dataset_input函数里修改默认的 system prompt。3. 执行推理脚本cd models/pangu_7b bash infer.sh说明如果是多机环境需要在每个节点上执行。从 infer.py 的调用链可以看到推理流程为读取 YAML 配置read_yaml→ 配置校验与变量推导check_vars/update_vars→ 构建 prompt → 初始化PanguEmbeddedRunner→ 设置jit_compileFalse→init_model加载权重 → warmup 预热 → 正式生成并打印各阶段耗时。其中 runner_openpangu_dense.py 中的model_inference会分别统计 prefill 与 decode 阶段的推理耗时毫秒warmup 阶段用于触发图编译正式生成阶段输出的耗时即为可参考的性能数据。性能脚本测试run_experiments.sh 提供了批量性能测试能力它会在batch_size序列(1 2 32 64)上依次执行推理并用sed自动改写 config/openpangu_v5_7b_mxfp8.yaml 中的batch_size参数从而在单个命令下完成多 batch 规模的时延/吞吐对比实验。使用命令如下cd cann-recipes-infer bash ./models/pangu_7b/run_experiments.sh运行细节每次实验前脚本会通过sed -i s/batch_size: [0-9]*/batch_size: $BS/更新 YAML 中的 batch size每次实验的完整输出stdout stderr以--- START OUTPUT FOR BS$BS ---/--- END OUTPUT FOR BS$BS ---为分隔写入日志文件便于按 batch size 检索全部实验结束后日志保存在models/pangu_7b/experiment_results_$(date %Y%m%d_%H%M%S).log。如需自定义实验规模可修改脚本顶部的BATCH_SIZES(1 2 32 64)数组与YAML_PATH指向的配置文件。常见问题与注意事项量化硬件约束mxfp8 量化仅支持 Atlas A5 硬件在非 A5 硬件上使用 MXFP8 权重会导致算子不支持或精度异常BF16 配置mm_quant_mode/gmm_quant_mode: A16W16则无此限制。Python 版本依赖安装仅支持 Python 3.11需确保运行环境满足该要求。多机场景多机推理需要在每个节点分别执行infer.sh且各节点 IP 需按 rank id 顺序配置在IPs中。长序列数据集离线加载无法联网时需手工下载 LongBench 并修正LongBench.py中的数据集加载路径否则数据集读取会失败。batch_size 与并行度约束batch_size必须能被world_size // moe_tp_size整除见 model_setting.py 的校验逻辑配置并行参数时需保证二者匹配。执行模式差异acl_graph模式需要TASK_QUEUE_ENABLE为0或1脚本会自动处理若自定义环境变量请勿与之冲突。【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询