LayerNorm 算子当前仅支持Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件
您可以通过在转换前修改ONNX模型,将LayerNorm替换为等效的基本操作来规避这个问题


LayerNorm 算子当前仅支持Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件
您可以通过在转换前修改ONNX模型,将LayerNorm替换为等效的基本操作来规避这个问题
请问是否有建议的等效替代算子,因为我们查了一下有BatchNorm算子不知310P3是否支持,其次批量归一化与层归一化差别较大,需要改动整个ONNX模型结构,我们担心改了之后还是不行或对推理准确性有一定影响;最好是给我们提供一个案例或可行的算子替代解决方案我们去尝试,多谢了~



目前我们这边通过自定义了一个归一化算子绕过了该算子不兼容的问题,但是转动态batch-size失败了,烦请看看是什么原因,有没有推荐的解决方法?



目前我们这边通过自定义了一个归一化算子绕过了该算子不兼容的问题,但是转动态batch-size失败了,烦请看看是什么原因,有没有推荐的解决方法?
你动态batch设置的是--dynamic_batch_size="1,2,4,6,8" ,模型内部存在中间层的动态维度 [-2],ATC工具不支持


目前我们这边通过自定义了一个归一化算子绕过了该算子不兼容的问题,但是转动态batch-size失败了,烦请看看是什么原因,有没有推荐的解决方法?
你动态batch设置的是--dynamic_batch_size="1,2,4,6,8" ,模型内部存在中间层的动态维度 [-2],ATC工具不支持
这里还是想用动态的batchsize,大佬,有没有什么解决途径?


目前我们这边通过自定义了一个归一化算子绕过了该算子不兼容的问题,但是转动态batch-size失败了,烦请看看是什么原因,有没有推荐的解决方法?
你动态batch设置的是--dynamic_batch_size="1,2,4,6,8" ,模型内部存在中间层的动态维度 [-2],ATC工具不支持
这里还是想用动态的batchsize,大佬,有没有什么解决途径?
https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/tmuacop/tmuacop_0018.html
参考一下这个文档修改ATC命令,使用完整的动态输入设置


目前我们这边通过自定义了一个归一化算子绕过了该算子不兼容的问题,但是转动态batch-size失败了,烦请看看是什么原因,有没有推荐的解决方法?
你动态batch设置的是--dynamic_batch_size="1,2,4,6,8" ,模型内部存在中间层的动态维度 [-2],ATC工具不支持
这里还是想用动态的batchsize,大佬,有没有什么解决途径?
https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/tmuacop/tmuacop_0018.html
参考一下这个文档修改ATC命令,使用完整的动态输入设置
再打扰一下,该链接下没有动态输入的完整命令示例,我们尝试修改后无果;我可以提供离线模型动态BatchSize转换的命令如下:atc --framework=5 --model=model_zoo/conch_custom.onnx --output=conch_dynamic --input_shape="input:-1,3,448,448" --dynamic_batch="1,2,4,6,8" --soc_version=Ascend310P3
麻烦大佬帮忙看看提供我们修改后的正确转换命令~


目前我们这边通过自定义了一个归一化算子绕过了该算子不兼容的问题,但是转动态batch-size失败了,烦请看看是什么原因,有没有推荐的解决方法?
你动态batch设置的是--dynamic_batch_size="1,2,4,6,8" ,模型内部存在中间层的动态维度 [-2],ATC工具不支持
这里还是想用动态的batchsize,大佬,有没有什么解决途径?
https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/tmuacop/tmuacop_0018.html
参考一下这个文档修改ATC命令,使用完整的动态输入设置再打扰一下,该链接下没有动态输入的完整命令示例,我们尝试修改后无果;我可以提供离线模型动态BatchSize转换的命令如下:atc --framework=5 --model=model_zoo/conch_custom.onnx --output=conch_dynamic --input_shape="input:-1,3,448,448" --dynamic_batch="1,2,4,6,8" --soc_version=Ascend310P3
麻烦大佬帮忙看看提供我们修改后的正确转换命令~
添加一下ND格式支持试试 atc --framework=5 --model=model_zoo/conch_custom.onnx \ --output=conch_dynamic \ --input_shape="input:-1,3,448,448" \ --input_format=ND \ # 添加ND格式支持 --dynamic_batch_size="1,2,4,6,8" \ --soc_version=Ascend310P3


已解决,多谢~~


医学影像开源模型LayerNorm算子昇腾310系列NPU适配兼容问题
Describe the current behavior / 问题描述
在基于Ascend/ModelZoo-PyTorch 开源社区的医学影像领域模型迁移适配过程中,遇到 LayerNorm 算子与昇腾 310 系列 NPU 的兼容问题,具体表现为:
Environment / 环境信息
软件版本:
Steps to reproduce the issue / 重现步骤
测试步骤:
1. 环境准备(基于昇腾官方镜像部署)
# 1. 拉取昇腾预安装CANN环境镜像 docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.1.RC1-300I-Duo-py311-openeuler24.03-lts # 2. 创建并启动容器(挂载驱动、固件及数据目录) docker run -itd --privileged --name=medical_layer_norm --net=host --shm-size 100g \ --device=/dev/davinci_manager --device=/dev/hisi_hdc --device /dev/devmm_svm \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/sbin:/usr/local/sbin \ -v /home/medical_data:/data \ swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.1.RC1-300I-Duo-py311-openeuler24.03-lts bash # 3. 进入容器 docker exec -ti medical_layer_norm bash # 4. 验证昇腾环境可用性 npu-smi info # 正常输出310P3芯片信息 source /usr/local/Ascend/ascend-toolkit/set_env.sh # 加载CANN环境变量 atc --version # 输出ATC工具版本:8.2.RC12. 下载开源模型及依赖工具
# 1. 克隆Ascend/ModelZoo-PyTorch仓库(医学影像模型目录) git clone https://gitee.com/ascend/ModelZoo-PyTorch.git cd ModelZoo-PyTorch/ACL_PyTorch/built-in/medical/ # 2. 获取目标模型 本地模型,已上传至网盘,需要的话可以后台联系我获取 # 3. 安装模型依赖库 pip3 install torch==2.3.1 torchvision==0.18.1 numpy==1.26.4 onnx==1.15.0 # 4. 安装昇腾辅助工具(auto-optimizer用于算子修改,ais_bench用于推理测试) git clone https://gitee.com/ascend/msadvisor.git cd msadvisor/auto-optimizer pip3 install . cd ../../ # 安装ais_bench工具 wget https://gitee.com/ascend/tools/raw/master/ais-bench_workload/tool/ais_bench/whl/aclruntime-0.0.2-cp311-cp311-linux_aarch64.whl wget https://gitee.com/ascend/tools/raw/master/ais-bench_workload/tool/ais_bench/whl/ais_bench-0.0.2-py3-none-any.whl pip3 install aclruntime-0.0.2-cp311-cp311-linux_aarch64.whl ais_bench-0.0.2-py3-none-any.whl3. 模型转换(ONNX转OM,触发LayerNorm报错)
# 1. 确认ONNX模型完整性 ls -l conch.onnx # 大小约1.2GB,正常存在 # 2. 执行ATC转换命令(静态shape配置,适配310P3) atc --model=conch_resize.onnx --framework=5 --output=conch_om --input_shape="input:1,3,448,448" --soc_version Ascend310P3Describe the expected behavior / 预期结果 (Mandatory / 必填)
预期结果:

Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
报错日志截图:

ATC模型转换阶段报错日志
Special notes for this issue/备注 (Optional / 选填)
是否910系列支持,310系列目前不支持呢?