엔터프라이즈급 보안: ISO 27001 및 SOC 2 Type I 규정을 준수합니다.

Link to this sectionUltralytics YOLO를 위한 MLflow 통합#

MLflow experiment tracking with Ultralytics YOLO

Link to this section소개#

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 로깅 기능을 설정하고 활용하는 방법에 대한 종합 가이드입니다.

Link to this sectionMLflow란 무엇입니까?#

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

Link to this section기능#

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

Link to this section설정 및 사전 요구 사항#

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()

Link to this section사용 방법#

Link to this section명령어#

  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

Link to this section로깅#

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

Link to this section예시#

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

Link to this sectionMLflow 비활성화#

MLflow 로깅을 끄려면 다음을 수행하십시오:

yolo settings mlflow=False

Link to this section결론#

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

Link to this sectionFAQ#

Link to this sectionUltralytics 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

Link to this sectionUltralytics YOLO와 MLflow를 사용할 때 어떤 메트릭과 파라미터를 기록할 수 있습니까?#

MLflow를 사용하는 Ultralytics YOLO는 학습 과정 전반에 걸쳐 다양한 메트릭, 파라미터 및 아티팩트의 기록을 지원합니다:

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

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

Link to this sectionMLflow 로깅이 활성화된 후 비활성화할 수 있습니까?#

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

yolo settings mlflow=False

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

Link to this sectionUltralytics 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

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

Link to this 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만 이 기능을 활성화합니다.

Link to this section실험 추적을 위해 MLflow와 Ultralytics YOLO를 통합하면 어떤 이점이 있습니까?#

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

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

Ultralytics YOLO에서 MLflow를 설정하고 활용하는 방법에 대한 자세한 내용은 Ultralytics YOLO를 위한 MLflow 통합 문서를 살펴보십시오.

댓글