74 Star 219 Fork 167

Ascend / modelzoo

 / 详情

【北航】U-GAT-IT 模型 NPU validation跑飞 dump结果分析

DONE
训练问题
创建于  
2021-08-24 22:24

一、问题现象(附报错日志上下文):
U-GAT-IT 模型已有官方checkpoint文件,GPU训练和validation均正常。自动迁移到NPU后报memory size不足。添加了

    custom_op.parameter_map["graph_memory_max_size"].s = tf.compat.as_bytes(str(16 * 1024 * 1024 * 1024))
    custom_op.parameter_map["variable_memory_max_size"].s = tf.compat.as_bytes(str(15 * 1024 * 1024 * 1024))

可以跑通,但生成的图片和GPU的图片明显不一致。
gpu生成图像
npu生成图像

用MindStudio分析dump文件时卡住,无法生成excel文件。能否帮忙分析?
MindStudio卡住

在MindStudio分析时发现dump出了三个文件夹,推测是由于validation和train写在同一代码中导致。
由于Generator_A仅出现在train过程中,查看三个 *_Build.txt 文件,发现只有ge_proto_00000994_Build.txt没有出现Generator_A,因此用这个文件对应的文件夹ge_default_20210823021636_21中的dump数据进行分析。ge_default_20210823021636_21文件夹中文件大小为3.7G。

dumpdata:
https://e-share.obs-website.cn-north-1.myhuaweicloud.com?token=YlvTWJJeUYD43bA7Ge1CI/ecubrYBH1pcDrCKk+92Mia02/wHerZRrpcoViCsqjuN2iAZvAS3Vn8IWVmSDkSqyltsnIyeyoCntwUYbHl5Pwy8o8hXapfO/ns6jw/9sUaPVqLHj/PqFBaSzdmVBiMiAfxKCbzauOu0Y0YPjh0Lwv2S9+pV3ytBzJS2yZjelDSzB3OQVMYsoF24+z7ArvsgrNkNA9XbKN4IvdcI+WDvl1jFr/oFYT3exfZm0V2DU7HjT0JNZJxnZIS6lsKjgP52NMTMC7J/5jOak8aYfJcR4XS/0CvoUPsZUK/zWEWMOSGjt6YqBSiadzt9+eDwQ2cLzADhLMkjILjJ5awupToz8+5UsT2VMaasDCFgLi6lTpKojbjWUrv3k+qCj9Eg+frbfk1gTjUWvm31lBXl5DzXT2TcdBqrAzZuzPrB5PeA2cEogErWEMjVJW+CFO6cyReiwK1drZPZvz1O08r+PZWk4OQd6xKM1d2lmzYdhFrwAas6AqkJu45SPF2aU0bi41Qe8Yoxb7ZKLygCDmAA9hrZUJgQoKc8nx9p7of39mI66wnKINgnB9TLm6yEtMkuF7QLsRJ4GdRkhjpp9UhVAklV5vjVZgV+FMgeAq9Bg7U2JjFzhrgQB8umbmLx9N8W+Q6/+y0OYTT4bgUTrL22nzfk/nfg7b72PfweL5PxBvcEpCXBRVZ33D2ms01kcZd34tsBEqd/FKlWHoNJgutXW80naLH9N/1vmJFrIyOuseeNfl8Ng9q0uQXJN9ldnrBuf/hcU22GR9eVuKg8HjrTvv9crMnQNT7ZU14XnHa8F9eoReNzZwsCRli+40WnP67SBjxdreH+tz0IGyVJp8sAQYtXJuKCuyLFEfJUIu7Bo5K1ZvF6FtBTKF3Lnxr5f0ARGNEpdd8S7cWiJC2rUwTZ21sn1+o0Jn3LgllAl0bCR+2gYmb
提取码:123456
*有效期至: 2022/08/18 19:50:53 GMT+08:00

