You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 7.0 kB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. # 如何在启智平台上进行模型调试和训练—NPU_手写数字识别示例
  2. ## 一 ,数据集及预训练模型准备
  3. ##### 1,数据集说明:
  4. 数据集可从本项目的数据集中引用,[数据集引用](https://openi.pcl.ac.cn/OpenIOSSG/OpenI_Cloudbrain_Example/datasets)
  5. - MnistDataset_mindspore数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。
  6. - MnistDataset_mindspore.zip数据集压缩包的目录结构如下:
  7. > MnistDataset_mindspore.zip
  8. > ├── test
  9. > │ ├── t10k-images-idx3-ubyte
  10. > │ └── t10k-labels-idx1-ubyte
  11. > └── train
  12. > ├── train-images-idx3-ubyte
  13. > └── train-labels-idx1-ubyte
  14. >
  15. ##### 2,预训练模型说明:
  16. Mindspore_MNIST_Example_Model模型可从本项目的模型目录中引用,[预训练模型引用](https://openi.pcl.ac.cn/OpenIOSSG/OpenI_Cloudbrain_Example/modelmanage/show_model)
  17. * Mindspore_MNIST_Example_Model模型的目录结构如下:
  18. > Mindspore_MNIST_Example_Model
  19. > ├── checkpoint_lenet-1_1875.ckpt
  20. >
  21. ## 二. 如何在云脑上获取代码路径,数据集路径,预训练模型路径,输出路径
  22. ##### 1,准备数据
  23. ```
  24. from c2net.context import prepare
  25. c2net_context = prepare()
  26. ```
  27. ##### 2,获取代码路径
  28. ```
  29. code_path = c2net_context.code_path +"/" +"项目名"
  30. 在本示例中代码路径为:
  31. code_path = c2net_context.code_path + "/" + "Openl_Cloudbrain_Example"
  32. ```
  33. ##### 3,获取数据集路径
  34. ```
  35. dataset_path = c2net_context.dataset_path +"/" +"数据集名称"
  36. 在本示例中代码路径为:
  37. dataset_path = c2net_context.dataset_path + "/" + "MnistDataset_mindspore"
  38. ```
  39. ##### 4,获取预训练模型路径
  40. ```
  41. pretrain_model_path = c2net_context.pretrain_model_path +"/" +"模型名称"
  42. 在本示例中预训练模型路径为:
  43. pretrain_model_path = c2net_context.pretrain_model_path + "/" + "Mindspore_MNIST_Example_Model"
  44. ```
  45. ##### 5,获取输出路径
  46. ```
  47. output_path = c2net_context.output_path
  48. 在本示例中输出路径为:
  49. output_path = c2net_context.output_path
  50. ```
  51. ##### 6,回传结果
  52. ```
  53. from c2net.context import upload_output
  54. upload_output()
  55. 在本示例中回传结果为(只有训练任务才能回传结果):
  56. from c2net.context import prepare,upload_output
  57. upload_output()
  58. ```
  59. ## 三.NPU样例准备
  60. ##### 1,npu示例代码:
  61. - 训练任务单卡示例请参考示例中[train.py](./train.py)的代码注释
  62. - 训练任务多卡示例请参考示例中[train_multi_card.py](./train_multi_card.py)的代码注释
  63. - 推理任务示例请参考示例中[inference.py](./inference.py)的代码注释
  64. - 启智集群训练任务已经将ImageNet-1k数据集挂载到训练镜像,具体使用方法请参考示例中[read_imagenet.py](./read_imagenet.py)的代码注释
  65. - 继续训练示例参考示例中[train_continue.py](./train_continue.py)的代码注释
  66. ##### 2,创建NPU调试任务
  67. 表1创建训练作业界面参数说明
  68. | 参数名称 | 说明 |
  69. | -------- | ----------------------------------------------------------------------------------- |
  70. | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 |
  71. | 镜像 | 镜像选择mindspore_1.10.1 |
  72. | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择npu_mnist_example/train.py |
  73. | 数据集 | 数据集选择MnistDataset_mindspore.zip |
  74. | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 |
  75. | 资源规格 | 规格选择[Ascend: 1 * Ascend 910 CPU:24 核 256GiB],表示单机单卡 |
  76. | 模型 | 模型可选择Mindspore_MNIST_Example_Model |
  77. 启动调试任务后,先执行prepare()进行数据准备;
  78. 进入对应的代码目录后,可在终端执行python train.py;
  79. ##### 3,创建NPU训练任务
  80. 表2 创建训练作业界面参数说明
  81. | 参数名称 | 说明 |
  82. | -------- | ----------------------------------------------------------------------------------- |
  83. | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 |
  84. | 镜像 | 镜像选择mindspore_1.10.1 |
  85. | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择npu_mnist_example/train.py |
  86. | 数据集 | 数据集选择MnistDataset_mindspore.zip |
  87. | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 |
  88. | 资源规格 | 规格选择[Ascend: 1 * Ascend 910 CPU:24 核 256GiB],表示单机单卡 |
  89. | 模型 | 模型选择Mindspore_MNIST_Example_Model |
  90. 启动训练任务后,训练结束会在任务的结果下载页提供输出结果下载
  91. ## 四.NPU任务注意事项
  92. ##### 1, 使用超参数的方法:
  93. 请在代码中加入
  94. ```
  95. import parser
  96. args, unknown = parser.parse_known_args()
  97. #可忽略掉 `--ckpt_url`,`--data_url`, `--multi_date_url`等参数无定义导致的报错问题
  98. ```
  99. ##### 2, 多卡训练任务如何只让数据集只拷贝一次
  100. 使用缓存文件和local_rank%8作为判断,若第0卡拷贝完成,则其它卡不拷贝,并在第0卡拷贝数据完成后才执行之后的代码,具体可参考示例中[train_multi_card.py](./train_multi_card.py)的代码注释
  101. ```
  102. if local_rank%8==0:
  103. 这里省略下载数据的代码...
  104. f = open("/cache/download_input.txt", 'w')
  105. f.close()
  106. try:
  107. if os.path.exists("/cache/download_input.txt"):
  108. print("download_input succeed")
  109. except Exception as e:
  110. print("download_input failed")
  111. while not os.path.exists("/cache/download_input.txt"):
  112. time.sleep(1)
  113. ```
  114. ##### 3, 公共库[c2net](https://openi.pcl.ac.cn/OpenIOSSG/c2net-pypi)高级用法:
  115. 主要使用的方法有以下几个:
  116. ```
  117. from c2net.context import prepare, upload_output, moxing_helper
  118. prepare() 准备数据集,模型,输出路径
  119. upload_output() 将训练镜像的输出结果拷贝回启智平台
  120. moxing_helper.obs_copy_file(string,string) 通过mox拷贝文件
  121. moxing_helper.obs_copy_folder(string,string) 通过mox拷贝文件夹
  122. ```
  123. ## 对于示例代码有任何问题,欢迎在本项目中提issue。

No Description