文件最后提交记录最后更新时间
【PR】: 编译告警修复 Co-authored-by: Li Huachao<lihuachao1@huawei.com> # message auto-generated for no-merge-commit merge: !1926 merge dev_code_check into develop 【PR】: 编译告警修复 Created-by: lihuachao Commit-by: Li Huachao Merged-by: cann-robot Description: # Pull Request ## 描述 1.修复acl sample build.sh和run.sh 2.修复魔鬼数字告警 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!19261 个月前
【PR】: sync ge_dev to master 20260312 Co-authored-by: ClarkXie<xiezhengkai@huawei.com> Co-authored-by: wangxiaotian995<710309755@qq.com> Co-authored-by: peiyang<lipeiyang@huawei.com> Co-authored-by: KenChow<zhouchen53@huawei.com> Co-authored-by: cann-robot<songchangxia@cann.team> Co-authored-by: tangqunzhang<tangqunzhang@huawei.com> Co-authored-by: zhang_shengjie<804425610@qq.com> Co-authored-by: jsong27<songjiaming6@h-partners.com> Co-authored-by: xuyafei<xuyafei3@huawei.com> Co-authored-by: yelongjian<yelongjian1@huawei.com> Co-authored-by: wtf_newage<liuqiang238@hisilicon.com> Co-authored-by: lining23666<lining.li@huawei.com> # message auto-generated for no-merge-commit merge: !1093 merge develop into master 【PR】: sync ge_dev to master 20260312 Created-by: peiyang Commit-by: yelongjian;ClarkXie;jsong27;wangxiaotian995;lining23666;tangqunzhang;zhang_shengjie;cann-robot;KenChow;xuyafei;peiyang;wtf_newage Merged-by: peiyang Description: # Pull Request ## 描述 本PR指在将develop分支的代码同步合入master分支,包括以下特性: 1、TE errorMsg E40021 2、解决环境内核升级导致CV融合算子host编译问题 3、atc拦截save_original_model、compress_weight_conf、enable_compress_weight 三个option 4、Add/BitwiseAnd/BitwiseNot/BitwiseOr/BitwiseXor/Eq新增支持数据类型 5、调用AppendCoreTypeToPlatform接口增加判空 6、优化样例执行流程,将env DDK;NPU_HOST_LIB的配置步骤移除 7、优化concat分组重计算 8、[dflow] 删除DT无用的头文件导入 9、Concat对齐值生成错误导致性能下降&头文件路径修改 10、[om2]整改超大函数 11、禁止广播下沉到compare计算节点后 12、UT,ST优化和失败用例修复,告警修改 13、[dflow] 删除中废弃的代码,并简化dt cmake配置 14、GetTensor函数增加判空 15、FE/TE适配新增属性is_null_output支持空可选输出占位 16、CompareExtend API NE场景下对输入tensor存在NaN值的特殊处理 17、修改llt失败问题 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!10932 个月前
【PR】: sync ge_dev to master 20260309 Co-authored-by: cann-robot<songchangxia@cann.team> Co-authored-by: tang-haojie<tanghaojie1@huawei.com> Co-authored-by: isaacxu<xurui23@huawei.com> Co-authored-by: yelongjian<yelongjian1@huawei.com> Co-authored-by: kobemini<gengchao4@huawei.com> Co-authored-by: yuchen97<wangyuchen38@huawei.com> Co-authored-by: maohaodi<maohaodi@huawei.com> Co-authored-by: lihuachao<lihuachao1@huawei.com> Co-authored-by: liuyuanchen1<liuyuanchen1@huawei.com> Co-authored-by: KenChow<zhouchen53@huawei.com> Co-authored-by: wtf_newage<liuqiang238@hisilicon.com> Co-authored-by: jin-xiaohang<jinxiaohang4@huawei.com> Co-authored-by: peiyang<lipeiyang@huawei.com> Co-authored-by: wangxiaotian995<710309755@qq.com> # message auto-generated for no-merge-commit merge: !993 merge develop into master 【PR】: sync ge_dev to master 20260309 Created-by: peiyang Commit-by: peiyang;cann-robot;wangxiaotian995;jin-xiaohang;wtf_newage;KenChow;liuyuanchen1;lihuachao;yelongjian;maohaodi;yuchen97;kobemini;isaacxu;tang-haojie Merged-by: zhangfan_hanq Description: # Pull Request ## 描述 本PR指在将develop分支的代码同步合入master分支,包括以下特性: 1、canfuse融合前删除无效轴且清空内部计数 2、fix custom ops path problem 3、优化后端dump图呈现形式 4、修改license描述 5、es 文档更新 6、修复Tiny形态so打包问题 7、解决Tiny形态缺少依赖导致的编译报错 8、统一样例环境准备流程及优化readme内容结构 9、增加装包pip3校验 10、修复sample issue 11、清理acl目录重复头文件 12、ATT性能公式注释及表达式优化 13、generate函数适配历史原型库功能修改 14、合并拷贝使用pin内存 15、Autofuse融合节点名字精简化 16、放开split纵向+横向融合限制 17、GetTensor函数增加判空 18、优化concat分组重计算 19、当concat的对齐值小于等于1时,无意义,跳过这种判断&头文件路径修复 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!9932 个月前
【PR】: sync ge_dev to master 20260312 Co-authored-by: ClarkXie<xiezhengkai@huawei.com> Co-authored-by: wangxiaotian995<710309755@qq.com> Co-authored-by: peiyang<lipeiyang@huawei.com> Co-authored-by: KenChow<zhouchen53@huawei.com> Co-authored-by: cann-robot<songchangxia@cann.team> Co-authored-by: tangqunzhang<tangqunzhang@huawei.com> Co-authored-by: zhang_shengjie<804425610@qq.com> Co-authored-by: jsong27<songjiaming6@h-partners.com> Co-authored-by: xuyafei<xuyafei3@huawei.com> Co-authored-by: yelongjian<yelongjian1@huawei.com> Co-authored-by: wtf_newage<liuqiang238@hisilicon.com> Co-authored-by: lining23666<lining.li@huawei.com> # message auto-generated for no-merge-commit merge: !1093 merge develop into master 【PR】: sync ge_dev to master 20260312 Created-by: peiyang Commit-by: yelongjian;ClarkXie;jsong27;wangxiaotian995;lining23666;tangqunzhang;zhang_shengjie;cann-robot;KenChow;xuyafei;peiyang;wtf_newage Merged-by: peiyang Description: # Pull Request ## 描述 本PR指在将develop分支的代码同步合入master分支,包括以下特性: 1、TE errorMsg E40021 2、解决环境内核升级导致CV融合算子host编译问题 3、atc拦截save_original_model、compress_weight_conf、enable_compress_weight 三个option 4、Add/BitwiseAnd/BitwiseNot/BitwiseOr/BitwiseXor/Eq新增支持数据类型 5、调用AppendCoreTypeToPlatform接口增加判空 6、优化样例执行流程,将env DDK;NPU_HOST_LIB的配置步骤移除 7、优化concat分组重计算 8、[dflow] 删除DT无用的头文件导入 9、Concat对齐值生成错误导致性能下降&头文件路径修改 10、[om2]整改超大函数 11、禁止广播下沉到compare计算节点后 12、UT,ST优化和失败用例修复,告警修改 13、[dflow] 删除中废弃的代码,并简化dt cmake配置 14、GetTensor函数增加判空 15、FE/TE适配新增属性is_null_output支持空可选输出占位 16、CompareExtend API NE场景下对输入tensor存在NaN值的特殊处理 17、修改llt失败问题 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!10932 个月前
README.md

