华为极客周活动-昇腾万里--模型王者挑战赛VQVAE调通过程 上
华为极客周活动-昇腾万里--模型王者挑战赛VQVAE调通过程
https://bbs.huaweicloud.cn/forum/forum.php?mod=viewthread&tid=92438
【昇腾万里--模型王者挑战赛来啦!】青铜赛段开启,丰厚大奖与荣誉已备好!!
这个比赛是刘明通知我极客周点亮山东活动的时候,我才知道的。参加模型大赛,既能锻炼自己,又能为点亮山东作出贡献,还有丰厚的礼品,于是就欣然接受极客周活动的邀请了。当时想着模型跑通的难度应该不太大,至少比论文复现的难度要低吧,这样保底可以贡献点亮山东的积分。至于奖品,那都是浮云,对,我真的是这样想的。
挑战赛简述:
【青铜赛段】已开启----开发者需要在下方模型列表中选择一个模型,将训练脚本迁移到昇腾AI处理器运行,并完成单Step训练。
跟jeff等朋友交流后,选择了vqvae这个模型:
https://github.com/hiwonjoon/tf-vqvae/
选它的理由是:
1 因为从pytorch迁移到ascend昇腾涉及到改写代码到mindspore,我们感觉这个难度要比tf迁移要高,所以只能从不需要改写代码的tf模型中找。
2 因为有准备阶段跑通模型脚本的要求:
准备模型脚本&申请昇腾环境:
尝试将原生模型脚本在本地CPU或GPU环境运行,并将运行成功(仅需启动成功,不需要完整跑完训练)的截图发给昇腾小助手,以便分配本次活动的运行环境。
因此要先能尽快本地跑通一个以便申请昇腾环境。Vqvae模型使用cifar-10数据集,这个数据集我们熟悉,体量也小,比其它模型的不知名数据集更容易上手。
3 另外就是几个朋友准备错开不同的模型,毕竟每个模型的大奖只有一个,都攻同一个模型内卷太厉害。
当然事后才知道,vqvae模型是比较不顺利的一个模型,迁移工程中坑比较少的模型是EAST和PSENET。但是我本人是那种单核的性格,所以后来主要精力一直在VQVAE上面,其中的滋味酸甜苦辣都有,一言难尽啊。后面就是太长不看系列,如果想知道最终这个模型迁移有没有跑通,请直接划到底部看。
攻占VQVAE模型的战役打响啦!
本地跑通VQVAE
一般我的处理过程就是拿来就跑,然后缺什么补什么,算是有点急脾气吧。
首先将源码git clone到本地 ,源码地址:https://github.com/hiwonjoon/tf-vqvae
直接运行python mnist.py ,报错:
no model :better_exceptions
解决方法:安装相应的模块 !pip install better_exceptions
报错:
module 'tensorflow' has no attribute 'set_random_seed'
解决方法:修改 import tensorflow as tf成为:import tensorflow.compat.v1 as tf
当然后来调试程序的时候,为了尽量少改动源代码,减少麻烦,又把这句换回去了。
报错:
---> 21 from tensorflow.examples.tutorials.mnist import input_data
22 mnist = input_data.read_data_sets(DATA_DIR, one_hot=True)
23
ModuleNotFoundError: No module named 'tensorflow.examples.tutorials'
这时才注意到模型对应的tf版本是1.15,而我本地装的是2.0版本,决定放弃2.0版本了,改回1.15版本,这也是升腾里面tf的版本。
Successfully uninstalled tensorflow-2.3.1
Successfully installed gast-0.2.2 keras-applications-1.0.8 tensorboard-1.15.0 tensorflow-1.15.0 tensorflow-estimator-1.15.1
现在报错:
--> 194 from layers import GatedCNN
195 self.X = tf.placeholder(tf.int32,[None,size,size])
196
ModuleNotFoundError: No module named 'layers'
检查代码,发现pixelcnn目录里面没有layers文件,而git源代码里有的,原来这个目录是github上面链接到另外一个项目,git clone的时候没有下载到本地。解决的方法是手工把layers等几个文件下载下来并放入pixelcnn目录里。
报错:没有pydm,于是装上了pydm
结果就调通了,太高兴了! 其实大部分项目都有requirement.txt,这样直接pip install -r requirement.txt就行了。当然即使有这个文件,我本人也习惯一个一个添加模块,主要是因为这样可以单独看到每个模块的安装情况,并且不受requirement.txt文件里的版本限制。Python各模块的版本问题一直是个大坑,运气好碰不到,运气不好直接撂挑子。所以我宁愿手工一个一个安装。
然后将截图发给小助手,申请到了ascend资源。后面就是在升腾系统上面完成迁移工作了。
总结一下,这步还算比较顺利,出的问题都是常规问题。这里跑的是mnist数据集,比赛最终验收是需要cifar10数据集通过才行,但是我建议先调通mnist数据集,从简单到复杂,逐渐提高难度更有利于任务的完成,这也是后面一直贯彻的思想。
在升腾上开始迁移工作
在ascend上面,竟然python mnist.py没有调试就能跑起来了,当时感觉太不可思议了。当然碰到了数据集无法下载的问题,反正这个数据集小,手工上传就ok了。之所以顺利,是因为前面已经在本地跑通了,另外现在也只是用cpu来跑,还没有涉及迁移工作。
罗马不是一日建成的,果然,训练完成后报错:
Traceback (most recent call last):
File "mnist.py", line 291, in <module>
extract_z(**config)
File "mnist.py", line 119, in extract_z
x = tf.placeholder(tf.float32,[None,784])
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/array_ops.py", line 2619, in placeholder
return gen_array_ops.placeholder(dtype=dtype, shape=shape, name=name)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/gen_array_ops.py", line 6669, in placeholder
"Placeholder", dtype=dtype, shape=shape, name=name)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/framework/op_def_library.py", line 794, in _apply_op_helper
op_def=op_def)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3357, in create_op
attrs, op_def, compute_device)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3401, in _create_op_internal
self._check_not_finalized()
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 2998, in _check_not_finalized
raise RuntimeError("Graph is finalized and cannot be modified.")
RuntimeError: Graph is finalized and cannot be modified.
现在进入乱改模式:87行注释掉试试:不行
230行注释掉:也不行
现在看是119行那里报错,用的x = tf.placeholder(tf.float32,[None,784])
看了一下说明,tf里面为什么用placeholder:
为什么要使用tf.placeholder?
因为每一个tensor值在graph上都是一个op,
当我们将train数据分成一个个minibatch然后传入网络进行训练时,
每一个minibatch都将是一个op,
这样的话,一副graph上的op未免太多,也会产生巨大的开销;
于是就有了tf.placeholder,
我们每次可以将 一个minibatch传入到x = tf.placeholder(tf.float32,[None,32])上,
下一次传入的x都替换掉上一次传入的x,
这样就对于所有传入的minibatch x就只会产生一个op,
不会产生其他多余的op,进而减少了graph的开销。
以上说明链接:https://www.jianshu.com/p/a23cf9be601f
来源:简书
然后用了好几天时间用来解决这个问题,但是都看不太懂,不知道该怎么修改。
于是静下心来找tf的mnist入门例子学习,在仔细学习的时候,发现这样一句代码:
tf.reset_default_graph()
于是在每段tf训练代码前面,使用这个reset代码,乌拉,程序至少能向下执行了!
然后碰到报错:
2020-12-13 20:02:07,916 - logging at line 304 - INFO - end extract_z and train_prior
Traceback (most recent call last):
File "mnist.py", line 305, in <module>
train_prior(config=config,**config)
File "mnist.py", line 214, in train_prior
10,NUM_LAYERS,NUM_FEATURE_MAPS)
File "/home/model_user14/jk/tf-vqvae/model.py", line 195, in __init__
from layers import GatedCNN
ModuleNotFoundError: No module named 'layers'
这个问题也是困扰了我好久。我仔细看了本机的代码,没有找到layers库,我曾经把tf的layers暴露出来(就是import tensorflow.layers),但是报错,明显不对。我就不明白了,难道别人不会碰到吗?代码model.py中在使用lasyer的前面,有这句:
sys.path.append('pixelcnn')
但是pixelcnn这个目录是空的(好吧,我现在真的不知道为什么cpu的时候已经出现并解决这个问题,这里又弄不明白一次)。
于是到github上面看源代码,发现pixelcnn这个目录是关联目录,链接到另外一个项目,那个项目里是有layers这个文件的,将这个文件内容copy过来,乌拉,程序终于执行到结束啦(又解决了一次,又高兴了一次)!
现在的问题是:
怎样用npu训练
现在用时比较长,可以看到log信息里没有tf_adapter、[GEOP]等关键词,这证明没有使用npu。这种判断方法是给的资料里面讲的,而且最终PR提交也是验证这几个关键字来判断是否通过的。
加上这句,看看到底用的啥设备:
config.gpu_options.allow_growth = True
我现在不明白这句原来就有,还用加?
看了下输出,果然用的cpu
valid/strided_slice/stack_2: (Const): /job:localhost/replica:0/task:0/device:CPU:0
2020-12-14 11:34:37.334224: I tensorflow/core/common_runtime/placer.cc:54] valid/strided_slice/stack_2: (Const): /job:localhost/replica:0/task:0/device:CPU:0
现在开始按照手册进行tf迁移到升腾系统的代码改写阶段,最前面加上库的引入:
from npu_bridge.estimator import npu_ops
from tensorflow.core.protobuf.rewriter_config_pb2 import RewriterConfig
在sess.run前面加入这些语句:
#创建session
config = tf.ConfigProto()
custom_op = config.graph_options.rewrite_options.custom_optimizers.add()
custom_op.name = "NpuOptimizer"
custom_op.parameter_map["use_off_line"].b = True # 必须显示开启,在昇腾AI处理器执行训练
config.graph_options.rewrite_options.remapping = RewriterConfig.OFF # 必须显示关闭remap
config.graph_options.rewrite_options.optimizers.extend(["GradFusionOptimizer"]) #分布式添加
果然,
报错,一大堆!
现在先把加上的这些全部注释掉,把(现在我也不知道当时解决的啥,有时候没记录就永远的不知道发生了什么)解决掉
报错:
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/variable_scope.py", line 868, in _get_single_variable
(err_msg, "".join(traceback.format_list(tb))))
ValueError: Variable net/params/enc/conv2d_1/w already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:
按照提示加上这句:
tf.reset_default_graph()
现在终于cpu版本过去了
既然cpu版本调通了,那就继续调试npu版本。下面的报错信息非常多:
unknownshape_format=",".join(unknownshape_format_list))
TypeError: gen_param() got an unexpected keyword argument 'unknownshape_format'
[ERROR] TEFUSION(86372,python):2020-12-14-16:08:51.995.932 [tensor_engine/te_fusion/fusion_op.cc:2078]SelectTbeOpFormat Failed to call op func op_select_format, need to check op info: module name[impl.mul], op name [op_select_format], op inputs: ({'shape': (-1, 64), 'ori_shape': (-1, 64), 'format': 'NHWC', 'ori_format': 'NHWC', 'dtype': 'float32', 'addr_type': 0, 'valid_shape': (), 'slice_offset': (), 'L1_workspace_size': -1, 'L1_fusion_type': -1, 'L1_addr_offset': 0, 'total_shape': (), 'split_index': 0, 'is_first_layer': False, 'range': ((1, None), (64, 64))}, {'shape': (1,), 'ori_shape': (), 'format': 'NHWC', 'ori_format': 'NHWC', 'dtype': 'float32', 'addr_type': 0, 'valid_shape': (), 'slice_offset': (), 'L1_workspace_size': -1, 'L1_fusion_type': -1, 'L1_addr_offset': 0, 'total_shape': (), 'split_index': 0, 'is_first_layer': False}), outputs: ({'shape': (-1, 64), 'ori_shape': (-1, 64), 'format': 'NHWC', 'ori_format': 'NHWC', 'dt
[ERROR] TEFUSION(86372,python):2020-12-14-16:08:51.995.974 [tensor_engine/te_fusion/fusion_op.cc:2078]SelectTbeOpFormat ype': 'float32', 'addr_type': 0, 'valid_shape': (), 'slice_offset': (), 'L1_workspace_size': -1, 'L1_fusion_type': -1, 'L1_addr_offset': 0, 'total_shape': (), 'split_index': 0, 'range': ((1, None), (64, 64))},), attrs: ().
[ERROR] TEFUSION(86372,python):2020-12-14-16:08:51.996.001 [tensor_engine/te_fusion/fusion_api.cc:943]SelectTbeOpFormat Failed to select tbe op format. Name=[train/backward/Adam/update_train/params/embed/embed/mul_1], Module=[/home/HwHiAiUser/Ascend/ascend-toolkit/20.1.rc1/arm64-linux/opp/op_impl/built-in/ai_core/tbe/impl/mul]
[ERROR] FE(86372,python):2020-12-14-16:08:51.996.020 [fusion_engine/adapter/tbe_adapter/tbe_op_store_adapter.cpp:1087]87118 SelectOpFormat:"Op[train/backward/Adam/update_train/params/embed/embed/mul_1,optype[Mul]]: fail to invoke SelectTbeOpFormat."
[ERROR] FE(86372,python):2020-12-14-16:08:51.996.037 [fusion_engine/format_selector/op_customize/format_dtype_op_customize_selector.cpp:130]87118 GetDynamicFormatDtype:"Op[name=train/backward/Adam/update_train/params/embed/embed/mul_1,type=Mul]: fail to select formats and dataTypes."
[ERROR] FE(86372,python):2020-12-14-16:08:51.996.054 [fusion_engine/format_selector/op_customize/format_dtype_op_customize_selector.cpp:41]87118 GetSupportFormatDtype:"Fail to get dynamic format and data type of op[train/backward/Adam/update_train/params/embed/embed/mul_1, Mul]."
[ERROR] FE(86372,python):2020-12-14-16:08:51.996.068 [fusion_engine/format_selector/op_customize/format_dtype_op_customize_selector.cpp:57]87118 GetUnknownShapeSupportFormatDtype:"Op[name=train/backward/Adam/update_train/params/embed/embed/mul_1,type=Mul]: Fail to GetUnknownShapeSupportFormatDtype."
[ERROR] FE(86372,python):2020-12-14-16:08:51.996.083 [fusion_engine/ops_kernel_store/sub_ops_store.cpp:770]87118 CheckSubStoreSupported:"Fail to get the GetSupportFormatDtype, return false."
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/te/platform/fusion_manager.py", line 706, in call_op_func
return opfunc(*inputs, *outputs, *attrs)
File "/home/HwHiAiUser/Ascend/ascend-toolkit/latest/arm64-linux/opp/op_impl/built-in/ai_core/tbe/impl/mul.py", line 316, in op_select_format
unknownshape_format=",".join(unknownshape_format_list))
TypeError: gen_param() got an unexpected keyword argument 'unknownshape_format'
仔细看报错
TensorSummaryV2 is not in white list, so currently not support
忘记记录了,好像这里也没有啥。
把前面的报错提交issue,好像不是我一个人碰到这个问题。
看到别人报的issue:https://gitee.com/ascend/modelzoo/issues/I2958D?from=project-issue
我报的issue: https://gitee.com/ascend/modelzoo/issues/I29BT6?from=project-issue
重新来一次,报错:
Traceback (most recent call last):
File "mnist.py", line 292, in <module>
train_prior(config=config,**config)
File "mnist.py", line 194, in train_prior
vq_net = VQVAE(None,None,BETA,_not_used,K,D,_mnist_arch,params,False)
File "/home/model_user14/jk/vqvae/tf-vqvae/model.py", line 101, in __init__
enc_spec,enc_param_scope,dec_spec,dec_param_scope = arch_fn(D)
File "/home/model_user14/jk/vqvae/tf-vqvae/model.py", line 10, in _mnist_arch
Conv2d('conv2d_1',1,d//4,data_format='NHWC'),
File "/home/model_user14/jk/vqvae/tf-vqvae/commons/ops.py", line 9, in __init__
initializer=tf.truncated_normal_initializer(stddev=stddev))
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/variable_scope.py", line 1500, in get_variable
aggregation=aggregation)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/variable_scope.py", line 1243, in get_variable
aggregation=aggregation)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/variable_scope.py", line 567, in get_variable
aggregation=aggregation)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/variable_scope.py", line 519, in _true_getter
aggregation=aggregation)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/variable_scope.py", line 868, in _get_single_variable
(err_msg, "".join(traceback.format_list(tb))))
ValueError: Variable net/params/enc/conv2d_1/w already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 1748, in __init__
self._traceback = tf_stack.extract_stack()
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3426, in _create_op_internal
op_def=op_def)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3357, in create_op
attrs, op_def, compute_device)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/tensorflow_core/python/framework/op_def_library.py", line 794, in _apply_op_helper
op_def=op_def)
还碰到了一次不管怎么调试,最后的推理都报错的问题,实在没招最后把mnist.py覆盖过来都不行。最终经过非常仔细的排查发现是ops.py里面因为写入这句导致的:import tensorflow.compat.v1 as tf
于是从那之后再没有自作主张的写这句话,而是老老实实的写:import tensorflow as tf ,尽管这样会出很多的警告信息。比如这样的:WARNING The name tf.summary.scalar is deprecated. Please use tf.compat.v1.summary.scalar instead. 众所周知,在程序员的世界里警告都是无视的。
现在,cpu版本的mnist和cifar10两个程序都跑通了,就等issue解决啦!
Issue工程师需要更多日志信息
先在程序里写入:
import os
os.environ['SLOG_PRINT_TO_STDOUT'] = "1"
在训练开始之前,在控制台输入一条命令:
script -f 你的文件名.log
然后正常启动训练,此时控制台,也就是屏幕上所有滚动的内容都会被记录到刚才那个文件中。
训练结束之后,按
Ctrl+D
快捷键,停止记录,保存文件。
提交了日志之后,回应:
您好,我是Mul算子的开发负责人,从您的上述报错来看,可能是由于您当前使用的代码版本中缺少相关定义导致,具体可以查看您的mul.py文件同目录下,是否有util文件夹?如果有,请查看其中的util_select_op_base.py文件中,是否有unknownshape_format关键词。如果没有该关键词,则您的代码版本可能较老,该文件未能够与算子文件同步,我们近期会更新代码,届时第一时间通知您;如果有该关键字,请麻烦把全量日志按照上述的日志获取方法找到并贴在评论下,谢谢!
问题是mul.py文件在哪里啊? 哦,有截图告诉我位置:
/home/HwHiAiUser/Ascend/ascend-toolkit/latest/arm64-linux/opp/op_impl/built-in/ai_core/tbe/impl/mul.py
现在就是要看是否有util目录:
有的
然后看看util文件夹,也有
然后查看util_select_op_base.py文件,发现没有unknownshape_format关键词。
最新的回复:
您好,您所依赖的这个util**.py文件不是算子文件,可能您无法直接安装使用。本周内将有一次代码更新,更新完成后您可以正常使用该文件。更新完成后我将第一时间联系您,对给您带来的困扰表示抱歉。
又来了新回复:
最新解决方案已经在附件里,替换到环境的/home/HwHiAiUser/Ascend/ascend-toolkit/20.1.rc1/arm64-linux/opp/op_impl/built-in/ai_core/tbe/impl/util目录下再试试
附件里是新的util_select_op_base.py文件,但是我发现有好几个目录啊,我有选择恐惧症:
/home/HwHiAiUser/Ascend/ascend-toolkit/20.1.rc1/arm64-linux/opp/op_impl/built-in/ai_core/tbe/impl/util
/home/HwHiAiUser/Ascend/ascend-toolkit/20.1/arm64-linux/opp/op_impl/built-in/ai_core/tbe/impl/util
/home/HwHiAiUser/Ascend/ascend-toolkit/20.1.rc1/arm64-linux/opp/op_impl/built-in/ai_core/tbe/impl/util
/home/HwHiAiUser/Ascend/ascend-toolkit/latest/arm64-linux/opp/op_impl/built-in/ai_core/tbe/impl/util
检查,每个目录都有相应的代码了。(后来才知道 20.1、20.1.rc1、latest这三个目录是同一个,另外两个是软链接指向同一个)
按照上面的解决方案将util_select_op_base.py放入相应目录中,有新的报错:
提了新issue https://gitee.com/ascend/modelzoo/issues/I29N4C
[线上模型挑战] tensorflow VQVAE 模型报错2
一天后得到答复,生成了一个新的文件:
您好,问题已经解决,请取附件的so替换到环境中如下路径,替换前请先备份。
/home/HwHiAiUser/Ascend/ascend-toolkit/20.1.rc1/arm64-linux/opp/op_proto/built-in/libopsproto.so
于是就将原文件备份,并将这个文件cp的相应位置。以后这步就是常规操作了,提issue,拿升级文件,更新升级文件,测试,出来报错提issue,这样循环操作。这个so文件替换后报错就改变了。
看别人的报错:
https://gitee.com/ascend/modelzoo/issues/I23LFO
感谢工作人员的辛苦检查!这里发现即使在输入阶段固定了网络的输入shape,如果代码中使用了类似如下tf.reshape(,(-1,))这样的动态代码也会报错
positive_loss = loss * positive_mask
negative_loss = loss * negative_mask
negative_loss, _ = tf.nn.top_k(tf.reshape(negative_loss, (-1,)), tf.cast(negative_count, tf.int32))
@zx 是的,当前我们框架有限制,对某些算子的输入有限制,必须满足为常量,建议您将reshape的第二个输入替换成tf.constant构造的常量,而不是(-1,)的动态shape,谢谢!
链接地址回复评论:
FusedBatchNormV3是2019年推出的新算子,他的第五个输出是与cuda相关的优化输出,目前尚不支持。可以使用with compat.forward_compatibility_horizon(2019, 5, 1):规避使用该算子
对心回复:
TopKV2的动态shape算子支持已纳入后续开发队列,明确相关计划路标之后,我们及时知会
我没有看太明白,不过知道这么回事:如果有报错,研发会给找到问题在哪里,并给出规避方法,至少照做就行了。后面还会将该需求纳入后续开发队列,这样总有一天这个问题会从根本上解决。这样一看,就对原来模型大赛中出现的各种问题不再忧心忡忡,而是信心满满啦!有信心很重要,因为VQVAE这个模型问题最多,耗时最长,我曾经好几次情绪陷入低谷,又好几次走出低谷,继续勇往直前!
报VQVAE issue3
https://gitee.com/ascend/modelzoo/issues/I29T7Z
回复:从日志上看,原因在于输入给conv2d的shape不是4D的,我们需要知道conv2d上面链接的是哪个算子;
可以通过设置,export DUMP_GE_GRAPH=1, 把GE图打印出来,然后放在issue的附件上,或者把pb文件放在附件上,便于进一步定位,多谢
GE图是这样的,我还不会看:
提交GE图后,回复:
这个issue经分析,与https://gitee.com/HUAWEI-ASCEND/dashboard?issue_id=I28YYG、
#I29E8U:[线上模型挑战]tensorflow-VQVAE 迁移昇腾,数据处理阶段报unknown shape?from=project-issue是一样的问题
都是queue类算子后面接conv引起的
请关注上面2个issue,多谢
于是Issue3关闭,转到这个链接继续观察:
[线上模型挑战]VQ-VAE迁移 Conv2报错
https://gitee.com/ascend/modelzoo/issues/I28YYG
据说已经有一个人跑通了。那我们就:
学习别人成功的代码
比着改,现在第一步训练可以出来了,
但是到了97step 就报错退出了:
2020-12-18 17:13:51.049172: I tf_adapter/kernels/geop_npu.cc:103] BuildOutputTensorInfo, output index:22, total_bytes:262144, shape: 1 1 256 256, tensor_ptr:281461724729536, output281461705736000
2020-12-18 17:13:51.049349: I tf_adapter/kernels/geop_npu.cc:103] BuildOutputTensorInfo, output index:23, total_bytes:1024, shape: 256, tensor_ptr:281461724991808, output281461689349328
2020-12-18 17:13:51.049393: I tf_adapter/kernels/geop_npu.cc:103] BuildOutputTensorInfo, output index:24, total_bytes:2359296, shape: 3 3 256 256, tensor_ptr:281461724992960, output281461705998160
2020-12-18 17:13:51.050712: I tf_adapter/kernels/geop_npu.cc:573] [GEOP] RunGraphAsync callback, status:0, kernel_name:GeOp7_12[ 2585288us]
[ 100] Loss: 0.083
2%|██ | 97/5000 [00:57<1:59:22, 1.46s/it]2020-12-18 17:13:53.807739: I tf_adapter/optimizers/get_attr_optimize_pass.cc:64] NpuAttrs job is localhost
2020-12-18 17:13:53.808222: I tf_adapter/optimizers/get_attr_optimize_pass.cc:128] GetAttrOptimizePass_5 success. [0 ms]
[ERROR] AICPU(136030,python):2020-12-18-17:13:55.066.334 [aicpu/aicpu_host/aicpu_engine/aicpu_ops_kernel_info/aicpu_ops_kernel_info.cpp:341][GetKernelLibByOpType]:"Operator:Placeholder belongs to relevant info library is not exist."
[ERROR] AICPU(136030,python):2020-12-18-17:13:55.066.439 [aicpu/aicpu_host/aicpu_engine/aicpu_ops_kernel_info/aicpu_ops_kernel_info.cpp:120][CalcOpRunningParam]:"Op Placeholder can't find associated kernel info lib."
[ERROR] GE(136030,python):2020-12-18-17:13:55.066.544 [framework/domi/graph/build/graph_builder.cc:84]136783 CalcOpParam: ErrorNo: 20000016() Calculate op running param failed, node name is Placeholder
[ERROR] GE(136030,python):2020-12-18-17:13:55.066.615 [framework/domi/graph/build/graph_builder.cc:194]136783 BuildForKnownShapeGraph: ErrorNo: -1(failed) Graph[ge_default_20201218171353_31] builder CalcOpParam() return fail.
[ERROR] GE(136030,python):2020-12-18-17:13:55.066.657 [framework/domi/graph/build/graph_builder.cc:166]136783 Build: ErrorNo: -1(failed) Build for known shape graph failed.
[ERROR] GE(136030,python):2020-12-18-17:13:55.066.713 [framework/domi/graph/manager/graph_manager.cc:2750]136783 Build: ErrorNo: 20000016() SubGraph build Failed.
[ERROR] GE(136030,python):2020-12-18-17:13:55.066.770 [framework/domi/graph/manager/graph_manager.cc:619]136783 PreRunAfterOptimizeSubGraph: ErrorNo: 20000016() Failed to process GraphManager_Build
[ERROR] GE(136030,python):2020-12-18-17:13:55.066.825 [framework/domi/graph/manager/graph_manager.cc:700]136783 PreRun: ErrorNo: 20000016() Run PreRunAfterOptimizeSubGraph failed for graph:ge_default_20201218171353_31.
[ERROR] GE(136030,python):2020-12-18-17:13:55.077.817 [framework/domi/graph/manager/graph_manager.cc:2542]136783 ReturnError: ErrorNo: 20000016() PreRun Failed, thread exit...
2020-12-18 17:13:55.077927: W tensorflow/core/framework/op_kernel.cc:1639] Unavailable:
2020-12-18 17:13:58.078117: F tf_adapter/kernels/geop_npu.cc:570] GeOp9_0GEOP::::DoRunAsync Failed
- 点赞
- 收藏
- 关注作者
评论(0)