Project Icon

mim

OpenMMLab项目的统一管理和运行工具

MIM为OpenMMLab项目提供统一的管理接口,简化了包的安装卸载和模型库管理。它通过统一入口点简化了训练、测试和推理过程,并支持自定义项目构建和网格搜索,提高了开发效率和实验灵活性。

MIM: MIM安装OpenMMLab软件包

MIM提供了一个统一的接口,用于启动和安装OpenMMLab项目及其扩展,并管理OpenMMLab模型库。

主要特性

  • 软件包管理

    您可以使用MIM方便地管理OpenMMLab代码库,安装或卸载它们。

  • 模型管理

    您可以使用MIM管理OpenMMLab模型库,例如通过名称下载检查点,搜索满足特定条件的检查点。

  • 统一的脚本入口

    您可以使用统一的命令执行所有OpenMMLab代码库提供的任何脚本。训练、测试和推理变得前所未有的简单。此外,您可以使用gridsearch命令进行简单的超参数搜索。

许可证

本项目采用Apache 2.0许可证发布。

更新日志

v0.1.1于2021年6月13日发布。

自定义

您可以使用.mimrc进行自定义。目前我们支持自定义每个子命令的默认值。详情请参阅customization.md

使用MIM构建自定义项目

我们在MIM-Example中提供了一些如何基于OpenMMLAB代码库和MIM构建自定义项目的示例。用户无需担心从现有代码库复制代码和脚本,可以专注于开发新组件,而MIM则帮助集成和运行新项目。

安装

请参阅installation.md进行安装。

命令

1. 安装
  • 命令

    # 安装最新版本的mmcv-full
    > mim install mmcv-full  # 轮子
    # 安装1.5.0版本
    > mim install mmcv-full==1.5.0
    
    # 安装最新版本的mmcls
    > mim install mmcls
    # 安装主分支
    > mim install git+https://github.com/open-mmlab/mmclassification.git
    # 安装本地仓库
    > git clone https://github.com/open-mmlab/mmclassification.git
    > cd mmclassification
    > mim install .
    
    # 安装基于OpenMMLab的扩展
    mim install git+https://github.com/xxx/mmcls-project.git
    
  • API

    from mim import install
    
    # 安装mmcv
    install('mmcv-full')
    
    # 安装mmcls,如果未安装mmcv,将自动安装
    install('mmcls')
    
    # 安装基于OpenMMLab的扩展
    install('git+https://github.com/xxx/mmcls-project.git')
    
2. 卸载
  • 命令

    # 卸载mmcv
    > mim uninstall mmcv-full
    
    # 卸载mmcls
    > mim uninstall mmcls
    
  • API

    from mim import uninstall
    
    # 卸载mmcv
    uninstall('mmcv-full')
    
    # 卸载mmcls
    uninstall('mmcls')
    
3. 列表
  • 命令

    > mim list
    > mim list --all
    
  • API

    from mim import list_package
    
    list_package()
    list_package(True)
    
4. 搜索
  • 命令

    > mim search mmcls
    > mim search mmcls==0.23.0 --remote
    > mim search mmcls --config resnet18_8xb16_cifar10
    > mim search mmcls --model resnet
    > mim search mmcls --dataset cifar-10
    > mim search mmcls --valid-field
    > mim search mmcls --condition 'batch_size>45,epochs>100'
    > mim search mmcls --condition 'batch_size>45 epochs>100'
    > mim search mmcls --condition '128<batch_size<=256'
    > mim search mmcls --sort batch_size epochs
    > mim search mmcls --field epochs batch_size weight
    > mim search mmcls --exclude-field weight paper
    
  • API

    from mim import get_model_info
    
    get_model_info('mmcls')
    get_model_info('mmcls==0.23.0', local=False)
    get_model_info('mmcls', models=['resnet'])
    get_model_info('mmcls', training_datasets=['cifar-10'])
    get_model_info('mmcls', filter_conditions='batch_size>45,epochs>100')
    get_model_info('mmcls', filter_conditions='batch_size>45 epochs>100')
    get_model_info('mmcls', filter_conditions='128<batch_size<=256')
    get_model_info('mmcls', sorted_fields=['batch_size', 'epochs'])
    get_model_info('mmcls', shown_fields=['epochs', 'batch_size', 'weight'])
    
