使用MMClassification训练花卉图片分类模型 | 摘要

318 阅读2分钟

使用MMClassification训练花卉图片分类模型 | 摘要

创建环境

  • 根据 mmclassification 的环境要求,需要⽤ anaconda、cuda、gcc 等基础环境模块
    • 加载 anaconda ,创建⼀个 python 3.8 的环境
    • 安装 torch
      • 注意在 RTX3090 的GPU上,cuda 版本需要 ≥ 11.1
      • 使⽤ pip 安装的torch 不包括 cuda,所以需要使⽤ module 加载 cuda/11.1 模块
    • 安装 mmcv-full 模块
      • mmcv-full 模块安装时候需要注意 torch 和 cuda 版本
    • 安装 openmmlab/mmclassification 模块
      • 建议通过下载编译的⽅式进⾏安装
        • 安装该模块需要 gcc ≥ 5, 使⽤ module 加载⼀个 gcc
    • 总结环境信息
    • . 准备 shell 脚本,将环境信息预先保存在脚本中

准备 shell 脚本,将环境信息预先保存在脚本中

  • 划分数据集
    • 将数据集按照 8:2 的⽐例划分成训练和验证⼦数据集,并将数据集整理成 ImageNet的格式
    • 将训练⼦集和验证⼦集放到 train 和 val ⽂件夹下
  • 创建并编辑标注⽂件将所有类别的名称写到 classes.txt 中,每⾏代表⼀个类别
  • ⽣成训练(可选)和验证⼦集标注列表 train.txt 和 val.txt ,每⾏应包含⼀个⽂件名和其对应的标签
  • 数据集划分代码 split_data.py
    • 执行python split_data.py [源数据集路径] [⽬标数据集路径]

MMCls 配置⽂件

  1. 模型配置⽂件
  2. 数据配置
  3. 学习率
  4. 加载预训练模型
  5. 微调
  6. 完整示例

提交计算

  1. 单卡计算
    1. 新建⼀个作业脚本 run.sh
      1. 脚本的解释器可以是 /bin/sh、/bin/bash、/bin/csh
    2. 使⽤ sbatch 命令提交作业脚本
    3. 使⽤ squeue 或 parajobs 查看提交的作业
    4. 查看作业输出⽇志
  2. 单节点多卡计算
    1. mmclassification ⽀持多节点、多卡训练
    2. 多节点多卡训练借助 torch.distributed.launch 实现
  3. 多节点计算
    • 如何获取每个节点的 host/IP ?
      • 在提交的作业脚本中可以通过执⾏ scontrol show hostnames 命令来获取申请到的节点主机名
      • 同时通过 for 循环的⽅式将每个节点的主机名保存到 host 变量中
    • 多节点计算上需要考虑节点之间的通信,如何启⽤ InfiniBand ⾼速通信⽹络 ?
      • 在 MMClassification 中提供的 nccl 的通信模式
    • 提交计算
      • 提交多节点作业需要⽤的⼏个作业参数
        • -N
        • --gres
        • --qos
    • 取消计算
    • 正常情况下作业计算完成 或者出现异常报错,会⾃动退出
    • 如果需要⼿动取消作业,可以执⾏ scancel [作业ID]
    • 查看 GPU 利⽤率

学习链接:

www.bilibili.com/video/BV1MA…