Ultralytics YOLO용 MLflow 통합

MLflow experiment tracking with Ultralytics YOLO

소개

Experiment logging is a crucial aspect of machine learning workflows that enables tracking of various metrics, parameters, and artifacts. It helps to enhance model reproducibility, debug issues, and improve model performance. Ultralytics YOLO, known for its real-time object detection capabilities, now offers integration with MLflow, an open-source platform for complete machine learning lifecycle management.

이 문서 페이지는 Ultralytics YOLO 프로젝트를 위해 MLflow 로깅 기능을 설정하고 활용하는 방법에 대한 종합 가이드입니다.

MLflow란 무엇입니까?

MLflowDatabricks에서 개발한 오픈 소스 플랫폼으로, 종단간 머신 러닝 수명 주기를 관리합니다. 여기에는 실험 추적, 재현 가능한 실행을 위한 코드 패키징, 모델 공유 및 배포를 위한 도구가 포함됩니다. MLflow는 모든 머신 러닝 라이브러리 및 프로그래밍 언어와 함께 작동하도록 설계되었습니다.

기능

  • 메트릭 로깅: 각 에폭(epoch) 종료 시 및 학습 종료 시 메트릭을 기록합니다.
  • 파라미터 로깅: 학습에 사용된 모든 파라미터를 기록합니다.
  • 아티팩트 로깅: 학습 종료 시 가중치 및 구성 파일을 포함한 모델 아티팩트를 기록합니다.

설정 및 사전 요구 사항

MLflow가 설치되어 있는지 확인하십시오. 설치되어 있지 않은 경우 pip를 사용하여 설치하십시오:

pip install mlflow

Ultralytics 설정에서 MLflow 로깅이 활성화되어 있는지 확인하십시오. 일반적으로 이는 mlflow 설정 키로 제어됩니다. 자세한 내용은 설정 페이지를 참조하십시오.

Ultralytics MLflow 설정 업데이트

Within the Python environment, call the update method on the settings object to change your settings:

from ultralytics import settings

# Update a setting
settings.update({"mlflow": True})

# Reset settings to default values
settings.reset()

사용 방법

명령어

  1. 프로젝트 이름 설정: 환경 변수를 통해 프로젝트 이름을 설정할 수 있습니다:

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    또는 YOLO 모델 학습 시 project=<project> 인수를 사용하십시오. 예: yolo train project=my_project.

  2. 실행 이름 설정: 프로젝트 이름 설정과 유사하게 환경 변수를 통해 실행(run) 이름을 설정할 수 있습니다:

    export MLFLOW_RUN=YOUR_RUN_NAME

    또는 YOLO 모델 학습 시 name=<name> 인수를 사용하십시오. 예: yolo train project=my_project name=my_name.

  3. 로컬 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
  4. MLflow 서버 인스턴스 종료: 실행 중인 모든 MLflow 인스턴스를 중지하려면 다음을 실행하십시오:

    ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9

로깅

로깅은 on_pretrain_routine_end, on_fit_epoch_endon_train_end 콜백 함수에 의해 처리됩니다. 이 함수들은 학습 과정의 각 단계에서 자동으로 호출되며, 파라미터, 메트릭 및 아티팩트의 로깅을 처리합니다.

예제

  1. Logging Custom Metrics: You can add custom metrics to be logged by modifying the trainer.metrics dictionary before on_fit_epoch_end is called.

  2. 실험 보기: 로그를 보려면 MLflow 서버(일반적으로 http://127.0.0.1:5000)로 이동하여 실험 및 실행을 선택하십시오. MLflow experiment tracking interface for YOLO

  3. 실행 보기: 실행은 실험 내의 개별 모델입니다. 실행을 클릭하여 업로드된 아티팩트와 모델 가중치를 포함한 실행 세부 정보를 확인하십시오. MLflow run details with YOLO artifacts

MLflow 비활성화

MLflow 로깅을 끄려면:

yolo settings mlflow=False

결론

Ultralytics YOLO와 MLflow 로깅 통합은 머신 러닝 실험을 추적하는 간소화된 방법을 제공합니다. 이를 통해 성능 메트릭을 모니터링하고 아티팩트를 효과적으로 관리하여 강력한 모델 개발 및 배포를 지원합니다. 자세한 내용은 MLflow 공식 문서를 방문하십시오.

FAQ

Ultralytics YOLO에서 MLflow 로깅을 어떻게 설정합니까?

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/mlflow

Ultralytics YOLO와 MLflow를 사용하여 어떤 메트릭과 파라미터를 기록할 수 있습니까?

MLflow와 함께하는 Ultralytics YOLO는 학습 과정 전반에 걸쳐 다양한 메트릭, 파라미터 및 아티팩트 로깅을 지원합니다:

  • 메트릭 로깅: 각 에폭 종료 시 및 학습 완료 시 메트릭을 추적합니다.
  • 파라미터 로깅: 학습 과정에 사용된 모든 파라미터를 기록합니다.
  • 아티팩트 로깅: 학습 후 가중치 및 구성 파일과 같은 모델 아티팩트를 저장합니다.

더 자세한 정보는 Ultralytics YOLO 추적 문서를 방문하십시오.

MLflow 로깅을 활성화한 후 비활성화할 수 있습니까?

네, 설정을 업데이트하여 Ultralytics YOLO에 대한 MLflow 로깅을 비활성화할 수 있습니다. CLI를 사용하여 수행하는 방법은 다음과 같습니다:

yolo settings mlflow=False

추가 사용자 지정 및 설정 초기화는 설정 가이드를 참조하십시오.

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

더 많은 명령어 옵션은 명령어 섹션을 참조하십시오.

Ultralytics YOLO와 MLflow를 통합하여 실험을 추적하면 어떤 이점이 있습니까?

MLflow와 Ultralytics YOLO를 통합하면 머신 러닝 실험 관리에 여러 가지 이점이 있습니다:

  • 향상된 실험 추적: 다양한 실행과 그 결과를 쉽게 추적하고 비교할 수 있습니다.
  • 모델 재현성 개선: 모든 파라미터와 아티팩트를 기록하여 실험의 재현성을 보장합니다.
  • 성능 모니터링: 시간에 따른 성능 메트릭을 시각화하여 모델 개선을 위한 데이터 기반 의사결정을 내릴 수 있습니다.
  • 워크플로우 간소화: 로깅 과정을 자동화하여 수동 추적보다는 모델 개발에 더 집중할 수 있습니다.
  • 협업 개발: 실험 결과를 팀 구성원과 공유하여 더 나은 협업과 지식 공유를 할 수 있습니다.

Ultralytics YOLO와 함께 MLflow를 설정하고 활용하는 방법에 대한 심층적인 내용은 Ultralytics YOLO용 MLflow 통합 문서를 살펴보십시오.

댓글