样例使用指导

功能描述

该样例用于指导如何根据ONNX格式的Qwen离线网络,实现LLM模型的加载、执行和获取执行结果等。

在该样例中:

  1. 使用atc工具将ONNX格式的Qwen模型转换为om格式的离线模型。
  2. 加载离线模型om文件,给定指定的输入,执行模型并获取结果。
  3. 注意本样例不涉及如何获得ONNX格式的离线网络,如何导出离线网络可以参见:Qwen离线模型导出示例

目录结构

├── model
│   ├── qwen.om                         // ONNX Qwen网络的模型文件, 需要按指导获取atc转换后的om文件, 放到model目录下

├── scripts
│   ├── build.sh                        // sample编译脚本
│   ├── run.sh                          // sample运行脚本

├── src
│   ├── acl.json                        // 系统初始化的配置文件
│   ├── CMakeLists.txt                  // 编译配置脚本
│   ├── sample_qwen_llm.cpp             // 主函数,LLM推理的实现文件

├── CMakeLists.txt                      // 编译脚本,调用src目录下的CMakeLists文件

环境准备

  • 通过安装指导 环境准备正确安装toolkitops

  • 设置环境变量 (假设包安装在/usr/local/Ascend/)

    source /usr/local/Ascend/cann/set_env.sh
    

