需先自行安装 PyTorch,MMEngine 不代为安装;Python 需在 3.8~3.11 之间,PyTorch 上限为 2.1;大模型训练需额外装 DeepSpeed/ColossalAI 等后端。
mmengine
open-mmlabApache-2.0更新放缓OpenMMLab 生态的深度学习训练基础库,统一封装训练循环、配置系统和分布式训练等底层能力,让算法开发者专注模型本身而不用重复搭建训练脚手架。
OpenMMLab Foundational Library for Training Deep Learning Models
pip install -U openmim
mim install mmengineREADME 未说明具体显存或 GPU 型号要求,仅要求先按官方指南装好 PyTorch(1.6~2.1)。
OpenMMLab 各代码库共用的 PyTorch 训练引擎,也能直接用于你自己的项目
OpenMMLab 生态的深度学习训练基础库,统一封装训练循环、配置系统和分布式训练等底层能力,让算法开发者专注模型本身而不用重复搭建训练脚手架。
核心能力
- 用 Runner 统一组织模型、数据、优化与验证流程
- 集成 ColossalAI、DeepSpeed、FSDP 大模型训练框架
- 支持混合精度、梯度累积与梯度检查点节省显存
- 提供纯 Python 与 JSON/YAML 两种配置写法
- 内置 TensorBoard、WandB、MLflow 等日志后端
容易踩的坑
- v0.11.0rc3pre-release2026-07-13 · 2026-07-13 07:30 UTC
查看更新说明
What's Changed
- Fix get installed path by @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1689
Full Changelog: https://github.com/open-mmlab/mmengine/compare/v0.11.0rc2...v0.11.0rc3
- v0.11.0rc2pre-release2025-12-23 · 2025-12-23 04:41 UTC
这个版本没有写更新说明。
- v0.11.0rc1pre-release2025-12-11 · 2025-12-11 08:18 UTC
查看更新说明
Just update the index in PyPI, the deploy of v0.11.0rc0 failed...
- v0.11.0rc0pre-release2025-11-25 · 2025-11-25 09:33 UTC
查看更新说明
What's Changed
- [Enhance] Move
import yapfto function by @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1652 - [Enhance] Suppress import errors for optional optimizers by @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1660
- [Enhance] Use opencv-python-headless by default by @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1663
- [Fix] Fix config bug in python 3.12 by @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1669
- [Fix] Load checkpoint with
weights_only=Flaseby @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1670 - [Test] Fix unittest by @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1671
- [Test] Removed
numpy.compactinnumpy>=2.0.0by @MGAMZ in https://github.com/open-mmlab/mmengine/pull/1672 - [Fix] Correctly process
compile.disablein config by @MGAMZ in https://github.com/open-mmlab/mmengine/pull/1674 - [Fix] Replace deprecated
pkg_resourceswithimportlibby @MGAMZ in https://github.com/open-mmlab/mmengine/pull/1676
New Contributors
- @MGAMZ made their first contribution in https://github.com/open-mmlab/mmengine/pull/1672
Full Changelog: https://github.com/open-mmlab/mmengine/compare/v0.10.7...v0.11.0rc0
- [Enhance] Move
- v0.10.7MMEngine Release V0.10.7最新正式版2025-03-04 · 2025-03-04 12:22 UTC
What's Changed
- Update deploy.yml by @C1rN09 in https://github.com/open-mmlab/mmengine/pull/1625
- [Enhance] Support trigger ci manually by @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1626
- [Enhance] Support trigger deploy CI manually by @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1627
- [Fix] Fix deploy ci by @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1628
- [Fix] remove torch dependencies in
build_function.pyby @HAOCHENYE in https://github.com/open-mmlab/mmengine/pull/1632 - fix ci by @tenacioustommy in https://github.com/open-mmlab/mmengine/pull/1636
Full Changelog: https://github.com/open-mmlab/mmengine/compare/v0.10.6...v0.10.7
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Introduction | Installation | Get Started | 📘Documentation | 🤔Reporting Issues
English | 简体中文
What's New
v0.10.6 was released on 2025-01-13.
Highlights:
- Support custom
artifact_locationin MLflowVisBackend #1505 - Enable
exclude_frozen_parametersforDeepSpeedEngine._zero3_consolidated_16bit_state_dict#1517
Read Changelog for more details.
Introduction
MMEngine is a foundational library for training deep learning models based on PyTorch. It serves as the training engine of all OpenMMLab codebases, which support hundreds of algorithms in various research areas. Moreover, MMEngine is also generic to be applied to non-OpenMMLab projects. Its highlights are as follows:
Integrate mainstream large-scale model training frameworks
Supports a variety of training strategies
Provides a user-friendly configuration system
- Pure Python-style configuration files, easy to navigate
- Plain-text-style configuration files, supporting JSON and YAML
Covers mainstream training monitoring platforms
Installation
| MMEngine | PyTorch | Python |
|---|---|---|
| main | >=1.6 <=2.1 | >=3.8, <=3.11 |
| >=0.9.0, <=0.10.4 | >=1.6 <=2.1 | >=3.8, <=3.11 |
Before installing MMEngine, please ensure that PyTorch has been successfully installed following the official guide.
Install MMEngine
pip install -U openmim
mim install mmengine
Verify the installation
python -c 'from mmengine.utils.dl_utils import collect_env;print(collect_env())'
Get Started
Taking the training of a ResNet-50 model on the CIFAR-10 dataset as an example, we will use MMEngine to build a complete, configurable training and validation process in less than 80 lines of code.
First, we need to define a model which 1) inherits from BaseModel and 2) accepts an additional argument mode in the forward method, in addition to those arguments related to the dataset.
- During training, the value of
modeis "loss", and theforwardmethod should return adictcontaining the key "loss". - During validation, the value of
modeis "predict", and the forward method should return results containing both predictions and labels.
import torch.nn.functional as F
import torchvision
from mmengine.model import BaseModel
class MMResNet50(BaseModel):
def __init__(self):
super().__init__()
self.resnet = torchvision.models.resnet50()
def forward(self, imgs, labels, mode):
x = self.resnet(imgs)
if mode == 'loss':
return {'loss': F.cross_entropy(x, labels)}
elif mode == 'predict':
return x, labels
Next, we need to create Datasets and DataLoaders for training and validation. In this case, we simply use built-in datasets supported in TorchVision.
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
norm_cfg = dict(mean=[0.491, 0.482, 0.447], std=[0.202, 0.199, 0.201])
train_dataloader = DataLoader(batch_size=32,
shuffle=True,
dataset=torchvision.datasets.CIFAR10(
'data/cifar10',
train=True,
download=True,
transform=transforms.Compose([
transforms.RandomCrop(32, padding=4),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(**norm_cfg)
])))
val_dataloader = DataLoader(batch_size=32,
shuffle=False,
dataset=torchvision.datasets.CIFAR10(
'data/cifar10',
train=False,
download=True,
transform=transforms.Compose([
transforms.ToTensor(),
transforms.Normalize(**norm_cfg)
])))
To validate and test the model, we need to define a Metric called accuracy to evaluate the model. This metric needs to inherit from BaseMetric and implements the process and compute_metrics methods.
from mmengine.evaluator import BaseMetric
class Accuracy(BaseMetric):
def process(self, data_batch, data_samples):
score, gt = data_samples
# Save the results of a batch to `self.results`
self.results.append({
'batch_size': len(gt),
'correct': (score.argmax(dim=1) == gt).sum().cpu(),
})
def compute_metrics(self, results):
total_correct = sum(item['correct'] for item in results)
total_size = sum(item['batch_size'] for item in results)
# Returns a dictionary with the results of the evaluated metrics,
# where the key is the name of the metric
return dict(accuracy=100 * total_correct / total_size)
Finally, we can construct a Runner with previously defined Model, DataLoader, and Metrics, with some other configs, as shown below.
from torch.optim import SGD
from mmengine.runner import Runner
runner = Runner(
model=MMResNet50(),
work_dir='./work_dir',
train_dataloader=train_dataloader,
# a wrapper to execute back propagation and gradient update, etc.
optim_wrapper=dict(optimizer=dict(type=SGD, lr=0.001, momentum=0.9)),
# set some training configs like epochs
train_cfg=dict(by_epoch=True, max_epochs=5, val_interval=1),
val_dataloader=val_dataloader,
val_cfg=dict(),
val_evaluator=dict(type=Accuracy),
)
runner.train()
Learn More
- Registry
- Config
- BaseDataset
- Data Transform
- Weight Initialization
- Visualization
- Abstract Data Element
- Distribution Communication
- Logging
- File IO
- Global manager (ManagerMixin)
- Use modules from other libraries
- Test Time Agumentation
- Migrate Runner from MMCV to MMEngine
- Migrate Hook from MMCV to MMEngine
- Migrate Model from MMCV to MMEngine
- Migrate Parameter Scheduler from MMCV to MMEngine
- Migrate Data Transform to OpenMMLab 2.0
Contributing
We appreciate all contributions to improve MMEngine. Please refer to CONTRIBUTING.md for the contributing guideline.
Citation
If you find this project useful in your research, please consider cite:
@article{mmengine2022,
title = {{MMEngine}: OpenMMLab Foundational Library for Training Deep Learning Models},
author = {MMEngine Contributors},
howpublished = {\url{https://github.com/open-mmlab/mmengine}},
year={2022}
}
License
This project is released under the Apache 2.0 license.
Ecosystem
- APES: Attention-based Point Cloud Edge Sampling
- DiffEngine: diffusers training toolbox with mmengine
Projects in OpenMMLab
- MIM: MIM installs OpenMMLab packages.
- MMCV: OpenMMLab foundational library for computer vision.
- MMEval: A unified evaluation library for multiple machine learning libraries.
- MMPreTrain: OpenMMLab pre-training toolbox and benchmark.
- MMagic: OpenMMLab Advanced, Generative and Intelligent Creation toolbox.
- MMDetection: OpenMMLab detection toolbox and benchmark.
- MMYOLO: OpenMMLab YOLO series toolbox and benchmark.
- MMDetection3D: OpenMMLab's next-generation platform for general 3D object detection.
- MMRotate: OpenMMLab rotated object detection toolbox and benchmark.
- MMTracking: OpenMMLab video perception toolbox and benchmark.
- MMPose: OpenMMLab pose estimation toolbox and benchmark.
- MMSegmentation: OpenMMLab semantic segmentation toolbox and benchmark.
- MMOCR: OpenMMLab text detection, recognition, and understanding toolbox.
- MMHuman3D: OpenMMLab 3D human parametric model toolbox and benchmark.
- MMSelfSup: OpenMMLab self-supervised learning toolbox and benchmark.
- MMFewShot: OpenMMLab fewshot learning toolbox and benchmark.
- MMAction2: OpenMMLab's next-generation action understanding toolbox and benchmark.
- MMFlow: OpenMMLab optical flow toolbox and benchmark.
- MMDeploy: OpenMMLab model deployment framework.
- MMRazor: OpenMMLab model compression toolbox and benchmark.
- Playground: A central hub for gathering and showcasing amazing projects built upon OpenMMLab.