目录

本地pytorch代码迁移至华为云ModelArts平台训练

本地pytorch代码迁移至华为云ModelArts平台训练

本地pytorch代码迁移至华为云ModelArts平台训练

上传代码和数据集至华为云OBS

  • 注册华为云OBS账号并使用AK登录。

    参考这篇文件

  • 修改pytorch本地训练代码文件,在源代码开始处新增以下片段。

    # 创建解析
    parser = argparse.ArgumentParser(description="train flower",
                                     formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    # 添加参数
    parser.add_argument('--train_url', type=str,
                        help='the path model saved')
    parser.add_argument('--data_url', type=str, help='the training data')
    # 解析参数
    args, unkown = parser.parse_known_args()
    # 输出位置
    train_url = args.train_url
    # 数据集位置
    data_url = args.data_url

https://i-blog.csdnimg.cn/blog_migrate/8f3fcb0510527544bc58b795f11e21cd.png

https://i-blog.csdnimg.cn/blog_migrate/ace54a5e3c32ccf3830f21a45f82b664.png

train_url:表示你之前代码所指向的数据集位置(例:H:\dataset\flower_data)

data_url:表示你之前代码模型权重保存的位置或者其他输出文件保存的位置(例:H:\weights)

  • 将原来的数据集路径用data_url变量代替,权重保存路径用train_url变量代替。

    https://i-blog.csdnimg.cn/blog_migrate/c1affb114b8a0206bd56a36fc0b5397f.png

  • 修改完成后,在Pycharm的Terminal里(或其他可执行python程序的终端)执行以下命令若程序成功运行,表明修改成功( 注意命令之间的空格,建议直接复制 )。

python train.py --data_url H:/dataset/TB_Database22 --train_url ./

https://i-blog.csdnimg.cn/blog_migrate/8cbe33dd3ecf31795e34c1005554e556.png

  • 本地调试完后,将模型训练的相关代码和数据集上传至OBS文件夹下。

    https://i-blog.csdnimg.cn/blog_migrate/71288f358e651dbb8ed0bb94ec9aff60.png

华为云运行环境训练

华为云Notebook创建实例
  • 登录华为云ModelArts控制台(华为云官网搜索框输入ModelArts控制台点击即可进入)

  • 选择开发环境-Notebook-点击创建

    https://i-blog.csdnimg.cn/blog_migrate/0c6b325c8588371c3c41bbcc00d3164f.png

  • 设置相关参数(只提供两个pytorch镜像,若没有与本地同版本镜像,请自行尝试哪个版本能正常运行)

    https://i-blog.csdnimg.cn/blog_migrate/3fe1141bb678e3887f933b8787e411d7.png

    https://i-blog.csdnimg.cn/blog_migrate/2aac5c48156237c169e134025e7cefcd.png

  • 第一次部署选择CPU 2核 8GB规格,部署成功且熟悉部署过程后,再重新创建GPU实例执行训练作业,点击立即创建。

    https://i-blog.csdnimg.cn/blog_migrate/23771ee9057d620222d78f82ace6103c.png

JupyterLab加载数据和代码
  • 创建成功后,状态为运行中,如下图所示,再点击打开JupterLab。

    https://i-blog.csdnimg.cn/blog_migrate/9f3acc90e7d2f78350a89a9144316e6b.png

  • 选择Notebook中的pytorch进入编辑器。

    https://i-blog.csdnimg.cn/blog_migrate/da16116d5e42e1b772210910e1792bd9.png

  • 通过以下指令将OBS中的数据集文件夹和代码文件夹拷贝至左侧文件存放区域。copy_parallel函数的第一个参数为OBS中的文件路径,第二个参数为拷贝过来的文件路径。

import moxing as mox
mox.file.copy_parallel('obs://anle-data/flower_myself','./flower')

https://i-blog.csdnimg.cn/blog_migrate/313f449497b9965ef6deec9681bec18a.png

开始训练
  • 模型输出文件夹需要手动新建,处理好后点击Terminal图标,跳转至控制台。
  • 在控制台输入以下指令进入到与训练代码同目录的文件夹。
cd work
  • 输入以下指令执行训练代码
python train.py --data_url ../flower/ --train_url ../output/

…/flower/:数据集所在文件夹

…/output/:模型相关输出存放文件夹

https://i-blog.csdnimg.cn/blog_migrate/f77a4544b7bbf587b883ba1fa3849191.png

https://i-blog.csdnimg.cn/blog_migrate/ca8df43f7f5e7f4c85ccbf8ba2562981.png

可以看到模型已经开始运行,并保存权重get_squeezenet1_0.pth在output文件夹下,亦可下载至本地。 重要一点是代码必须先在本地调试好,再上传华为云平台进行训练,不然中途会出现各种难以解释的问题,祝好运