5. 下载
  • 命令

    > mim download mmcls --config resnet18_8xb16_cifar10
    > mim download mmcls --config resnet18_8xb16_cifar10 --dest .
    
  • API

    from mim import download
    
    download('mmcls', ['resnet18_8xb16_cifar10'])
    download('mmcls', ['resnet18_8xb16_cifar10'], dest_root='.')
    
6. 训练
  • 命令

    # 通过将'gpus'设置为0和'launcher'设置为'none'(如果适用)在单个服务器上使用CPU训练模型。
    # 如果相应的代码库不支持CPU训练,训练脚本将失败。
    > mim train mmcls resnet101_b16x8_cifar10.py --work-dir tmp --gpus 0
    # 在单个服务器上使用一个GPU训练模型
    > mim train mmcls resnet101_b16x8_cifar10.py --work-dir tmp --gpus 1
    # 在单个服务器上使用4个GPU和pytorch分布式训练模型
    > mim train mmcls resnet101_b16x8_cifar10.py --work-dir tmp --gpus 4 \
        --launcher pytorch
    # 在具有一个8-GPU节点的slurm HPC上训练模型
    > mim train mmcls resnet101_b16x8_cifar10.py --launcher slurm --gpus 8 \
        --gpus-per-node 8 --partition partition_name --work-dir tmp
    # 打印子命令train的帮助信息
    > mim train -h
    # 打印子命令train和mmcls训练脚本的帮助信息
    > mim train mmcls -h
    
  • API

    from mim import train
    

train(repo='mmcls', config='resnet18_8xb16_cifar10.py', gpus=0, other_args=('--work-dir', 'tmp')) train(repo='mmcls', config='resnet18_8xb16_cifar10.py', gpus=1, other_args=('--work-dir', 'tmp')) train(repo='mmcls', config='resnet18_8xb16_cifar10.py', gpus=4, launcher='pytorch', other_args=('--work-dir', 'tmp')) train(repo='mmcls', config='resnet18_8xb16_cifar10.py', gpus=8, launcher='slurm', gpus_per_node=8, partition='partition_name', other_args=('--work-dir', 'tmp'))


</details>

<details>
<summary>7. test</summary>

- 命令

