ClearML을 사용하여 Ultralytics YOLOv5 원격 학습 및 모니터링하기
원활한 ML 통합, 실험 추적 등을 제공하는 향상된 Ultralytics YOLOv5 경험을 위해 ClearML과의 파트너십을 살펴보세요.

Ultralytics는 당사의 훌륭한 오픈 소스 도구인 YOLOv5와 같은 기술의 연구 및 개발 자금을 확보하고 모든 사람에게 무료로 제공하기 위해 다른 스타트업과 상업적 파트너십을 맺고 있습니다. 이 기사에는 해당 파트너에 대한 제휴 링크가 포함되어 있을 수 있습니다.
ClearML은 당사의 최신 파트너로, 여러분의 시간을 절약하도록 설계된 오픈 소스 툴박스입니다.
ML 도입 가속화라는 사명을 가진 ClearML은 어떠한 소프트웨어 및 하드웨어 제품에도 ML을 원활하게 통합할 수 있도록 지원합니다.
이 통합을 통해 YOLOv5 모델을 더 쉽게 학습시키고 ClearML 실험 관리자를 사용하여 자동으로 추적할 수 있습니다. ClearML 데이터셋 버전 ID를 데이터 입력값으로 간편하게 지정하면, 학습에 자동으로 사용됩니다.
Link to this section실험 추적을 한 단계 더 발전시키십시오#
- 실험 관리자에서 모든 YOLOv5 학습 실행을 추적하십시오.
- 통합된 ClearML 데이터 버전 관리 도구로 커스텀 학습 데이터를 버전 관리하고 쉽게 액세스하십시오.
- ClearML 하이퍼파라미터 최적화를 사용하여 최고의 mAP를 달성하십시오.
- ClearML Serving을 사용하여 몇 가지 명령만으로 새로 학습된 YOLOv5 모델을 API로 전환하십시오.
이 도구들을 얼마나 사용할지는 사용자의 선택에 달려 있습니다. 실험 관리자만 사용할 수도 있고, 모든 도구를 연결하여 인상적인 파이프라인을 구축할 수도 있습니다.
Link to this section설정하기#
실험과 데이터를 추적하려면 ClearML이 서버와 통신해야 합니다. 이를 위해 ClearML 호스팅 서비스를 무료로 가입하거나 자체 서버를 설정하는 두 가지 옵션이 있습니다. 자세한 내용은 ClearML Server deployment docs를 참조하십시오.
서버 자체도 오픈 소스이므로 민감한 데이터를 다루는 경우에도 문제없습니다!
- clearml 파이썬 패키지를 설치하십시오:
pip install clearml - 자격 증명 생성을 통해 ClearML SDK를 서버에 연결한 다음(오른쪽 상단 설정 → 워크스페이스 → 새 자격 증명 생성으로 이동), 아래 명령을 실행하고 지침을 따르십시오:
clearml-init
이제 시작할 준비가 되었습니다!
Link to this sectionClearML로 YOLOv5 학습하기#
ClearML 실험 추적을 활성화하려면 ClearML pip 패키지를 설치하기만 하면 됩니다.
pip install clearml이렇게 하면 YOLOv5 학습 스크립트와의 통합이 활성화됩니다. 이제부터 모든 학습 실행은 ClearML 실험 관리자에 의해 캡처되고 저장됩니다. project_name 또는 task_name을 변경하려면 커스텀 로거(utils/loggers/clearml/clearml_utils.py)에서 수정할 수 있습니다.
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache다음 내용이 캡처됩니다:
- 소스 코드 + 커밋되지 않은 변경 사항
- 설치된 패키지
- (하이퍼)파라미터
- 모델 파일 (--save-period n을 사용하여 n 에포크마다 체크포인트 저장)
- 콘솔 출력
- 스칼라 (mAP_0.5, mAP_0.5:0.95, 정밀도, 재현율, 손실, 학습률 등)
- 머신 세부 정보, 런타임, 생성 날짜 등과 같은 일반 정보
- 라벨 상관도 및 혼동 행렬과 같이 생성된 모든 플롯
- 에포크별 바운딩 박스가 포함된 이미지
- 에포크별 모자이크
- 에포크별 검증 이미지
훌륭합니다! 이제 ClearML UI에서 이 모든 정보를 시각화하여 학습 진행 상황을 한눈에 파악할 수 있습니다. 테이블 보기에 사용자 지정 열(예: mAP_0.5)을 추가하여 가장 성능이 좋은 모델을 쉽게 정렬하거나, 여러 실험을 선택하여 직접 비교해보십시오.
하이퍼파라미터 최적화 및 원격 실행과 같이 이 모든 정보로 할 수 있는 작업이 더 많이 있으니, 계속 읽으며 방법을 배워보십시오!
Link to this section데이터셋 버전 관리#
코드를 데이터와 별도로 버전 관리하는 것은 일반적으로 좋은 방법이며 최신 버전을 쉽게 가져올 수 있게 합니다. 이 저장소는 데이터셋 버전 ID 입력을 지원하며, 데이터가 없는 경우 가져오도록 합니다. 또한 이 워크플로우는 사용된 데이터셋 ID를 작업 파라미터의 일부로 저장하므로, 어떤 실험에 어떤 데이터가 사용되었는지 항상 정확히 알 수 있습니다!
Link to this section데이터셋 준비하기#
YOLOv5 저장소는 정보를 포함하는 YAML 파일을 사용하여 다양한 데이터셋을 지원합니다. 기본적으로 데이터셋은 저장소 루트 폴더를 기준으로 ../datasets 폴더에 다운로드됩니다. 따라서 YAML의 링크나 yolov5에서 제공하는 스크립트를 사용하여 coco128 데이터셋을 다운로드하면 다음과 같은 폴더 구조가 됩니다:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txt하지만 이는 원하는 어떤 데이터셋이든 상관없습니다. 이 폴더 구조를 유지하기만 한다면 자유롭게 사용하십시오.
다음으로, ⚠️해당 YAML 파일을 데이터셋 폴더의 루트로 복사하십시오⚠️. 이 YAML 파일들에는 ClearML이 데이터셋을 올바르게 사용하는 데 필요한 정보가 포함되어 있습니다. 물론 직접 만들 수도 있으며, 예시 YAML의 구조를 따르기만 하면 됩니다.
기본적으로 path, train, test, val, nc, names 키가 필요합니다.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
|_ README.txtLink to this section데이터셋 업로드하기#
이 데이터셋을 버전 관리되는 데이터셋으로 ClearML에 올리려면 데이터셋 루트 폴더로 이동하여 다음 명령을 실행하십시오:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .clearml-data sync 명령은 사실 단축 명령입니다. 다음과 같이 순차적으로 명령을 실행할 수도 있습니다:
# Optionally add --parent if you want to base
# this version on another dataset version, so no duplicate files are uploaded!
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeLink to this sectionClearML 데이터셋을 사용하여 학습 실행하기#
이제 ClearML 데이터셋을 갖추었으므로, 매우 간단하게 이를 사용하여 커스텀 YOLOv5 모델을 학습시킬 수 있습니다.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheLink to this section하이퍼파라미터 최적화#
실험과 데이터 버전이 준비되었으니, 이를 기반으로 무엇을 구축할 수 있는지 살펴보겠습니다!
코드 정보, 설치된 패키지 및 환경 세부 정보를 사용하여 실험 자체를 완벽하게 재현할 수 있습니다. 실제로 ClearML을 사용하면 실험을 복제하고 파라미터를 변경할 수 있습니다. 그런 다음 새로운 파라미터로 자동으로 재실행할 수 있는데, 이것이 바로 HPO의 기본 개념입니다!
하이퍼파라미터 최적화를 로컬에서 실행하기 위해 사전 제작된 스크립트를 포함했습니다. 최소 한 번 학습 작업이 실행되어 ClearML 실험 관리자에 등록되었는지 확인하십시오. 본질적으로 해당 작업을 복제하고 하이퍼파라미터를 변경하게 됩니다.
utils/loggers/clearml/hpo.py에 있는 스크립트에서 템플릿 작업의 ID를 입력하고 실행하기만 하면 됩니다. task.execute_locally()를 task.execute()로 변경하면 ClearML 대기열에 넣고 원격 에이전트가 이를 대신 처리하도록 할 수 있습니다.
# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.pyLink to this section원격 실행 (고급)#
HPO를 로컬에서 실행하는 것은 매우 편리하지만, 원격 머신에서 실험을 실행하고 싶다면 어떻게 해야 할까요? 사내의 매우 강력한 GPU 머신에 액세스할 수 있거나 클라우드 GPU를 사용할 예산이 있는 경우일 수 있습니다. 이때 ClearML Agent가 필요합니다.
에이전트가 할 수 있는 작업은 여기서 확인하십시오:
요약하자면, 실험 관리자가 추적하는 모든 실험은 다른 머신에서 재현할 수 있는 충분한 정보(설치된 패키지, 커밋되지 않은 변경 사항 등)를 포함하고 있습니다. ClearML 에이전트는 바로 이 작업을 수행합니다. 대기열에서 들어오는 작업을 수신 대기하다가 작업을 발견하면 환경을 재구성하고 실행하면서 스칼라, 플롯 등을 실험 관리자에 계속 보고합니다.
간단히 다음을 실행하여 모든 머신(클라우드 VM, 로컬 GPU 머신, 본인의 노트북)을 ClearML 에이전트로 전환할 수 있습니다:
clearml-agent daemon --queue [--docker]Link to this section복제, 편집 및 대기열 추가#
에이전트가 실행 중이면 작업을 할당할 수 있습니다. HPO 섹션에서 작업을 복제하고 하이퍼파라미터를 편집할 수 있었던 것을 기억하십니까? 인터페이스에서도 동일하게 작업할 수 있습니다!
🪄 마우스 오른쪽 버튼을 클릭하여 실험을 복제합니다
🎯 원하는 대로 하이퍼파라미터를 편집합니다
⏳ 마우스 오른쪽 버튼을 클릭하여 작업을 대기열에 추가합니다
Link to this section작업 원격 실행#
이제 위에서 설명한 대로 작업을 복제하거나, 단순히 task.execute_remotely()를 추가하여 현재 스크립트를 표시하면 실행 시 에이전트가 작업할 수 있도록 대기열에 추가됩니다!
YOLOv5 학습 스크립트를 원격으로 실행하려면 ClearML 로거가 인스턴스화된 후 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질문이 있으십니까? 커뮤니티에 가입하고 질문을 남겨주십시오!






