
Введение | Установка | Начните | Документация | ? Проблемы отчетности
Английский | 简体中文











V0.10.5 был выпущен в 2024-9-11.
Основные моменты:
artifact_location в mlflowvisbackend #1505exclude_frozen_parameters для DeepSpeedEngine._zero3_consolidated_16bit_state_dict #1517Читайте ChangeLog для более подробной информации.
Mmengine - это основополагающая библиотека для обучения моделей глубокого обучения на основе Pytorch. Он служит учебным двигателем всех кодовых баз OpenMMLAB, которые поддерживают сотни алгоритмов в различных областях исследований. Кроме того, Mmengine также является общим для применения к проектам, не являющимся openmmlab. Его основные моменты следующие:
Интегрировать основные крупномасштабные учебные рамки модели
Поддерживает различные стратегии обучения
Предоставляет удобную систему конфигурации
Охватывает основные платформы мониторинга обучения
| Мменгин | Пирог | Питон |
|---|---|---|
| основной | > = 1,6 <= 2,1 | > = 3,8, <= 3.11 |
| > = 0,9,0, <= 0,10,4 | > = 1,6 <= 2,1 | > = 3,8, <= 3.11 |
Перед установкой Mmengine, пожалуйста, убедитесь, что Pytorch был успешно установлен после официального руководства.
Установите Mmengine
pip install -U openmim
mim install mmengineПроверьте установку
python -c ' from mmengine.utils.dl_utils import collect_env;print(collect_env()) ' Принимая обучение модели RESNET-50 в наборе данных CIFAR-10 в качестве примера, мы будем использовать MMENGINE для создания полного, настраиваемого процесса обучения и проверки менее чем в 80 строках кода.
Во -первых, нам необходимо определить модель , которая 1) наследует от BaseModel и 2) принимает дополнительный mode аргумента в методе forward , в дополнение к этим аргументам, связанным с набором данных.
mode - «потеря», а forward метод должен вернуть dict , содержащий ключ «потеря».mode «прогнозируется», а прямой метод должен возвращать результаты, содержащие как прогнозы, так и метки. 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Затем нам нужно создать наборы данных и DataLoader S для обучения и проверки. В этом случае мы просто используем встроенные наборы данных, поддерживаемые в 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 )
]))) Чтобы проверить и проверить модель, нам необходимо определить метрику , называемую точностью, чтобы оценить модель. Этот показатель должен наследовать от BaseMetric и реализовать методы process и compute_metrics .
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 ) Наконец, мы можем построить бегун с ранее определенной Model , DataLoader и Metrics , с некоторыми другими конфигурациями, как показано ниже.
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 ()Мы ценим все вклад в улучшение MMENGINE. Пожалуйста, обратитесь к Anforming.md для руководства.
Если вы найдете этот проект полезным в своем исследовании, пожалуйста, рассмотрите цит: 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}
}
Этот проект выпущен по лицензии Apache 2.0.