dumpgraph:
URL:
https://e-share.obs-website.cn-north-1.myhuaweicloud.com?token=YlvTWJJeUYD43bA7Ge1CI/ecubrYBH1pcDrCKk+92Mia02/wHerZRrpcoViCsqjuN2iAZvAS3Vn8IWVmSDkSqyltsnIyeyoCntwUYbHl5Pwy8o8hXapfO/ns6jw/9sUaPVqLHj/PqFBaSzdmVBiMiAfxKCbzauOu0Y0YPjh0Lwv2S9+pV3ytBzJS2yZjelDSzB3OQVMYsoF24+z7ArvsgrNkNA9XbKN4IvdcI+WDvl05VM/gOFhS8UXIran3KbHa5DbZeK/77ux9fLwuJ0FY6Nfb9vXhOGxWzk1/lk6A89MjTNC64qsA51ECsQosNS3FFXGBLq+UB358Qh+PR6LO7x2zqmDgnmGZi7cUOhmD9UuGKTAM7Qhk11DJLyZYG0zev7qsWCwSQvIwSrTR/YtQn0apYJ5TGSCbvAi7sO2tQepWXZeLfS7G331nIUXlApyxvX9B1jjyluW1T6oiLQmtsY5k6oRWNk37yFpASGcWZZ+3DHU8Ya8MgcvzfST95WOmpiaswotrprorC+dGneKavsS4SM2poayWgvssJ5JEcUmlnGuVI6RvR/BIiXHl/kwR+lshhTJarYYPYKhHL++XbSbR+YdNIYR+hjb26ng33FogAG3EMQ+j9ZwSj+cTD4AlIkUDNuJQJHNrm6PEZykPsSH4gy2zAo4TkpDWaH4rnYZP2g/VCCYu0nnHKZJG9AguKSdaNfA3INUmhzCftNba70ge2bXHpDmnnyZ/bfckBBGEaqkHNdLHimTTJqeYBoJuAZmiE0hrVJF9lJ/Tnjf1GoEgwABf0YWg01TCYko6AdBzTomy4EkimIX+LYMXWR+XVUnl15abd1BlXMHqGv1HpHb9HW6SurqNtm1MkBp5o0Fgi6jWiFw1d+0YZgHX6A6k8wziCxAs7u0jU24Apf4G4AFT8eiaq+JW5V1hCqLyC3tz/7RwSNSHR0f7qp1TyYAt
提取码:
123456
*有效期至: 2022/08/18 19:52:01 GMT+08:00

tensorflow debug生成npy文件:
URL:
https://e-share.obs-website.cn-north-1.myhuaweicloud.com?token=YlvTWJJeUYD43bA7Ge1CI/ecubrYBH1pcDrCKk+92Mia02/wHerZRrpcoViCsqjuN2iAZvAS3Vn8IWVmSDkSqyltsnIyeyoCntwUYbHl5Pwy8o8hXapfO/ns6jw/9sUaPVqLHj/PqFBaSzdmVBiMiAfxKCbzauOu0Y0YPjh0Lwv2S9+pV3ytBzJS2yZjelDSzB3OQVMYsoF24+z7ArvsgrNkNA9XbKN4IvdcI+WDvl1cm/bqEMACq3DmCMOaT+dt83slGUAUL5AHRW3g4V15XJECchxeBIo7U6w0eNIoahIkVNLIZM1bXamseusFC6tc+DK10z90Afm/CDZ4br/kxRg6U3Z1sMO/Z1/QkmmM1ojrEtMyvyFM5Uc5o1fCtcgOgvyIBOgIO1tei8vI8v2UKLVfxz0osRDfj2aavc9ucZuYneDyCQSURi+z6PCpQzXXOAOLcfTkhe0yZRzvJ31Iy5SUURwVM+1d+iOwdHDgOIKiKK2pEG5oifXfXvwcbk0HU8EvMgiWKvvItqMOeeHQMBLYldk2KsEIkNNphM5/1UqMSePjtcD8EdNrn5HjRnET8rqnXPrPl1rVTtVGOlzCDA==
提取码:123456
*有效期至: 2022/08/18 20:06:20 GMT+08:00