实现步骤

  1. 以运行用户登录开发环境。

  2. 下载代码并上传至环境后,请先进入根目录下"examples/acl/3_sample_qwen_llm"样例目录。

    请注意,下文中的样例目录均指"examples/acl/3_sample_qwen_llm"目录。

  3. 准备Qwen模型。

    1. 获取Qwen ONNX格式模型。

      您可以按照以下命令获取Qwen网络的模型文件,模型文件需要放置到"样例目录/model"目录下。如果目录不存在,需要自行创建。如果wget失败,您也可以直接在浏览器中输入以下链接下载后上传至"样例目录/model"目录。

      cd "样例目录/model"
      wget https://ascend-cann.obs.cn-north-4.myhuaweicloud.com/cann_test/qwen.onnx
      
    2. 将Qwen原始模型转换为适配昇腾AI处理器的离线模型(*.om文件)。注意如果生成的om文件带有架构后缀(如qwen_linux_aarch64.om),请将文件重命名为qwen.om。

      切换到"样例目录/model", 执行模型转换脚本:

      cd "样例目录/model"
      atc \
      --model=./qwen.onnx \
      --output=./qwen \
      --soc_version=Ascend910B4-1 \
      --framework=5 \
      --precision_mode=must_keep_origin_dtype \
      --op_select_implmode=high_precision \
      --external_weight=0 \
      --output_type=FP32 \
      --input_shape 'input_ids:1,512;past_key_0.key:1,2,512,64;past_key_0.value:1,2,512,64;past_key_1.key:1,2,512,64;past_key_1.value:1,2,512,64;past_key_2.key:1,2,512,64;past_key_2.value:1,2,512,64;past_key_3.key:1,2,512,64;past_key_3.value:1,2,512,64;past_key_4.key:1,2,512,64;past_key_4.value:1,2,512,64;past_key_5.key:1,2,512,64;past_key_5.value:1,2,512,64;past_key_6.key:1,2,512,64;past_key_6.value:1,2,512,64;past_key_7.key:1,2,512,64;past_key_7.value:1,2,512,64;past_key_8.key:1,2,512,64;past_key_8.value:1,2,512,64;past_key_9.key:1,2,512,64;past_key_9.value:1,2,512,64;past_key_10.key:1,2,512,64;past_key_10.value:1,2,512,64;past_key_11.key:1,2,512,64;past_key_11.value:1,2,512,64;past_key_12.key:1,2,512,64;past_key_12.value:1,2,512,64;past_key_13.key:1,2,512,64;past_key_13.value:1,2,512,64;past_key_14.key:1,2,512,64;past_key_14.value:1,2,512,64;past_key_15.key:1,2,512,64;past_key_15.value:1,2,512,64;past_key_16.key:1,2,512,64;past_key_16.value:1,2,512,64;past_key_17.key:1,2,512,64;past_key_17.value:1,2,512,64;past_key_18.key:1,2,512,64;past_key_18.value:1,2,512,64;past_key_19.key:1,2,512,64;past_key_19.value:1,2,512,64;past_key_20.key:1,2,512,64;past_key_20.value:1,2,512,64;past_key_21.key:1,2,512,64;past_key_21.value:1,2,512,64;past_key_22.key:1,2,512,64;past_key_22.value:1,2,512,64;past_key_23.key:1,2,512,64;past_key_23.value:1,2,512,64' \
      --log=error
      
      • --model:原始模型文件路径。

      • --input_shape:指定模型输入的shape。

      • --output:生成的qwen_*.om文件重命名为qwen.om并存放在"样例目录/model"目录下。建议使用命令中的默认设置,否则在编译代码前,您还需要修改sample_qwen_llm.cpp 中的omModelPath参数值。

        ret = sampleQwen.PrepareModel("../model/qwen.om");
        
      • --soc_version:昇腾AI处理器的版本。版本获取可参考Link

      • --framework:原始框架类型。0:表示Caffe;1:表示air离线模型;3:表示TensorFlow;5:表示ONNX。

      • --precision_mode:设置模型精度转换策略,must_keep_origin_dtype表示强制保持原始数据类型。

      • --op_select_implmode:指定算子实现模式,high_precision表示优先保证计算精度。

      • --external_weight:是否将权重与模型分离存储,0表示权重内嵌在 .om 文件中

      • --output_type:指定输出tensor的数据类型。

