YOLO Vision 2026:

ClearML 통합#

ClearML MLOps experiment tracking platform

ClearML 소개#

ClearML은 머신러닝 워크플로를 간소화하고 엔지니어링 시간을 절약하기 위해 구축된 오픈소스 MLOps 플랫폼입니다.

  • 🔨 **실험 관리자(experiment manager)**에서 모든 YOLOv5 학습 실행을 추적합니다.
  • 🔧 통합된 ClearML 데이터 버전 관리 도구를 사용하여 커스텀 학습 데이터의 버전을 관리하고 액세스할 수 있습니다.
  • 🔦 ClearML Agent를 사용하여 YOLOv5 실행을 원격으로 학습 및 모니터링합니다.
  • 🔬 ClearML **하이퍼파라미터 최적화(hyperparameter optimization)**를 통해 최상의 mAP를 찾습니다.
  • 🔭 ClearML Serving을 사용하여 몇 가지 명령어로 학습된 YOLOv5 모델을 API로 전환합니다.

필요에 따라 이러한 도구를 원하는 만큼 사용하십시오. 실험 관리자부터 시작하거나 모든 도구를 연결하여 전체 파이프라인으로 구성할 수 있습니다.

ClearML 스칼라 대시보드에 표시된 YOLOv5 학습 지표

🦾 설정 방법#

ClearML은 실험과 데이터를 추적하기 위해 서버와 통신해야 합니다. 두 가지 옵션이 있습니다.

  • 무료 ClearML 호스팅 서비스에 가입하거나 다음을 수행하세요:
  • 자체 ClearML 서버를 배포하세요. 오픈소스이므로 민감한 데이터의 경우에도 유용한 옵션으로 남습니다.

그런 다음 clearml Python 패키지를 설치하고 SDK를 서버에 연결합니다:

pip install clearml

설정 → 워크스페이스 → 새 자격 증명 생성(ClearML UI 우측 상단)에서 자격 증명을 생성한 후 다음을 실행하세요:

clearml-init

프롬프트를 따르십시오. 이것으로 설정이 완료됩니다.

🚀 ClearML로 YOLOv5 학습하기#

실험 추적을 활성화하려면 아직 설치하지 않은 경우 ClearML pip 패키지를 설치하십시오:

pip install clearml

이렇게 하면 YOLOv5 학습 스크립트와의 통합이 활성화됩니다. 지금부터의 모든 학습 실행은 ClearML 실험 관리자에 의해 캡처되고 저장됩니다.

프로젝트 및 태스크 이름을 커스터마이즈하려면 --project--nametrain.py에 전달하세요. 기본값은 YOLOv5Training입니다. ClearML은 /를 서브프로젝트 구분자로 사용하므로 커스텀 프로젝트 이름에서는 /을 피하세요.

python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

또는 사용자 지정 이름을 사용하는 경우:

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

각 실행은 다음을 캡처합니다:

  • 소스 코드 및 커밋되지 않은 변경 사항
  • 설치된 패키지
  • 하이퍼파라미터
  • 모델 체크포인트(모든 n 에포크마다 저장하려면 --save-period n 사용)
  • 콘솔 출력
  • 스칼라(mAP_0.5, mAP_0.5:0.95, 정밀도, 재현율, 손실, 학습률)
  • 머신 세부 정보, 런타임 및 생성 날짜
  • 라벨 상관관계 그래프 및 혼동 행렬과 같은 생성된 플롯
  • 에포크별 바운딩 박스가 포함된 이미지
  • 에포크당 모자이크 시각화
  • 에포크당 검증 이미지

모든 항목이 ClearML UI에 표시되므로 한 곳에서 학습을 모니터링할 수 있습니다. 커스텀 컬럼(예: mAP_0.5)을 추가하여 성능이 가장 좋은 모델별로 정렬하거나, 여러 실험을 선택하여 나란히 비교할 수 있습니다.

하이퍼파라미터 최적화 및 원격 실행에 대한 자세한 내용을 계속 읽어보세요.

🔗 데이터셋 버전 관리#

데이터를 코드와 별도로 버전화하면 최신 버전을 쉽게 가져올 수 있으며 완전한 재현성이 보장됩니다. 이 저장소는 데이터셋 버전 ID를 허용하고, 데이터가 누락된 경우 자동으로 가져오며, ID를 작업 매개변수로 기록하므로 어떤 실험에 어떤 데이터가 사용되었는지 항상 알 수 있습니다.

ClearML 데이터셋 버전 관리 인터페이스

데이터셋 준비#

YOLOv5 리포지토리는 YAML 설정 파일을 통해 많은 데이터셋을 지원합니다. 기본적으로 데이터셋은 리포지토리 루트 상대 경로인 ../datasets 폴더에 다운로드됩니다. coco128을 다운로드한 후 폴더 구조는 다음과 같습니다:

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

이 구조를 유지하는 한 어떤 데이터셋이든 사용할 수 있습니다.