```bash
# 在单台服务器上使用1个GPU测试模型,报告准确率
> mim test mmcls resnet101_b16x8_cifar10.py --checkpoint \
    tmp/epoch_3.pth --gpus 1 --metrics accuracy
# 在单台服务器上使用1个GPU测试模型,保存预测结果
> mim test mmcls resnet101_b16x8_cifar10.py --checkpoint \
    tmp/epoch_3.pth --gpus 1 --out tmp.pkl
# 在单台服务器上使用4个GPU测试模型,使用pytorch分布式,报告准确率
> mim test mmcls resnet101_b16x8_cifar10.py --checkpoint \
    tmp/epoch_3.pth --gpus 4 --launcher pytorch --metrics accuracy
# 在slurm高性能计算集群上使用一个8-GPU节点测试模型,报告准确率
> mim test mmcls resnet101_b16x8_cifar10.py --checkpoint \
    tmp/epoch_3.pth --gpus 8 --metrics accuracy --partition \
    partition_name --gpus-per-node 8 --launcher slurm
# 打印test子命令的帮助信息
> mim test -h
# 打印test子命令和mmcls测试脚本的帮助信息
> mim test mmcls -h
  • API

    from mim import test
    test(repo='mmcls', config='resnet101_b16x8_cifar10.py',
         checkpoint='tmp/epoch_3.pth', gpus=1, other_args=('--metrics', 'accuracy'))
    test(repo='mmcls', config='resnet101_b16x8_cifar10.py',
         checkpoint='tmp/epoch_3.pth', gpus=1, other_args=('--out', 'tmp.pkl'))
    test(repo='mmcls', config='resnet101_b16x8_cifar10.py',
         checkpoint='tmp/epoch_3.pth', gpus=4, launcher='pytorch',
         other_args=('--metrics', 'accuracy'))
    test(repo='mmcls', config='resnet101_b16x8_cifar10.py',
         checkpoint='tmp/epoch_3.pth', gpus=8, partition='partition_name',
         launcher='slurm', gpus_per_node=8, other_args=('--metrics', 'accuracy'))
    
8. run
  • 命令

    # 获取模型的Flops
    > mim run mmcls get_flops resnet101_b16x8_cifar10.py
    # 发布模型
    > mim run mmcls publish_model input.pth output.pth
    # 在slurm高性能计算集群上使用一个GPU训练模型
    > srun -p partition --gres=gpu:1 mim run mmcls train \
        resnet101_b16x8_cifar10.py --work-dir tmp
    # 在slurm高性能计算集群上使用一个GPU测试模型,报告准确率
    > srun -p partition --gres=gpu:1 mim run mmcls test \
        resnet101_b16x8_cifar10.py tmp/epoch_3.pth --metrics accuracy
    # 打印run子命令的帮助信息
    > mim run -h
    # 打印run子命令的帮助信息,列出mmcls代码库中所有可用的脚本
    > mim run mmcls -h
    # 打印run子命令的帮助信息,打印mmcls训练脚本的帮助信息
    > mim run mmcls train -h
    
  • API

    from mim import run
    
    run(repo='mmcls', command='get_flops',
        other_args=('resnet101_b16x8_cifar10.py',))
    run(repo='mmcls', command='publish_model',
        other_args=('input.pth', 'output.pth'))
    run(repo='mmcls', command='train',
        other_args=('resnet101_b16x8_cifar10.py', '--work-dir', 'tmp'))
    run(repo='mmcls', command='test',
        other_args=('resnet101_b16x8_cifar10.py', 'tmp/epoch_3.pth', '--metrics accuracy'))
    
9. gridsearch
  • 命令
# 通过将 `gpus` 设置为 0 并将 'launcher' 设置为 'none'(如适用),在单台服务器上使用 CPU 进行参数搜索。
# 如果相应代码库不支持 CPU 训练,其训练脚本将会失败。
> mim gridsearch mmcls resnet101_b16x8_cifar10.py --work-dir tmp --gpus 0 \
    --search-args '--optimizer.lr 1e-2 1e-3'
# 在单台服务器上使用一个 GPU 进行参数搜索,搜索学习率
> mim gridsearch mmcls resnet101_b16x8_cifar10.py --work-dir tmp --gpus 1 \
    --search-args '--optimizer.lr 1e-2 1e-3'
# 在单台服务器上使用一个 GPU 进行参数搜索,搜索权重衰减
> mim gridsearch mmcls resnet101_b16x8_cifar10.py --work-dir tmp --gpus 1 \
    --search-args '--optimizer.weight_decay 1e-3 1e-4'
# 在单台服务器上使用一个 GPU 进行参数搜索,搜索学习率和权重衰减
> mim gridsearch mmcls resnet101_b16x8_cifar10.py --work-dir tmp --gpus 1 \
    --search-args '--optimizer.lr 1e-2 1e-3 --optimizer.weight_decay 1e-3 \
    1e-4'
# 在 slurm HPC 上使用一个 8-GPU 节点进行参数搜索,搜索学习率和权重衰减
> mim gridsearch mmcls resnet101_b16x8_cifar10.py --work-dir tmp --gpus 8 \
    --partition partition_name --gpus-per-node 8 --launcher slurm \
    --search-args '--optimizer.lr 1e-2 1e-3 --optimizer.weight_decay 1e-3 \
    1e-4'
# 在 slurm HPC 上使用一个 8-GPU 节点进行参数搜索,搜索学习率和权重衰减,最大并行作业数为 2
> mim gridsearch mmcls resnet101_b16x8_cifar10.py --work-dir tmp --gpus 8 \
    --partition partition_name --gpus-per-node 8 --launcher slurm \
    --max-jobs 2 --search-args '--optimizer.lr 1e-2 1e-3 \
    --optimizer.weight_decay 1e-3 1e-4'
# 打印子命令 search 的帮助信息
> mim gridsearch -h
# 打印子命令 search 的帮助信息以及代码库 mmcls 训练脚本的帮助信息
> mim gridsearch mmcls -h
  • API
from mim import gridsearch

gridsearch(repo='mmcls', config='resnet101_b16x8_cifar10.py', gpus=0,
           search_args='--optimizer.lr 1e-2 1e-3',
           other_args=('--work-dir', 'tmp'))
gridsearch(repo='mmcls', config='resnet101_b16x8_cifar10.py', gpus=1,
           search_args='--optimizer.lr 1e-2 1e-3',
           other_args=('--work-dir', 'tmp'))
gridsearch(repo='mmcls', config='resnet101_b16x8_cifar10.py', gpus=1,
           search_args='--optimizer.weight_decay 1e-3 1e-4',
           other_args=('--work-dir', 'tmp'))
gridsearch(repo='mmcls', config='resnet101_b16x8_cifar10.py', gpus=1,
           search_args='--optimizer.lr 1e-2 1e-3 --optimizer.weight_decay'
                       '1e-3 1e-4',
           other_args=('--work-dir', 'tmp'))
gridsearch(repo='mmcls', config='resnet101_b16x8_cifar10.py', gpus=8,
           partition='partition_name', gpus_per_node=8, launcher='slurm',
           search_args='--optimizer.lr 1e-2 1e-3 --optimizer.weight_decay'
                       ' 1e-3 1e-4',
           other_args=('--work-dir', 'tmp'))
gridsearch(repo='mmcls', config='resnet101_b16x8_cifar10.py', gpus=8,
           partition='partition_name', gpus_per_node=8, launcher='slurm',
           max_workers=2,
           search_args='--optimizer.lr 1e-2 1e-3 --optimizer.weight_decay'
                       ' 1e-3 1e-4',
           other_args=('--work-dir', 'tmp'))

贡献

我们感谢所有为改进 mim 做出的贡献。请参阅 CONTRIBUTING.md 以了解贡献指南。

许可证

该项目基于 Apache 2.0 许可证 发布。

OpenMMLab 中的项目

  • MMEngine:OpenMMLab用于训练深度学习模型的基础库。
  • MMCV:OpenMMLab计算机视觉基础库。
  • MMEval:适用于多个机器学习库的统一评估库。
  • MMPreTrain:OpenMMLab预训练工具箱和基准测试。
  • MMagic:OpenMMLab先进、生成式和智能创作工具箱。
  • MMDetection:OpenMMLab检测工具箱和基准测试。
  • MMYOLO:OpenMMLab YOLO系列工具箱和基准测试。
  • MMDetection3D:OpenMMLab新一代通用3D目标检测平台。
  • MMRotate:OpenMMLab旋转目标检测工具箱和基准测试。
  • MMTracking:OpenMMLab视频感知工具箱和基准测试。
  • MMPose:OpenMMLab姿态估计工具箱和基准测试。
  • MMSegmentation:OpenMMLab语义分割工具箱和基准测试。
  • MMOCR:OpenMMLab文本检测、识别和理解工具箱。
  • MMHuman3D:OpenMMLab 3D人体参数化模型工具箱和基准测试。
  • MMSelfSup:OpenMMLab自监督学习工具箱和基准测试。
  • MMFewShot:OpenMMLab小样本学习工具箱和基准测试。
  • MMAction2:OpenMMLab新一代动作理解工具箱和基准测试。
  • MMFlow:OpenMMLab光流工具箱和基准测试。
  • MMDeploy:OpenMMLab模型部署框架。
  • MMRazor:OpenMMLab模型压缩工具箱和基准测试。
  • Playground:汇集和展示基于OpenMMLab构建的精彩项目的中心平台。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号