体验调优猫狗识别模型

更新时间:

您可以启动一个较小算力的开发环境来调试代码,调试完成后,可以基于调试好的代码来提交一个使用更大数据集和更多算力的离线训练任务。

# 前提条件

【下载代码包】 (opens new window),提取代码包中的 DogsVsCats.py 文件,本次体验需使用。

# 创建项目

  1. 单击平台项目页右上角的 创建项目,随后在弹框中配置项目的基本信息。

    • 项目名称:DogsVsCats
    • 项目描述:猫狗识别模型调试与训练

  2. 单击 确定,项目创建成功,并进入 初始化开发环境 引导页。

  3. 配置环境的如下信息,未提及的参数保持默认值。

    • 资源配置:选择 基础版B1.small
    • 镜像:选择含 TensorFlow-2.x 框架的镜像,也就是要选择内置了 TensorFlow 二点几版本的镜像。
      通过如下方法过滤出来的镜像均可选择。
    • 数据:选择 公开 下的 DogsVsCats(作者为“趋动云小助手”)。
    • 自动停止(高级设置 中):选择 2小时
  4. 单击 立即启动,提交启动任务,并进入项目详情页。

# 调试代码

  1. 等待开发环境启动成功,单击项目详情页右上角 进入开发环境

  2. 上传 DogsVsCats.py 文件到 /gemini/code/ 目录下。

  3. 顶部切换到 网页终端

  4. 在终端界面执行如下命令测试模型的识别能力。

    python  $GEMINI_RUN/DogsVsCats.py --num_epochs 5 --data_dir $GEMINI_DATA_IN1/DogsVsCats/ --train_dir $GEMINI_DATA_OUT
    

    系统返回一系列信息,直到返回 test accuracy 信息,如下所示,表明该模型测试结束,其识别猫狗的能力为 0.500000,即几乎无识别能力。

    ...省略...
    2022-02-17 05:20:47.350953: W tensorflow/python/util/util.cc:348] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
    test accuracy:0.500000
    
  5. 单击顶部 JupyterLab,切换回 JupyterLab 页面,分析 /gemini/code/DogsVsCats.py
    经排查,发现代码中没有打乱数据集进行训练,导致模型没有训练成功。

  6. 修改模型代码并保存。

    1. 双击 /gemini/code/ 路径下的 DogsVsCats.py ,开始编辑该文件。
    2. 删除该文件中第 44 行的注释符号 #
      tuning_codeModify
    3. 按 “Crtl + S” 键,保存该文件。
  7. 单击顶部 网页终端,进入终端界面再次执行上述 3 中的命令进行识别能力的测试。
    系统返回的测试结果如下所示,显然已经能达到 80% 能识别出猫狗了。

    ...
    2022-02-17 05:38:55.734254: W tensorflow/python/util/util.cc:348] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
    test accuracy:0.845800
    

    此时您可提交离线训练,对模型进行大规模的训练以达到更精准的识别能力,详情参见下一步。

  8. 单击右上角 停止并销毁,停止开发环境。

# 提交离线训练

当您已经完成本次调优,可参考如下步骤提交离线训练。

  1. 单击顶部项目名,回到项目详情页。

  2. 单击项目详情页右上角 离线任务,进入离线任务页。

  3. 单击右上角 提交任务 按钮。

  4. 配置任务的如下信息,未提及的保持默认值。

    参数 说明
    任务名称 自定义,如:DogsVsCats001。
    任务模式 选择 单机任务
    资源配置 选择 基础版B1.small
    启动命令 填写如下启动命令,系统将在创建好训练环境后通过如下命令启动训练。
    python $GEMINI_RUN/DogsVsCats.py --num_epochs 5 --data_dir $GEMINI_DATA_IN1/DogsVsCats --train_dir $GEMINI_DATA_OUT
    若您选择的镜像中安装的是 python3.x,则命令开头需要改为 python3
    上述命令含义:执行代码中的 DogsVsCats.py 脚本启动训练,训练所需数据为 $GEMINI_DATA_IN1/DogsVsCats 目录下的数据,训练结果保存在 $GEMINI_DATA_OUT 目录下。
  5. 单击 提交,返回 离线任务 页面。
    在该页面查看任务的状态,该任务约 5 分钟可训练完成。

    • 任务状态显示为 成功 则表示训练任务成功结束。
    • 任务状态为 失败,可将鼠标悬置于 失败 字样上,查看失败原因,详情可参考 FAQ

# 后续操作

模型在经历了大规模数据的训练后,将具备相对精准的识别猫狗的能力,可将输出导为平台模型,以便进一步使用。

  1. 单击顶部项目名,回到项目详情页。

  2. 项目详情中切换到 任务输出 页,随后单击 导出
    taskCommit_list

  3. 勾选要导出的模型文件,并单击 导出为模型,进入 导出为模型 页。

  4. 填写模型相关信息,未提及的参数可保持默认值。
    taskCommit_result

    • 模型名称:可自定义,如 “dogsVsCats”。
    • 模型描述:填写 “识别图片中是猫还是狗”。
  5. 单击右下角 创建,导出为平台模型。
    生成的模型将保存在平台中,您可将其公开性设置为 公开,并将其分享给其他成员使用或进一步完善模型。

# FAQ

  1. 训练失败,提示 代码执行错误
    • 失败现象
    • 失败原因
      可能是您提交训练时选择的镜像不对,应该选择含 TensorFlow 2.x 框架的镜像,但您选择了其他版本的。
      鼠标悬置于训练任务详情页的镜像上查看镜像的详细信息,确认镜像中是否是 TensorFolow 2.x 的框架,如下图所示。
  2. 训练失败,提示 内存不足
    • 失败现象
    • 失败原因
      可能是您提交训练时配置的资源不足,您可在训练任务详情页中的 任务配置 处,查看您的资源配置是否过低。