代码文件:
URL:
https://e-share.obs-website.cn-north-1.myhuaweicloud.com?token=YlvTWJJeUYD43bA7Ge1CI/ecubrYBH1pcDrCKk+92Mia02/wHerZRrpcoViCsqjuN2iAZvAS3Vn8IWVmSDkSqyltsnIyeyoCntwUYbHl5Pwy8o8hXapfO/ns6jw/9sUaPVqLHj/PqFBaSzdmVBiMiAfxKCbzauOu0Y0YPjh0Lwv2S9+pV3ytBzJS2yZjelDSzB3OQVMYsoF24+z7ArvsgvGapYzA/zbhlL1mc/Fivak8RsBnXjksbCkvoSTJCwqgVnNXQDlFvzgM342BqyTOxznzA0DrzQE7XCqxN6DJkN2h5/EPG5q+zc+GCaIn5bfg9W2yUQx4UmxqbID7iuf93VIT873iy/saJAO5hRpqvtrlNT4OO1ZRLeJ4CxbRLDiyNX0PdUn1lGZGAZ6kll90N+8yhHSFeFJYIET7pv1TXzC6gSoivR8X94ES7ot5o5d/P3UDfrXSGVKk8arswyIOVQjvCgM+aKy8gQ5laAD1VpaF/LUuVjPHqCCqiUarT9vPqRtRD6V9pCq/HihisdXwXUu2Nc7I6T8+9Evk9nGEZEc=
提取码:123456

数据文件:
URL:
https://e-share.obs-website.cn-north-1.myhuaweicloud.com?token=YlvTWJJeUYD43bA7Ge1CI/ecubrYBH1pcDrCKk+92Mia02/wHerZRrpcoViCsqjuN2iAZvAS3Vn8IWVmSDkSqyltsnIyeyoCntwUYbHl5Pwy8o8hXapfO/ns6jw/9sUaPVqLHj/PqFBaSzdmVBiMiAfxKCbzauOu0Y0YPjh0Lwv2S9+pV3ytBzJS2yZjelDSzB3OQVMYsoF24+z7ArvsgvGapYzA/zbhlL1mc/FivalrkeLdWhxH+9/ZoW2/Vtc8C+P2SI2wVi4cOOwkyWX/AyF/ZsTf4uiyxGqEFEbQdHAPhIpP8Y//uN/Jn0ILy2ceUgO6EGseB8FqGBX58VHy5oiCeh8BV8qany2CRdhE5clXKON/w9bVIxwrU1Z5OCCzW8VUaFBp3IiHv2YXkLjcrMiNyikNu0DzGe6XCOlt40PYFttTJFSSj79N+DHvrQqMfUaW6zr6Bvq+tZhlQDgFqls99Wq44MSHvJQtZrry77XVby7dG2Vx5rAypskcGCAQOFPaIUotZ5NUfPnU41ie1rLDwCCgQBHDqUAvMTBMtJw=
提取码:123456

二、软件版本:
--Tensorflow/Pytorch/MindSpore 版本:Tensorflow1.15
镜像链接:swr.cn-north-4.myhuaweicloud.com/ascend-share/5.0.2.alpha005_tensorflow-ascend910-cp37-euleros2.8-aarch64-training:1.15.0-2.0.12_0709
ModelArts配置
三、测试步骤:
在MindStudio分析时发现dump出了三个文件夹,推测是由于validation和train写在同一代码中导致。
由于Generator_A仅出现在train过程中,查看三个 *_Build.txt 文件,发现只有ge_proto_00000994_Build.txt没有出现Generator_A,因此用这个文件对应的文件夹ge_default_20210823021636_21中的dump数据进行分析。ge_default_20210823021636_21文件夹中文件大小为3.7G。

