ignite: boilerplate 루프를 유연한 이벤트 기반 시스템으로 대체하는 PyTorch용 고수준 훈련 및 평가 라이브러리
ignite: boilerplate 루프를 유연한 이벤트 기반 시스템으로 대체하는 PyTorch용 고수준 훈련 및 평가 라이브러리
해결하는 문제
PyTorch-Ignite는 PyTorch에서 신경망을 훈련하고 평가하는 프로세스를 단순화합니다. 훈련 프로세스에 대한 완전한 제어권을 유지하면서, 훈련 및 검증 루프를 위한 반복적인 boilerplate 코드를 작성할 필요를 없애줍니다.
작동 방식
Ignite는 사용자가 train_step을 정의하고 Engine을 인스턴스화하는 엔진 기반 시스템을 사용합니다. 이 엔진은 루프 실행을 처리합니다. 기능을 추가하려면 사용자는 "event handlers"를 부착합니다. 이는 훈련 프로세스의 특정 시점(예: 에포크 시작 또는 반복 완료)에서 트리거되는 함수입니다. 이러한 핸들러는 모든 함수(lambdas, 클래스 메서드)가 될 수 있으며 빈도(예: 5 에포크마다)에 따라 필터링할 수 있습니다.
대상 사용자
일부 다른 프레임워크에서 발견되는 "제어 역전" 없이 훈련 파이프라인을 구성할 수 있는 고수준 라이브러리를 원하는 PyTorch 사용자들을 위해 설계되었습니다. 이를 통해 사용자는 필요한 시점과 장소에서 Ignite의 도구를 사용할 수 있습니다.
주요 특징
- 유연한 이벤트 시스템: 복잡한 인터페이스를 상속받지 않고도
EPOCH_COMPLETED또는uma l과 같은 이벤트에 임의의 함수를 부착하여 사용자 정의 로직을을 실행할 수 있습니다. - 즉시 사용 가능한 메트릭: 분류, 회귀 및 기타 작업(예: Precision, Recall, Accuracy, IoU)을 위한 광범위한 사전 구축된 메트릭을 포함합니다.
- 단순화된 루프: 수동
for/while루프를 엔진 시스템으로 대체하여 더 깔끔하고 간결한 코드를 제공합니다. - 확장 가능한 API: 메트릭, 실험 관리자 및 훈련 파이프라인 구성 요소에 대한 확장 가능한 프레임워크를 제공합니다.
Sources
- undefinedpytorch/ignite