一、问题现象(附报错日志上下文):
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的图片明显不一致。
用MindStudio分析dump文件时卡住,无法生成excel文件。能否帮忙分析?
在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。
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
二、软件版本:
--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
三、测试步骤:
在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。
几个问题确认下:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
请问你使用的是readme里面的哪个ckpt,麻烦也共享下。
selfie2anime checkpoint (100 epoch):(https://drive.google.com/file/d/19xQK2onIy-3S5W5K-XIh85pAg_RNvBVf/view?usp=sharing
作者用google云盘提供的,obs链接是这个:
你好,这边定位结果如下。
补充下:
我是加载你提供的ckpt,dump CPU数据做的分析。
请问是否有不修改网络结构的规避方法(NPU训练和后续离线推理)?因为修改结构后,作者论文中的指标将不再具有参考价值。
如果修改网络在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。
上面共享的数据都打不开了,你可以先尝试下使用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关闭
登录 后才可以发表评论