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 |