体验调优猫狗识别模型

更新时间:

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

# 前提条件

已获取 压缩包 (opens new window) 中的 DogsVsCats.py 代码文件。

# 创建项目

  1. 左侧导航栏界面选择 项目
  2. 单击右上角的 创建项目 按钮。
  3. 配置项目的基本信息。
    • 项目名称:DogsVsCats
    • 项目描述:猫狗识别模型调试与训练
    • 代码:本地代码
    • 镜像:选择含 TensorFlow-2.x 框架的镜像,也就是要选择内置了 TensorFlow 二点几版本的镜像。
    • 数据:选择 公开 下的 DogsVsCats。
    • 模型:保持默认
    • 标签:选择 计算机视觉TensorFlow-2.x
    • 公开性:私有
  4. 单击 创建,系统弹出 上传代码 框。
  5. 上传代码 框中选择 DogsVsCats.py,随后单击 确定,代码包上传成功并返回 代码预览 页。

# 初始化开发环境

  1. 单击 代码预览 页右上角的 运行代码,进入 初始化开发环境 页。

  2. 参考如下说明,填写开发环境的初始化配置。

    参数 说明
    资源配置 算力类型选择 GPU (虚拟卡) ,资源建议配置为:
    • 型号:自选
    • 数量:1
    • 单 GPU 算力:100%
    • 单 GPU 显存:7 GB
    • 配比:自定义
    • CPU:3
    • 内存:10GB
    • 临时存储:10GB
    填写完成后可单击 系统资源检测,检测资源配置是否超出限制。
    镜像 保持默认
    SSH 设置 保持默认。
    开发者工具 必填,选择您优化模型时需使用的开发工具,可多选,建议选择 JupyterLab
    开放端口 保持默认。
    最长运行时间 2h
  3. 单击 确定,则开发环境已初始化。

    等待约 1-2 分钟,当右侧的 网页终端JupyterLab 不再是灰色时,表明工具注入成功,此时您便可在此开发环境上通过工具进行模型调优,详情可参见下一步。

# 调试代码

开发环境创建好后,您可在开发环境中调试代码。

  1. 单击 开发环境实例 页右侧的 JupyterLab 工具。
    默认进入到 /gemini/code/ 目录下。

    注意:
    您只能在/gemini/code/ 目录下编辑和新增代码,其他文件夹均属于临时存储,开发环境重启会清空 临时存储 中的内容。

    tuning_jupterLab

  2. 单击顶部 网页终端 按钮,进入终端界面。

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

    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
    
  4. 单击顶部 JupyterLab,切换回 JupyterLab 页面,分析 /gemini/code/DogsVsCats.py
    经排查,发现代码中没有打乱数据集进行训练,导致模型没有训练成功。

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

    1. 双击 /gemini/code/ 路径下的 DogsVsCats.py ,开始编辑该文件。
    2. 删除该文件中第 44 行的注释符号 #
      tuning_codeModify
    3. 按 “Crtl + S” 键,保存该文件。
  6. 单击顶部 网页终端,进入终端界面再次执行上述 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
    

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

  7. 单击右上角 停止 按钮,停止开发环境。

# 提交离线训练

当您已经完成本次调优,可参考如下步骤保存代码并使用当前版本代码提交训练任务。

  1. 停止开发环境后,在项目的 代码预览 页新建 “001” 代码版本。
  2. 左侧导航栏选择 训练,随后单击右上角 提交任务 按钮。
  3. 参考如下说明配置任务基本信息。
    参数 说明
    任务名称 自定义,如:DogsVsCats001。
    任务模式 选择 单机任务
    资源配置 算力类型选择 GPU(物理卡) ,资源配置建议为:
    • 型号:可自选
    • 数量:1
    • 配比:自定义
    • CPU:3
    • 内存:10GB
    您也可根据界面提示配置更高算力资源。
    启动命令 填写如下启动命令,系统将在创建好训练环境后通过如下命令启动训练。
    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 目录下。
    挂载数据 保持默认。
    预训练模型 保持默认。
    代码版本 保持默认。
    工作镜像 保持默认。
    最长运行时间 选择 2h。
    任务备注 保持默认。
  4. 单击 确定
    返回 训练任务 页面,在训练任务列表中查看该任务的状态,该任务大约 5 分钟即可训练完成。
    • 任务状态显示为 成功 则表示训练任务成功结束。
    • 任务状态为 失败,可将鼠标悬置于 失败 字样上,查看失败原因,详情可参考 FAQ

# 后续操作

模型在经历了大规模数据的训练后,将具备相对精准的识别猫狗的能力,此时您可下载模型并将模型部署到应用中。
平台为您提供了结果集存储与下载的功能,您在代码中设置的输出,都将被存储在结果集中。
您可将结果集中的模型文件导出为模型。

  1. 在左侧导航栏中选择 结果,随后单击右上角的 导出 按钮。
    taskCommit_list

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

  3. 填写模型相关信息。
    taskCommit_result

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

# FAQ

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