四、日志信息:
NPU日志:
URL:
https://e-share.obs-website.cn-north-1.myhuaweicloud.com?token=YlvTWJJeUYD43bA7Ge1CI/ecubrYBH1pcDrCKk+92Mia02/wHerZRrpcoViCsqjuN2iAZvAS3Vn8IWVmSDkSqyltsnIyeyoCntwUYbHl5Pwy8o8hXapfO/ns6jw/9sUaPVqLHj/PqFBaSzdmVBiMiAfxKCbzauOu0Y0YPjh0Lwv2S9+pV3ytBzJS2yZjelDSzB3OQVMYsoF24+z7ArvsgrNkNA9XbKN4IvdcI+WDvl3PA/+39qNFYM7ExOFtvOtiVyjD3ctvV/GbzOK50EUqJxYQ/Mb9uNrkngncf9y3Dy658qQThd3bDQS6XDKQEBH0qjYgQPgNQAiEhi+LNPvqXYMEkz9UIzyGZrRIqgZ1HW5KsP6oRHFOFN66uOR+YtXvstVVjmts9KhpRG/FOK48ElLTgzpbiTR5XuTcpPi08y7aI673Thigu27dgVb1Z+MF3qC3S5Ymws5swwO1PklJ5UDO8E4B05ZraqWO91uC+PafL1XF4RXOzRJ3QlN/fcVKsIOY8X0t4u69Ce8ZmN+KpsGQL+VK6vRVVnew2vBPiWpi4FrDkaSsq7Vg8FKNMuqxMZYclOxAvqZChpgjv/0clL+XJBGhudmsGyEoTlULzqKPOV6vVdeM14fmX+tQfcX7Ht9iPnL/6TvvRTphyT75Ds/9hUAHRS2/UVrxG2YhCyaDCEarrBvoC2aaUIer25Wx2itj+mHnOewIatu498md3AFp3hhckmKp2KF2dF7WIeyKn8KbO2sKftzHjzX5VyZMs7eh+G28hJqO25iAZ3NA9IBiaKnPva9voJTfLhKK0AQF8QRUn9g0ym5l5p/Rrpqqm3nlgpKapvzIjT/cIzmCoBqZG3q+zL57U3kj9mTUZAxmxyEXFjnUkF8AM21m0pNrOUty/tdMawTcph+uzlFpWQ==
提取码:123456
*有效期至: 2022/08/18 20:13:37 GMT+08:00

评论 (15)

李永清 创建了训练问题
李永清 关联仓库设置为Ascend/modelzoo
李永清 修改了描述
李永清 修改了描述
展开全部操作日志

几个问题确认下:

  1. 图片生成是基于官方的权重还是NPU训练后的权重?
  2. 这个有观察loss这类指标吗?

1.基于官方的权重,NPU和GPU使用了一样的checkpoint,但结果不同。
2.NPU训练和GPU训练时可以观察loss。validation过程只输出图片。

目前准备先使用precison_tool分析。

zhujianpeng 负责人设置为chenhu
zhujianpeng 任务状态TODO 修改为Analysing

请问你使用的是readme里面的哪个ckpt,麻烦也共享下。

你好,这边定位结果如下。

  1. 问题原因
    NPU里面如conv节点是使用fp16计算的,网络中存在计算结果超出fp16表示范围(65536)的情况, npu溢出导致计算异常。
    generator_B_up_conv_0_conv2d_Conv2D.0.1629880658.npy
    最大值 最小值 均值 shape
    181942.55 -271823 8158.277 (1,128,128,128)
  2. 规避方法
    需要修改脚本,建议通过如在conv节点后增加bn进行数据归一化的方式来训练。
    x = Conv2D(64, (3, 3), padding='same', name='block1_conv1')(img_input)
    x = BatchNormalization(name='block1_batchnorm_1')(x)
    x = tf.nn.relu(x)

补充下:
我是加载你提供的ckpt,dump CPU数据做的分析。

请问是否有不修改网络结构的规避方法(NPU训练和后续离线推理)?因为修改结构后,作者论文中的指标将不再具有参考价值。

