Ultralytics YOLO27:
Get Started

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

# 설정 업데이트
settings.update({"mlflow": True})

# 설정을 기본값으로 재설정
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 MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. 학습 후 MLflow 실행 활성 상태 유지: 기본적으로 Ultralytics는 학습이 끝나면 MLflow 실행을 자동으로 종료합니다. 실행을 열린 상태로 유지하려면(예: 동일한 노트북에서 추가 메트릭이나 아티팩트를 기록하려는 경우) 학습 전에 MLFLOW_KEEP_RUN_ACTIVE을 True로 설정합니다.

    export MLFLOW_KEEP_RUN_ACTIVE=True

    1, true, yes, on, y, t 값은 이 동작을 활성화합니다(대소문자 구분 없음). 설정되지 않은 변수를 포함한 다른 값은 기본 동작인 run 종료를 유지합니다. 이후 mlflow.end_run()을 사용해 수동으로 종료해야 합니다.

로깅#

로깅은 on_pretrain_routine_end, on_train_epoch_end, on_fit_epoch_end, on_train_end 콜백 함수에서 처리합니다. 이 함수들은 학습 프로세스의 해당 단계에서 자동으로 호출되며, 파라미터, 메트릭, 아티팩트의 로깅을 처리합니다.

예제#

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

  2. 실험 보기: 로그를 보려면 MLflow 서버(일반적으로 http://127.0.0.1:5000)로 이동한 다음 실험과 run을 선택합니다. MLflow experiment tracking interface for YOLO

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

MLflow 비활성화#

MLflow 로깅을 끄려면 다음을 수행합니다:

yolo settings mlflow=False

결론#

Ultralytics YOLO와 MLflow 로깅을 통합하면 머신러닝 실험을 간편하게 추적할 수 있습니다. 성능 메트릭을 모니터링하고 아티팩트를 효과적으로 관리할 수 있어 견고한 모델 개발 및 배포에 도움이 됩니다. 자세한 내용은 MLflow 공식 문서를 참조하세요.

자주 묻는 질문#

  • Ultralytics YOLO에서 MLflow 로깅을 설정하려면 먼저 MLflow가 설치되어 있는지 확인해야 합니다. pip를 사용해 설치할 수 있습니다:

    pip install mlflow

    다음으로 Ultralytics 설정에서 MLflow 로깅을 활성화합니다. 이 설정은 mlflow 키로 제어할 수 있습니다. 자세한 내용은 설정 가이드를 참조하세요.

    Ultralytics MLflow 설정 업데이트
    from ultralytics import settings
    
    # 설정 업데이트
    settings.update({"mlflow": True})
    
    # 설정을 기본값으로 재설정
    settings.reset()

    마지막으로 추적을 위한 로컬 MLflow 서버를 시작합니다:

    mlflow server --backend-store-uri runs/mlflow
  • Ultralytics YOLO와 MLflow를 사용하면 학습 프로세스 전반에 걸쳐 다양한 메트릭, 파라미터, 아티팩트를 로깅할 수 있습니다:

    • 메트릭 로깅: 각 에포크가 끝날 때와 학습이 완료될 때 메트릭을 추적합니다.
    • 파라미터 로깅: 학습 프로세스에 사용된 모든 파라미터를 로깅합니다.
    • 아티팩트 로깅: 학습 후 가중치 및 구성 파일과 같은 모델 아티팩트를 저장합니다.

    자세한 내용은 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를 사용하면 run이 열린 상태로 유지되므로 동일한 Python 세션에서 추가 메트릭, 파라미터 또는 아티팩트를 로깅할 수 있습니다. 작업이 끝나면 mlflow.end_run()을 사용해 직접 종료합니다. 1, true, yes, on, y, t 값은 이 동작을 활성화합니다(대소문자 구분 없음).

  • MLflow를 Ultralytics YOLO와 통합하면 머신러닝 실험을 관리할 때 여러 이점이 있습니다:

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

    Ultralytics YOLO에서 MLflow를 설정하고 활용하는 방법을 자세히 알아보려면 Ultralytics YOLO용 MLflow 통합 문서를 살펴보세요.

댓글