Ultralytics YOLO를 위한 MLflow 통합#
소개#
실험 로깅은 machine learning 워크플로의 핵심 요소로, 다양한 지표, 파라미터, 아티팩트를 추적할 수 있게 해줍니다. 이를 통해 모델 재현성을 높이고, 문제를 디버깅하며, 모델 성능을 향상시킬 수 있습니다. 실시간 object detection 성능으로 유명한 Ultralytics YOLO는 이제 완전한 머신러닝 라이프사이클 관리를 위한 오픈소스 플랫폼인 MLflow와의 통합을 지원합니다.
본 문서 페이지는 Ultralytics YOLO 프로젝트에서 MLflow 로깅 기능을 설정하고 활용하는 방법에 대한 종합 가이드입니다.
MLflow란 무엇입니까?#
MLflow는 엔드투엔드 머신러닝 생명주기를 관리하기 위해 Databricks에서 개발한 오픈소스 플랫폼입니다. 실험 추적, 재현 가능한 실행을 위한 코드 패키징, 모델 공유 및 배포를 위한 도구를 포함합니다. MLflow는 모든 머신러닝 라이브러리 및 프로그래밍 언어와 함께 작동하도록 설계되었습니다.
기능#
- 메트릭 로깅: 각 에포크 종료 시점과 학습 종료 시점에 메트릭을 기록합니다.
- 파라미터 로깅: 학습에 사용된 모든 파라미터를 기록합니다.
- 아티팩트 로깅: 학습 종료 시 가중치와 구성 파일을 포함한 모델 아티팩트를 기록합니다.
설정 및 사전 요구 사항#
MLflow가 설치되어 있는지 확인하십시오. 설치되어 있지 않다면 pip을 사용하여 설치하십시오:
pip install mlflowUltralytics 설정에서 MLflow 로깅이 활성화되어 있는지 확인하십시오. 일반적으로 이는 설정의 mlflow 키에 의해 제어됩니다. 자세한 내용은 settings 페이지를 참조하십시오.
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). -
실행 이름 설정: 프로젝트 이름 설정과 유사하게, 환경 변수를 통해 실행(Run) 이름을 설정할 수 있습니다:
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 MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
학습 후 MLflow 실행 유지하기: 기본적으로 Ultralytics는 학습이 완료되면 자동으로 MLflow 실행을 종료합니다. (동일한 노트북에서 추가 메트릭이나 아티팩트를 로깅하는 등의 이유로) 실행 상태를 유지하려면 학습 전에
MLFLOW_KEEP_RUN_ACTIVE을True로 설정하십시오:export MLFLOW_KEEP_RUN_ACTIVE=True값은 대소문자를 구분하지 않고 구문 분석되며, 오직
true문자열만이 이 동작을 활성화하고, 설정되지 않은 값을 포함한 다른 모든 값은 실행을 종료하는 기본값을 유지합니다. 이후에mlflow.end_run()을 사용하여 수동으로 닫는 것을 잊지 마십시오. -
MLflow 서버 인스턴스 종료: 실행 중인 모든 MLflow 인스턴스를 중지하려면 다음을 실행하십시오:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
로깅#
로깅은 on_pretrain_routine_end, on_fit_epoch_end, on_train_end callback functions에 의해 처리됩니다. 이 함수들은 학습 과정의 각 단계에서 자동으로 호출되며, 파라미터, 메트릭, 아티팩트의 로깅을 처리합니다.
예시#
-
커스텀 지표 로깅:
on_fit_epoch_end이 호출되기 전에trainer.metrics딕셔너리를 수정하여 로깅할 커스텀 지표를 추가할 수 있습니다. -
실험 보기: 로그를 보려면 MLflow 서버(일반적으로
http://127.0.0.1:5000)로 이동하여 실험과 실행을 선택하십시오.
-
실행 보기: 실행(Run)은 실험 내부의 개별 모델입니다. 실행을 클릭하면 업로드된 아티팩트와 모델 가중치를 포함한 실행 세부 정보를 확인할 수 있습니다.

MLflow 비활성화#
MLflow 로깅을 끄려면 다음을 수행하십시오:
yolo settings mlflow=False결론#
Ultralytics YOLO와의 MLflow 로깅 통합은 machine learning experiments를 지속적으로 추적할 수 있는 간소화된 방법을 제공합니다. 이를 통해 성능 메트릭을 모니터링하고 아티팩트를 효과적으로 관리할 수 있어 견고한 모델 개발 및 배포에 도움이 됩니다. 자세한 내용은 MLflow official documentation을 방문해 주십시오.
FAQ#
Ultralytics YOLO에서 MLflow 로깅을 어떻게 설정합니까?#
Ultralytics YOLO에서 MLflow 로깅을 설정하려면 먼저 MLflow가 설치되어 있는지 확인해야 합니다. pip을 사용하여 설치할 수 있습니다:
pip install mlflow다음으로 Ultralytics 설정에서 MLflow 로깅을 활성화하십시오. 이는 mlflow 키를 사용하여 제어할 수 있습니다. 자세한 내용은 settings guide를 참조하십시오.
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/mlflowUltralytics YOLO와 MLflow를 사용할 때 어떤 메트릭과 파라미터를 기록할 수 있습니까?#
MLflow를 사용하는 Ultralytics YOLO는 학습 과정 전반에 걸쳐 다양한 메트릭, 파라미터 및 아티팩트의 기록을 지원합니다:
- 메트릭 로깅: 각 epoch가 끝날 때와 학습이 완료될 때 메트릭을 추적합니다.
- 파라미터 로깅: 학습 과정에서 사용된 모든 파라미터를 기록합니다.
- 아티팩트 로깅: 학습 후 가중치 및 구성 파일과 같은 모델 아티팩트를 저장합니다.
더 자세한 정보는 Ultralytics YOLO tracking documentation을 방문하십시오.
MLflow 로깅이 활성화된 후 비활성화할 수 있습니까?#
네, 설정을 업데이트하여 Ultralytics YOLO에 대한 MLflow 로깅을 비활성화할 수 있습니다. CLI를 사용하여 수행하는 방법은 다음과 같습니다:
yolo settings mlflow=False추가적인 사용자 정의 및 설정 재설정에 대해서는 settings guide를 참조하십시오.
Ultralytics YOLO 추적을 위해 MLflow 서버를 시작하고 중지하려면 어떻게 해야 합니까?#
Ultralytics YOLO에서 실험을 추적하기 위해 MLflow 서버를 시작하려면 다음 명령어를 사용하십시오:
mlflow server --backend-store-uri runs/mlflow이 명령어는 기본적으로 http://127.0.0.1:5000에서 로컬 서버를 시작합니다. 실행 중인 MLflow 서버 인스턴스를 중지해야 하는 경우 다음 bash 명령어를 사용하십시오:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9더 많은 명령어 옵션에 대해서는 commands section을 참조하십시오.
학습이 완료된 후 MLflow 실행을 활성 상태로 유지하려면 어떻게 해야 합니까?#
학습 전에 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()으로 직접 닫을 수 있습니다. 값은 대소문자를 구분하지 않고 구문 분석되며, 오직 true만이 이 동작을 활성화합니다.
실험 추적을 위해 MLflow와 Ultralytics YOLO를 통합하면 어떤 이점이 있습니까?#
MLflow와 Ultralytics YOLO를 통합하면 머신러닝 실험 관리에 있어 여러 가지 이점이 있습니다:
- 향상된 실험 추적: 다양한 실행과 그 결과를 쉽게 추적하고 비교할 수 있습니다.
- 모델 재현성 향상: 모든 파라미터와 아티팩트를 기록하여 실험의 재현성을 보장합니다.
- 성능 모니터링: 시간이 지남에 따른 성능 메트릭을 시각화하여 모델 개선을 위한 데이터 기반 결정을 내릴 수 있습니다.
- 간소화된 워크플로: 로깅 프로세스를 자동화하여 수동 추적보다는 모델 개발에 더 집중할 수 있습니다.
- 협업 개발: 실험 결과를 팀원들과 공유하여 더 나은 협업과 지식 공유를 실현합니다.
Ultralytics YOLO와 MLflow를 설정하고 활용하는 방법에 대한 자세한 내용은 MLflow Integration for Ultralytics YOLO 문서를 살펴보십시오.