본문 바로가기
OpenMMLab(미공개)/MMEngine

[MMEngine] 개요

by cogito21_python 2024. 1. 14.
반응형

MMEngine

- Pytorch를 기반으로 하는 deep learning models을 학습하기 위한 라이브러리

- Linux, Windows와 macOS를 지원함

 

MMEngine의 3가지 특징

1. 범용적이고 강력한 executor

  - 최소한의 코드로 복잡한 task 학습 가능

  - timm, torchvision, detectorn2와 호환 가능

2. 통합된 인터페이스의 공개된 구조

  - 통합된 API로 다른 작업에 적용 가능

  - 높은 레벨의 추상화를 통해 다양한 장비를 지원(Nvidia CUDA, Mac MPS, AMD, MLU)

3. 학습 과정 Custmize 가능

  - 레고 같이 모듈화된 training engine

  - 다양한 component 제공

  - 다양한 level의 API들로 학습 과정 제어

 

Architecture

 

Module 소개

- MMEngine은 학습과정과 그와 연관있는 것들을 포함한 구성요소들을 추상화함. 다른 알고리즘 라이브러리안의 같은 타입의 구성요소는 같은 interface 정의를 공유함.

 

Core Module과 관련된 Components

- Runner는 training engine의 핵심 모듈. 학습, 평가와 추론 작업을 책임지고 이 과정중 요구되는 다양한 component들을 관리함.

- Runner는 Hook설정을 통해 사용자가 지정 작업을 수행하도록 함.

  - Dataset: 모델에 제공할 데이터셋을 구성. 사용시 pytorch의 DataLoader에 의해 감싸짐.

  - Model: 학습하는 동안 데이터를 받아 loss를 계산함. 추론 및 평가시 데이터를 받아 예측함. 분산 환경에서 모델은 Model Wrapper에 의해 감싸짐.

  - Optimizer Wrapper: Optimizer Wrapper는 역전파를 수행. mixed-precision training과 gradient accumulation을 지원.

  - Parameter Scheduler: 학습하는 동안 learning rate와 momentum 같은 하이퍼파라미터를 동적으로 최적화에 적용

  - Metrics & Evaluator: 학습이나 평가하는 동안 모델의 성능을 평가

- Data Elements로 encapsulate해서 통합된 인터페이스 제공

- Loggin Modules(Logger, Visualizer)로 로그 기록을 남김(loss, visualization등)

 

Common Base Modules

- Config: config 설정

- Registry: root registries를 상속받음.

- File I/O: 일관된 방식으로 포맷을 지원

- Distributed Communication Primitives: 분산 프로그램 실행하는 동안 다른 프로세스 간의 통신을 처리

- Other Utilities: ManagerMixin과 같은 utility module들이 있음. Runner내 전반적인 접근이 가능한 기본 class는 ManagerMixin

 

 

반응형

'OpenMMLab(미공개) > MMEngine' 카테고리의 다른 글

[MMEngine] Tutorial - Dataset과 DataLoader  (0) 2024.01.14
[MMEngine] Tutorial - Runner  (0) 2024.01.14
[MMEngine] 빠른 Tutorial  (0) 2024.01.14
[MMEngine] 환경 설정  (0) 2024.01.14