Ultralytics YOLO용 MLflow 통합#
소개#
실험 로깅은 다양한 메트릭, 매개변수 및 아티팩트를 추적할 수 있도록 하는 머신 러닝 워크플로의 중요한 요소입니다. 이를 통해 모델 재현성을 높이고, 문제를 디버깅하며, 모델 성능을 개선할 수 있습니다. 실시간 객체 감지 기능으로 잘 알려진 Ultralytics YOLO가 이제 완전한 머신 러닝 수명 주기 관리를 위한 오픈 소스 플랫폼인 MLflow와의 통합을 지원합니다.
이 문서 페이지에서는 Ultralytics YOLO 프로젝트에서 MLflow 로깅 기능을 설정하고 사용하는 방법을 종합적으로 안내합니다.
MLflow란 무엇인가요?#
MLflow는 엔드투엔드 머신 러닝 수명 주기를 관리하기 위해 Databricks가 개발한 오픈 소스 플랫폼입니다. 실험 추적, 재현 가능한 실행을 위한 코드 패키징, 모델 공유 및 배포를 위한 도구를 제공합니다. MLflow는 모든 머신 러닝 라이브러리 및 프로그래밍 언어와 함께 작동하도록 설계되었습니다.
기능#
- 메트릭 로깅: 각 에포크가 끝날 때와 학습이 끝날 때 메트릭을 기록합니다.
- 매개변수 로깅: 학습에 사용된 모든 매개변수를 기록합니다.
- 아티팩트 로깅: 학습이 끝날 때 가중치와 구성 파일을 포함한 모델 아티팩트를 기록합니다.
설정 및 사전 요구 사항#
MLflow가 설치되어 있는지 확인합니다. 설치되어 있지 않다면 pip를 사용하여 설치합니다:
pip install mlflowUltralytics 설정에서 MLflow 로깅이 활성화되어 있는지 확인합니다. 일반적으로 이는 mlflow 키로 제어됩니다. 자세한 내용은 설정 페이지를 참조하세요.
Python 환경에서 settings 객체의 update 메서드를 호출하여 설정을 변경합니다:
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()사용 방법#
명령#
-
프로젝트 이름 설정: 환경 변수를 통해 프로젝트 이름을 설정할 수 있습니다:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME또는 YOLO 모델을 학습할 때
project=<project>인수를 사용할 수 있습니다. 예:yolo train project=my_project. -
실행 이름 설정: 프로젝트 이름을 설정하는 것과 마찬가지로 환경 변수를 통해 실행 이름을 설정할 수 있습니다:
export MLFLOW_RUN=YOUR_RUN_NAME또는 YOLO 모델을 학습할 때
name=<name>인수를 사용할 수 있습니다. 예:yolo train project=my_project name=my_name. -
로컬 MLflow 서버 시작: 추적을 시작하려면 다음을 사용합니다:
mlflow server --backend-store-uri runs/mlflow기본적으로
http://127.0.0.1:5000에서 로컬 서버가 시작되고 모든 mlflow 로그가 'runs/mlflow' 디렉터리에 저장됩니다. 학습 실행을 다른 추적 서버로 지정하려면 학습 전에MLFLOW_TRACKING_URI을 export합니다:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
학습 후 MLflow 실행 활성 상태 유지: 기본적으로 Ultralytics는 학습이 완료되면 MLflow 실행을 자동으로 종료합니다. 실행을 열린 상태로 유지하려면(예: 동일한 노트북에서 추가 메트릭이나 아티팩트를 기록하려는 경우) 학습 전에
MLFLOW_KEEP_RUN_ACTIVE을True로 설정합니다:export MLFLOW_KEEP_RUN_ACTIVE=True1,true,yes,on,y,t값은 이 동작을 활성화합니다(대소문자를 구분하지 않음). 설정되지 않은 변수를 포함한 그 밖의 값은 실행을 닫는 기본 동작을 유지합니다. 이후mlflow.end_run()을 사용하여 수동으로 닫아야 합니다.
로깅#
로깅은 on_pretrain_routine_end, on_fit_epoch_end, on_train_end 콜백 함수에서 처리합니다. 이러한 함수는 학습 프로세스의 해당 단계에서 자동으로 호출되며, 매개변수, 메트릭 및 아티팩트 로깅을 처리합니다.
예시#
-
사용자 지정 메트릭 로깅:
on_fit_epoch_end이 호출되기 전에trainer.metrics딕셔너리를 수정하여 기록할 사용자 지정 메트릭을 추가할 수 있습니다. -
실험 보기: 로그를 확인하려면 MLflow 서버(일반적으로
http://127.0.0.1:5000)로 이동하여 실험과 실행을 선택합니다.
-
실행 보기: 실행은 실험 내의 개별 모델입니다. 실행을 클릭하면 업로드된 아티팩트와 모델 가중치를 포함한 실행 세부 정보를 확인할 수 있습니다.

MLflow 비활성화#
MLflow 로깅을 끄려면 다음을 수행합니다:
yolo settings mlflow=False결론#
Ultralytics YOLO와 MLflow의 로깅 통합은 머신 러닝 실험을 간편하게 추적할 수 있는 방법을 제공합니다. 이를 통해 성능 메트릭을 모니터링하고 아티팩트를 효과적으로 관리하여 견고한 모델 개발 및 배포를 지원할 수 있습니다. 자세한 내용은 MLflow 공식 문서를 참조하세요.
FAQ#
Ultralytics YOLO에서 MLflow 로깅을 설정하려면 먼저 MLflow가 설치되어 있는지 확인해야 합니다. 다음과 같이 pip를 사용하여 설치할 수 있습니다:
pip install mlflow다음으로 Ultralytics 설정에서 MLflow 로깅을 활성화합니다. 이는
mlflow키를 사용하여 제어할 수 있습니다. 자세한 내용은 설정 가이드를 참조하세요.Ultralytics MLflow 설정 업데이트from ultralytics import settings # Update a setting settings.update({"mlflow": True}) # Reset settings to default values settings.reset()마지막으로 추적을 위한 로컬 MLflow 서버를 시작합니다:
mlflow server --backend-store-uri runs/mlflowMLflow와 함께 사용하는 Ultralytics YOLO는 학습 프로세스 전반에 걸쳐 다양한 메트릭, 매개변수 및 아티팩트의 로깅을 지원합니다:
- 메트릭 로깅: 각 에포크가 끝날 때와 학습이 완료될 때 메트릭을 추적합니다.
- 매개변수 로깅: 학습 프로세스에서 사용된 모든 매개변수를 기록합니다.
- 아티팩트 로깅: 학습 후 가중치 및 구성 파일과 같은 모델 아티팩트를 저장합니다.
자세한 내용은 Ultralytics YOLO 추적 문서를 참조하세요.
예, 설정을 업데이트하여 Ultralytics YOLO의 MLflow 로깅을 비활성화할 수 있습니다. CLI를 사용하면 다음과 같이 수행할 수 있습니다:
yolo settings mlflow=False추가 사용자 지정 및 설정 초기화에 대해서는 설정 가이드를 참조하세요.
Ultralytics YOLO에서 실험을 추적하기 위한 MLflow 서버를 시작하려면 다음 명령을 사용합니다:
mlflow server --backend-store-uri runs/mlflow이 명령은 기본적으로
http://127.0.0.1:5000에서 로컬 서버를 시작합니다. 중지하려면 해당 터미널에서Ctrl+C을 누릅니다.더 많은 명령 옵션은 명령 섹션을 참조하세요.
학습 전에
MLFLOW_KEEP_RUN_ACTIVE환경 변수를True로 설정합니다:export MLFLOW_KEEP_RUN_ACTIVE=True기본값은
False이므로 Ultralytics는 학습이 완료되면mlflow.end_run()을 호출합니다.MLFLOW_KEEP_RUN_ACTIVE=True를 사용하면 실행이 열린 상태로 유지되므로 동일한 Python 세션에서 추가 메트릭, 매개변수 또는 아티팩트를 기록할 수 있으며, 완료되면mlflow.end_run()을 사용하여 직접 닫습니다.1,true,yes,on,y,t값은 이 동작을 활성화합니다(대소문자를 구분하지 않음).MLflow를 Ultralytics YOLO와 통합하면 머신 러닝 실험을 관리하는 데 다음과 같은 여러 이점이 있습니다:
- 향상된 실험 추적: 다양한 실행과 그 결과를 쉽게 추적하고 비교할 수 있습니다.
- 향상된 모델 재현성: 모든 매개변수와 아티팩트를 기록하여 실험을 재현할 수 있도록 합니다.
- 성능 모니터링: 시간에 따른 성능 메트릭을 시각화하여 모델 개선을 위한 데이터 기반 의사 결정을 내릴 수 있습니다.
- 간소화된 워크플로: 로깅 프로세스를 자동화하여 수동 추적보다 모델 개발에 더 집중할 수 있습니다.
- 협업 개발: 더 나은 협업과 지식 공유를 위해 실험 결과를 팀 구성원과 공유할 수 있습니다.
Ultralytics YOLO에서 MLflow를 설정하고 활용하는 방법을 자세히 알아보려면 Ultralytics YOLO용 MLflow 통합 문서를 참조하세요.