Ultralytics YOLO27:

Ultralytics YOLO용 MLflow 통합#

MLflow experiment tracking with Ultralytics YOLO

소개#

실험 로깅은 다양한 메트릭, 매개변수 및 아티팩트를 추적할 수 있도록 하는 머신 러닝 워크플로의 중요한 요소입니다. 이를 통해 모델 재현성을 높이고, 문제를 디버깅하며, 모델 성능을 개선할 수 있습니다. 실시간 객체 감지 기능으로 잘 알려진 Ultralytics YOLO가 이제 완전한 머신 러닝 수명 주기 관리를 위한 오픈 소스 플랫폼인 MLflow와의 통합을 지원합니다.

이 문서 페이지에서는 Ultralytics YOLO 프로젝트에서 MLflow 로깅 기능을 설정하고 사용하는 방법을 종합적으로 안내합니다.

MLflow란 무엇인가요?#

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

기능#

  • 메트릭 로깅: 각 에포크가 끝날 때와 학습이 끝날 때 메트릭을 기록합니다.
  • 매개변수 로깅: 학습에 사용된 모든 매개변수를 기록합니다.
  • 아티팩트 로깅: 학습이 끝날 때 가중치와 구성 파일을 포함한 모델 아티팩트를 기록합니다.

설정 및 사전 요구 사항#

MLflow가 설치되어 있는지 확인합니다. 설치되어 있지 않다면 pip를 사용하여 설치합니다:

pip install mlflow

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

Ultralytics MLflow 설정 업데이트

Python 환경에서 settings 객체의 update 메서드를 호출하여 설정을 변경합니다:

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. 실행 이름 설정: 프로젝트 이름을 설정하는 것과 마찬가지로 환경 변수를 통해 실행 이름을 설정할 수 있습니다:

    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합니다:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. 학습 후 MLflow 실행 활성 상태 유지: 기본적으로 Ultralytics는 학습이 완료되면 MLflow 실행을 자동으로 종료합니다. 실행을 열린 상태로 유지하려면(예: 동일한 노트북에서 추가 메트릭이나 아티팩트를 기록하려는 경우) 학습 전에 MLFLOW_KEEP_RUN_ACTIVETrue로 설정합니다:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    1, true, yes, on, y, t 값은 이 동작을 활성화합니다(대소문자를 구분하지 않음). 설정되지 않은 변수를 포함한 그 밖의 값은 실행을 닫는 기본 동작을 유지합니다. 이후 mlflow.end_run()을 사용하여 수동으로 닫아야 합니다.

로깅#

로깅은 on_pretrain_routine_end, on_fit_epoch_end, on_train_end 콜백 함수에서 처리합니다. 이러한 함수는 학습 프로세스의 해당 단계에서 자동으로 호출되며, 매개변수, 메트릭 및 아티팩트 로깅을 처리합니다.

예시#

  1. 사용자 지정 메트릭 로깅: on_fit_epoch_end이 호출되기 전에 trainer.metrics 딕셔너리를 수정하여 기록할 사용자 지정 메트릭을 추가할 수 있습니다.

  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 로깅을 설정하려면 먼저 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
  • MLflow와 함께 사용하는 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 통합 문서를 참조하세요.

댓글