构建验证

  1. 以运行用户登录开发环境。

  2. 请先进入根目录下"examples/acl/3_sample_qwen_llm"样例目录。

    请注意,下文中的样例目录均指"examples/acl/3_sample_qwen_llm"目录。

  3. 切换到"样例目录/scripts", 编译程序。

    bash build.sh
    
  4. 运行程序

    bash run.sh
    
  5. 执行结果

    执行成功后,在屏幕上的关键提示信息示例如下:

    [INFO] The sample starts to run
    [INFO]  SAMPLE start to execute.
    [INFO]  acl init success
    [INFO]  set device success
    [INFO]  create context success
    [INFO]  create stream success
    [INFO]  load model ../model/qwen.om success.
    [INFO]  Start to Process.
    [INFO]  The first five inputs information:
    [INFO]    Input[0], tensorName=input_ids, size=4096 bytes, dtype=9, format=0, dims=1 512
    [INFO]    Input[1], tensorName=past_key_0.key, size=131072 bytes, dtype=1, format=0, dims=1 2 512 64
    [INFO]    Input[2], tensorName=past_key_0.value, size=131072 bytes, dtype=1, format=0, dims=1 2 512 64
    [INFO]    Input[3], tensorName=past_key_1.key, size=131072 bytes, dtype=1, format=0, dims=1 2 512 64
    [INFO]    Input[4], tensorName=past_key_1.value, size=131072 bytes, dtype=1, format=0, dims=1 2 512 64
    [INFO]  Start to execute model.
    [INFO]  The first five outputs information:
    [INFO]    Output[0], tensorName=/lm_head/MatMul:0:logits, size=311164928 bytes, dtype=0, format=0, dims=1 512 151936
    [INFO]    Output[1], tensorName=/model/self_attn/Concat_5:0:present_0.key, size=524288 bytes, dtype=0, format=0, dims=1 2 1024 64
    [INFO]    Output[2], tensorName=/model/self_attn/Concat_6:0:present_0.value, size=524288 bytes, dtype=0, format=0, dims=1 2 1024 64
    [INFO]    Output[3], tensorName=/model/self_attn_1/Concat_5:0:present_1.key, size=524288 bytes, dtype=0, format=0, dims=1 2 1024 64
    [INFO]    Output[4], tensorName=/model/self_attn_1/Concat_6:0:present_1.value, size=524288 bytes, dtype=0, format=0, dims=1 2 1024 64
    [INFO]  predicted_token_id: 33975
    [INFO]  SAMPLE PASSED.