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