MMPretrain项目中的模型命名与配置规范解析
前言
在深度学习项目中,统一的命名规范对于项目维护和团队协作至关重要。MMPretrain作为计算机视觉领域的深度学习框架,建立了一套完善的模型命名与配置规范体系。本文将深入解析这套规范的设计理念和具体规则,帮助开发者更好地理解和使用MMPretrain框架。
模型命名规范详解
MMPretrain采用五段式命名结构,各部分间用下划线'_'
连接,同一部分内的单词用连字符'-'
连接:
{算法信息}_{模块信息}_{预训练信息}_{训练信息}_{数据信息}
1. 算法信息(可选)
这部分标识模型使用的主要训练算法,常见于自监督学习或特定训练方法的模型:
- 监督学习模型可省略此部分
- 自监督学习示例:
simclr
、mocov2
- 特定训练风格:
eva-mae-style
2. 模块信息(必需)
描述模型的核心架构,必须包含主干网络(backbone)信息:
- 经典CNN:
resnet50
、vgg16
- Transformer架构:
vit-base-p16
(base规模,patch大小16) - 混合架构:
swin-base
、convnext-tiny
3. 预训练信息(可选)
记录预训练模型的关键信息,以-pre
结尾:
- 来源:
fb
(Facebook)、openai
- 方法:
clip
、mae
、distill
(蒸馏) - 数据集:
in21k
(ImageNet-21k)、laion2b
- 训练时长:
300e
(300个epoch)
示例组合:clip-openai-pre
、mae-in21k-pre
4. 训练信息(必需)
详细记录训练配置,格式为{硬件配置}-{训练技巧}-{调度策略}-{训练时长}
:
- 硬件配置:
8xb32
(8卡,每卡batch=32) - 训练类型:
ft
(微调)、pt
(预训练) - 数据增强:
autoaug
、mixup
- 损失函数:
lbs
(label smoothing) - 学习率调度:
coslr
(cosine衰减) - 训练时长:
50e
(50个epoch)
完整示例:8xb256-amp-coslr-300e
5. 数据信息(必需)
描述训练数据集和输入尺寸:
- 标准数据集:
in1k
(ImageNet-1k)、cifar100
- 特殊尺寸:
in1k-384px
(输入384x384) - 大数据集:
in21k
(ImageNet-21k)
实际案例解析
案例1:第三方转换模型
vit-base-p32_clip-openai-pre_3rdparty_in1k
- vit-base-p32:基于ViT架构,base规模,patch大小32
- clip-openai-pre:使用CLIP方法预训练,来源OpenAI
- 3rdparty:从第三方仓库转换
- in1k:在ImageNet-1k上微调
案例2:完整训练模型
beit_beit-base-p16_8xb256-amp-coslr-300e_in1k
- beit:使用BEiT算法
- beit-base-p16:BEiT改进的ViT架构,base规模
- 8xb256-amp-coslr-300e:8卡训练,每卡256样本,混合精度,cosine学习率,训练300epoch
- in1k:基于ImageNet-1k数据集
配置文件命名规范
配置文件命名与模型命名基本一致,但有两点区别:
- 必须包含完整的训练信息,不能使用
3rdparty
- 仅包含主干网络的配置文件添加
_headless
后缀,如:resnet50_headless.py
vit-base-p16_headless.py
权重文件命名规范
权重文件命名包含模型名、日期和哈希值:
{模型名称}_{日期}-{哈希值}.pth
示例:resnet50_20230215-abcd1234.pth
最佳实践建议
- 一致性原则:团队协作时应严格遵守命名规范
- 信息完整:确保关键训练信息不遗漏
- 适度简洁:在不引起歧义的情况下简化命名
- 版本控制:权重文件的哈希值有助于追踪模型版本
通过这套规范体系,MMPretrain实现了模型管理的标准化,大大提高了项目的可维护性和协作效率。理解并正确应用这些规范,将帮助开发者更好地参与项目开发和模型共享。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考