YOLO Vision 2026:

Ultralytics YOLO를 위한 MLflow 통합#

MLflow experiment tracking with Ultralytics YOLO

소개#

실험 로깅은 machine learning 워크플로의 핵심 요소로, 다양한 지표, 파라미터, 아티팩트를 추적할 수 있게 해줍니다. 이를 통해 모델 재현성을 높이고, 문제를 디버깅하며, 모델 성능을 향상시킬 수 있습니다. 실시간 object detection 성능으로 유명한 Ultralytics YOLO는 이제 완전한 머신러닝 라이프사이클 관리를 위한 오픈소스 플랫폼인 MLflow와의 통합을 지원합니다.

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

MLflow란 무엇입니까?#

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

기능#

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

설정 및 사전 요구 사항#

MLflow가 설치되어 있는지 확인하십시오. 설치되어 있지 않다면 pip을 사용하여 설치하십시오:

pip install mlflow

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

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. 실행 이름 설정: 프로젝트 이름 설정과 유사하게, 환경 변수를 통해 실행(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 실행 유지하기: 기본적으로 Ultralytics는 학습이 완료되면 자동으로 MLflow 실행을 종료합니다. (동일한 노트북에서 추가 메트릭이나 아티팩트를 로깅하는 등의 이유로) 실행 상태를 유지하려면 학습 전에 MLFLOW_KEEP_RUN_ACTIVETrue로 설정하십시오:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    값은 대소문자를 구분하지 않고 구문 분석되며, 오직 true 문자열만이 이 동작을 활성화하고, 설정되지 않은 값을 포함한 다른 모든 값은 실행을 종료하는 기본값을 유지합니다. 이후에 mlflow.end_run()을 사용하여 수동으로 닫는 것을 잊지 마십시오.

  5. 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에 의해 처리됩니다. 이 함수들은 학습 과정의 각 단계에서 자동으로 호출되며, 파라미터, 메트릭, 아티팩트의 로깅을 처리합니다.

예시#

  1. 커스텀 지표 로깅: on_fit_epoch_end이 호출되기 전에 trainer.metrics 딕셔너리를 수정하여 로깅할 커스텀 지표를 추가할 수 있습니다.

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

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

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를 참조하십시오.

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는 학습 과정 전반에 걸쳐 다양한 메트릭, 파라미터 및 아티팩트의 기록을 지원합니다:

  • 메트릭 로깅: 각 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 문서를 살펴보십시오.

댓글