华为ModelArts训练Alexnet模型

一、参考资料

ModelArts Web训练

二、关键步骤

2.1 上传源码到obs

.
|-- dataset  # 数据集
|   |-- train
|   `-- val
`-- train
    |-- data.py
    |-- model.py
    `-- train_npu.py  # 启动文件

2.2 obs创建目录

obs目录结构

log:日志存放路径
output:训练输出路径

在这里插入图片描述

2.3 创建算法

算法管理
	---》创建
名称:自定义
描述:自定义
创建方式:自定义
	AI引擎:tensorflow_1.15-cann_5.0.3-py_3.7-euler_2.8.3-aarch64
	代码目录:/xxx/alexnet/train/
	启动文件:/xxx/alexnet/train/train_npu.py
输入数据配置:数据集路径
	映射名称:自定义(默认即可)
	代码路径参数:data_url
输出数据配置:训练输出路径
	映射名称:自定义(默认即可)
	代码路径参数:train_url
其他:默认即可

在这里插入图片描述

2.4 创建训练作业

训练管理
	---》训练作业
		---》创建
名称:自定义
描述:自定义
算法:
	---》我的算法
		---》勾选刚创建的算法
训练输入:
	---》data_url:/xxx/alexnet/dataset/
训练输出:
	---》train_url:/xxx/alexnet/output/
资源池:根据实际需求
资源类型:Ascend
规格:根据实际需求
计算节点个数:根据实际需求
作业日志路径:/xxx/alexnet/log/

在这里插入图片描述

2.5 训练完成

在这里插入图片描述

三、FAQ

Q:The input shape of GeOp5_0 is dynamic

【南京大学】【MEMNET】【ID1085】 模型 npu迁移时报错: The input shape of GeOp5_0 is dynamic

File "/home/ma-user/modelarts/user-job-dir/train/train_npu.py", line 114, in main
    test_loss, test_acc, summary = sess.run([cost, accuracy, summary_op], feed_dict=val_feed)
  File "/home/ma-user/anaconda/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 956, in run
    run_metadata_ptr)
  File "/home/ma-user/anaconda/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1180, in _run
    feed_dict_tensor, options, run_metadata)
  File "/home/ma-user/anaconda/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1359, in _do_run
    run_metadata)
  File "/home/ma-user/anaconda/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1384, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InternalError: The input shape of GeOp5_0 is dynamic, please ensure that npu option[dynamic_input] is set correctly, for more details please refer to the migration guide.
	 [[{
    
    {
    
    node GeOp5_0}}]]
错误原因:
模型训练过程中存在输入shape变化的问题

解决办法:
train_npu.py中添加
custom_op.parameter_map["dynamic_input"].b = True
custom_op.parameter_map["dynamic_graph_execute_mode"].s = tf.compat.as_bytes("lazy_recompile")

猜你喜欢

转载自blog.csdn.net/m0_37605642/article/details/125475010
今日推荐