다음으로, 데이터셋의 YAML 파일을 데이터셋 루트 폴더에 복사하세요. ClearML은 데이터셋을 올바르게 사용하기 위해 이 파일을 읽습니다. 예시 레이아웃에 따라 자체 YAML을 작성할 수 있으며, path, train, test, val, nc, names가 정의되어 있는지 확인하세요.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE
        |_ LICENSE
        |_ README.txt

데이터셋 업로드#

데이터셋을 버전화된 ClearML 데이터셋으로 등록하려면 루트 폴더로 이동하여 다음을 실행하십시오:

cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

clearml-data sync은 다음 시퀀스의 단축키이며, 명시적으로 실행할 수도 있습니다:

# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data close

ClearML 데이터셋으로 학습하기#

데이터셋이 등록되면 ID로 지정하여 학습을 수행하십시오:

python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache

👀 하이퍼파라미터 최적화#

실험과 데이터가 버전화되면 이를 기반으로 작업을 구축할 수 있습니다. 추적된 각 실험은 코드, 설치된 패키지, 구성을 포함한 전체 환경을 캡처하므로 실행 결과는 완벽하게 재현 가능합니다. ClearML을 사용하면 실험을 복제하고, 매개변수를 변경하고, 자동으로 다시 실행할 수 있으며, 이는 하이퍼파라미터 최적화(HPO)의 기반이 됩니다.

HPO를 로컬에서 실행하려면 번들 스크립트를 사용하십시오. 먼저 실험 관리자에 학습 작업이 존재하는지 확인하십시오. 스크립트가 해당 작업을 복제하고 하이퍼파라미터를 변경합니다.

utils/loggers/clearml/hpo.py에 템플릿 태스크 ID를 입력한 후 다음을 실행하세요:

# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py

task.execute_locally()task.execute()로 전환하여 작업을 ClearML 큐로 푸시하면 원격 에이전트가 이를 가져갈 수 있습니다.

YOLOv5 지표가 포함된 ClearML HPO 대시보드

🤯 원격 실행 (고급)#

로컬에서 HPO를 실행하는 것은 편리하지만, 종종 온프레미스 GPU 머신이나 클라우드 인스턴스처럼 더 강력한 하드웨어에서 실험을 수행하고 싶을 것입니다. 그것이 바로 ClearML 에이전트의 역할입니다:

추적된 각 실험에는 다른 머신에서 재현하는 데 필요한 모든 것(설치된 패키지, 커밋되지 않은 변경 사항 및 구성)이 포함되어 있습니다. ClearML 에이전트는 큐를 수신 대기하고, 들어오는 작업을 선택하고, 환경을 재생성하고, 작업을 실행하며, 스칼라와 플롯을 실험 관리자로 다시 스트리밍합니다.

클라우드 VM, 로컬 GPU 박스 또는 노트북 등 모든 머신을 다음 명령어로 ClearML 에이전트로 전환하십시오:

clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]

복제, 편집 및 큐에 추가#

에이전트가 실행 중이면 UI에서 직접 작업을 할당할 수 있습니다:

  • 🪄 실험을 마우스 오른쪽 버튼으로 클릭하고 복제합니다.
  • 🎯 하이퍼파라미터를 편집합니다.
  • ⏳ 복제된 작업을 마우스 오른쪽 버튼으로 클릭하고 대상 큐에 추가(enqueue)합니다.

UI에서 태스크 대기열에 추가

원격으로 작업 실행하기#

또한 ClearML 로거가 인스턴스화된 후 task.execute_remotely()을 추가하여 프로그래밍 방식으로 원격 실행을 위해 실행 중인 스크립트에 플래그를 지정할 수 있습니다. train.py에 강조 표시된 라인을 추가하세요:

# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
    loggers = Loggers(save_dir, weights, opt, hyp, LOGGER)  # loggers instance
    if loggers.clearml:
        loggers.clearml.task.execute_remotely(queue="my_queue")  # <------ ADD THIS LINE
        # data_dict is None unless the user selected a ClearML dataset, in which case ClearML fills it in.
        data_dict = loggers.clearml.data_dict
# ...

이 변경 후 학습 스크립트를 실행하면 해당 줄까지 실행되고, 코드를 패키징하여 큐로 전송합니다.

자동 확장 워커#

ClearML에는 큐에 대기 중인 실험이 있을 때 AWS, GCP 또는 Azure에서 원격 머신을 스핀업하고, 이를 ClearML 에이전트로 변환하며, 작업이 완료되면 종료하는 자동 스케일러가 탑재되어 있습니다. 따라서 실제로 실행 중인 컴퓨팅 자원에 대해서만 비용을 지불하면 됩니다.

아래 시작 가이드 비디오를 시청하십시오:

비디오 시청

더 알아보기#

ClearML과 Ultralytics 모델 통합에 대한 자세한 내용은 ClearML 통합 가이드를 확인하고 다른 실험 추적 도구를 사용하여 MLOps 워크플로를 향상시키는 방법을 살펴보세요.

댓글