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 5.3 kB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <<<<<<< HEAD
  2. # 如何在启智平台上进行模型训练—GCU示例
  3. ## 1.启智集群和智算集群的GCU训练样例
  4. ###### 启智集群的示例代码:
  5. - 训练示例请参考示例中[train_gcu.py](./train_gcu.py)的代码注释
  6. ## 2. 在openi上获取数据集,预训练模型,输出路径
  7. 安装openi包
  8. ```
  9. pip install -U openi
  10. ```
  11. 使用openi包
  12. ```
  13. #导入包
  14. from openi.context import prepare, upload_openi
  15. #初始化导入数据集和预训练模型到容器内
  16. openi_context = prepare()
  17. #获取数据集路径,预训练模型路径,输出路径
  18. dataset_path = openi_context.dataset_path
  19. pretrain_model_path = openi_context.pretrain_model_path
  20. output_path = openi_context.output_path
  21. #回传结果到openi
  22. upload_openi()
  23. ```
  24. ## 3.FAQ
  25. ### 3.1 关于启智平台公共库[openi](https://openi.pcl.ac.cn/OpenIOSSG/openi-pypi):
  26. 主要使用的方法有以下几个:
  27. ```
  28. prepare 准备数据集,模型,输出路径
  29. upload_openi 将训练镜像的输出结果拷贝回启智平台
  30. ```
  31. ### 3.2 解决参数报错问题:
  32. 请在代码中加入 `args, unknown = parser.parse_known_args()`,可忽略掉 `--ckpt_url`, `--multi_date_url`等参数报错问题
  33. =======
  34. # 如何在启智平台上进行模型训练 - GCU版本
  35. - 启智集群单数据集的训练,启智集群多数据集的训练,智算集群的单数据集训练,这3个的训练使用方式不同,请注意区分。数据加载方式、模型定义逻辑大致同[手写数字识别GPU版本_PytorchExample](https://openi.pcl.ac.cn/OpenIOSSG/MNIST_PytorchExample_GPU)项目:
  36. - 智算集群单数据集的训练示例请参考示例中[train_for_c2net.py](https://openi.pcl.ac.cn/OpenIOSSG/MNIST_PytorchExample_GCU/src/branch/master/train_for_c2net.py)的代码注释
  37. - 智算集群中单/多数据集使用方式:
  38. 如本示例中数据集MNISTDataset_torch.zip的使用方式是:数据集位于/tmp/dataset/下
  39. ## 1 概述
  40. - 本项目以#LeNet5-MNIST-PyTorch为例,简要介绍如何在启智AI协同平台上使用GCU集群+Pytorch完成训练任务,旨在为AI开发者提供启智训练示例。
  41. - 用户可以直接使用提供的[MNIST数据集](https://git.openi.org.cn/OpenIOSSG/MNIST_PytorchExample_GPU/datasets?type=0), 和代码文件创建自己的训练任务。
  42. ## 2 准备工作
  43. - 启智平台使用准备,本项目需要用户创建启智平台账户,克隆代码到自己的账户,上传数据集,具体操作方法可以通过访问[OpenI_Learning](https://openi.pcl.ac.cn/zeizei/OpenI_Learning)项目学习小白训练营系列课程进行学习。
  44. ### 2.1 数据准备
  45. #### 数据集获取
  46. - 如果你需要试运行本示例,则无需再次上传数据集,因为示例中的数据集MnistDataset_torch.zip已经设置为公开数据集,可以直接引用。
  47. - 数据文件说明
  48. - MNISTData数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。
  49. #### 数据集上传
  50. 使用GCU进行训练,使用的框架为Pytorch,上传和使用数据集的格式和GPU保存一致,可传到数据集-GPU界面。(此步骤在本示例中不需要,可直接选择公开数据集MNISTDataset_torch.zip)
  51. ### 2.2 执行脚本准备
  52. #### 示例代码
  53. - 示例代码可从本仓库中下载,[代码下载](https://openi.pcl.ac.cn/OpenIOSSG/MNIST_PytorchExample_GCU)
  54. - 代码文件说明
  55. - [train_for_c2net.py](https://openi.pcl.ac.cn/OpenIOSSG/MNIST_PytorchExample_GCU/src/branch/master/train_for_c2net.py),用于智算网络训练的脚本文件。
  56. - [model.py](https://openi.pcl.ac.cn/OpenIOSSG/MNIST_PytorchExample_GCU/src/branch/master/model.py),使用的训练网络,在单/多数据集训练,智算网络训练中使用到。
  57. #### 【重点】GCU-Pytorch代码适配
  58. - GCU初始化
  59. ```
  60. def is_torch_dtu_available():
  61. if importlib.util.find_spec("torch_dtu") is None:
  62. return False
  63. if importlib.util.find_spec("torch_dtu.core") is None:
  64. return False
  65. return importlib.util.find_spec("torch_dtu.core.dtu_model") is not None
  66. if is_torch_dtu_available():
  67. import torch_dtu
  68. import torch_dtu.distributed as dist
  69. import torch_dtu.core.dtu_model as dm
  70. from torch_dtu.nn.parallel import DistributedDataParallel as torchDDP
  71. ```
  72. - device计算设备指定
  73. ```
  74. if is_torch_dtu_available():
  75. device = dm.dtu_device()
  76. else:
  77. device = torch.device("cpu")
  78. ```
  79. - 优化器更新接口
  80. ```
  81. sgd = SGD(model.parameters(), lr=1e-1)
  82. for _epoch in range(epoch):
  83. loss.backward()
  84. if is_torch_dtu_available():
  85. dm.optimizer_step(sgd, barrier=True)
  86. else:
  87. sgd.step()
  88. ```
  89. ## 3 创建训练任务
  90. 准备好数据和执行脚本以后,需要创建训练任务将GCU-Pytorch脚本运行。首次使用的用户可参考本示例代码。
  91. 启动脚本选择train_for_c2net.py
  92. ## 4 查看运行结果
  93. ### 4.1 在训练作业界面可以查看运行日志
  94. 目前训练任务的日志在代码中print输出,参考示例train_for_c2net.py代码相关print
  95. ### 4.2 训练结束后可以下载模型文件
  96. >>>>>>> origin/liuzx
  97. ## 对于示例代码有任何问题,欢迎在本项目中提issue。

No Description