贾正平 负责人chenhu 修改为贾正平
贾正平 添加协作者贾正平
贾正平 负责人贾正平 修改为汪飞
贾正平 取消协作者贾正平

如果修改网络在conv后增加BN,是否仍然会因为在conv处溢出得到随机数据使得后续做BN的结果无意义导致错误结果?

之所以有这样的疑问,是因为现在的代码中在每个conv后都已经使用了Instant_Norm或AdaLIN(作者提出的一种融合Instance Normalization和Layer Normalization的归一化方法)等归一化方法。同时,输入网络的数据在经过第一个conv之前也已经经过了 x/127.5 -1 的操作。

请问目前规避conv溢出的建议是什么?

能不能把Instant_Norm修改为BN,对精度的影响有多大?分析Instant_Norm的dump结构,里面有SquaredDifference算子,严重放大了数据的值。

1.请问一下SquaredDifference放大差距的原因是否是算子本身精度的问题?BatchNorm中是否也含SquaredDifference算子?从公式的角度分析应该是含有的, BN和IN的方差公式中都出现了两数之差的平方项,猜测这个项都是用SquaredDifference计算的。如果SquaredDifference本身有问题,计算BatchNorm是否仍会导致由于SquaredDifference而溢出?

2.generator_B_up_conv_0_conv2d_Conv2D.0.1629880658.npy是第一个出现数值溢出的节点吗?数值通过/127.5 - 1归一化输入网络后遇到第一个conv节点是否也出现了数值溢出问题?如果出现了,此时并没有通过InstanceNorm,则conv节点本身也有问题.

3.AdaLIN(InstanceNorm和LayerNorm的结合)是UGATIT模型的创新点.整体替换成BatchNorm或将其中InstanceNorm替换成BN是否不妥?同时,从经验的角度讲,BatchNorm主要适用于判别模型,而包括UGATIT在内的风格迁移等生成模型中多使用InstanceNorm,这是因为图片生成的结果主要依赖于某个图像实例而非整个batch,使用InstanceNorm有利于保证图像实例的独立性。

如果问题1和问题2可以得到解决,即使用BatchNorm不会因为SquaredDifference而放大数据,且conv本身没有问题,则重练模型观察精度下降问题,否则可预见,使用BN仍不能达到可接受的精度。

贾正平 添加协作者贾正平

如沟通,当前分析generator_B结构,是因为matmul的结构输出结果较大导致后续的计算溢出,可尝试增加一些归一化的操作规避。
精度分析工具precision_tool使用链接https://gitee.com/ascend/tools/tree/master/precision_tool。

汪飞 任务状态Analysing 修改为Feedback
张晓龙 添加协作者张晓龙
汪飞 负责人汪飞 修改为未设置
汪飞 取消协作者张晓龙
汪飞 负责人设置为张晓龙
张晓龙 负责人张晓龙 修改为未设置
张晓龙 取消协作者贾正平
张晓龙 负责人张晓龙 修改为未设置
张晓龙 负责人设置为chenhu
张晓龙 任务状态Feedback 修改为WIP
吴定远 关联仓库Ascend/modelzoo-his 修改为Ascend/modelzoo

上面共享的数据都打不开了,你可以先尝试下使用force_fp32模式跑下。

请用最新版本做个溢出检测,若有算子溢出,请附上相关算子
https://support.huaweicloud.com/tfmigr-cann504alpha2training/atlasmprtg_13_0042.html

开启后依然溢出 dump文件地址:
obs://ugatit-new-npu/training_out/

910上卷积只支持fp16,导致计算溢出,910不支持fp32计算,该问题在910上不能解决

UGATIT模型精度已经达标,ISSUE关闭

颜亚文 任务状态WIP 修改为DONE

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(4)
1
https://gitee.com/ascend/modelzoo.git
git@gitee.com:ascend/modelzoo.git
ascend
modelzoo
modelzoo

搜索帮助