원활한 ML 통합, 실험 추적 등을 통해 향상된 Ultralytics YOLOv5 경험을 위해 ClearML과의 파트너십을 살펴보세요.

원활한 ML 통합, 실험 추적 등을 통해 향상된 Ultralytics YOLOv5 경험을 위해 ClearML과의 파트너십을 살펴보세요.
Ultralytics는 YOLOv5와 같은 멋진 오픈 소스 도구의 연구 개발 자금을 지원하고 모든 사람이 무료로 사용할 수 있도록 다른 스타트업과 상업적 파트너십을 맺고 있습니다. 이 기사에는 해당 파트너에 대한 제휴 링크가 포함될 수 있습니다.
ClearML은 시간을 절약하도록 설계된 오픈 소스 툴박스인 최신 파트너입니다.
ML 도입 가속화라는 사명을 가지고 ClearML은 모든 소프트웨어 및 하드웨어 제품에 ML을 원활하게 통합할 수 있도록 합니다.
이 통합을 통해 YOLOv5 모델을 훨씬 쉽게 학습하고 ClearML 실험 관리자를 사용하여 자동으로 추적할 수 있습니다. ClearML 데이터 세트 버전 ID를 데이터 입력으로 쉽게 지정할 수 있으며, 이는 모델을 학습하는 데 자동으로 사용됩니다.
이러한 도구를 얼마나 많이 사용할지는 여러분에게 달려 있습니다. 실험 관리자만 사용하거나 모든 도구를 함께 연결하여 인상적인 파이프라인을 만들 수도 있습니다.
실험 및 데이터를 추적하려면 ClearML이 서버와 통신해야 합니다. 이를 위한 두 가지 옵션이 있습니다. ClearML 호스팅 서비스에 무료로 가입하거나 자체 서버를 설정하십시오(여기 참조).
서버조차도 오픈 소스이므로 민감한 데이터를 처리하는 경우에도 문제없습니다!
자, 이제 시작할 준비가 되었습니다...
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
다음 항목을 캡처합니다.
나쁘지 않네요! 이제 ClearML UI에서 이 모든 정보를 시각화하여 학습 진행 상황에 대한 개요를 확인할 수 있습니다. 테이블 보기에 사용자 정의 열(예: mAP_0.5)을 추가하여 가장 성능이 좋은 모델을 쉽게 정렬할 수 있습니다. 또는 여러 실험을 선택하여 직접 비교할 수도 있습니다!
하이퍼파라미터 최적화 및 원격 실행과 같이 이 모든 정보를 사용하여 할 수 있는 일이 훨씬 더 많으므로 계속 읽고 방법을 알아보세요!
코드와 별도로 데이터를 버전 관리하는 것이 일반적으로 좋은 생각이며 최신 버전을 쉽게 얻을 수 있습니다. 이 리포지토리는 데이터 세트 버전 ID 제공을 지원하며, 아직 없는 경우 데이터를 가져오도록 합니다. 또한 이 워크플로는 사용된 데이터 세트 ID를 작업 매개변수의 일부로 저장하므로 어떤 데이터가 어떤 실험에 사용되었는지 항상 확실하게 알 수 있습니다!
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 # ← 여기!
|_ LICENSE
|_ README.txt
이 데이터 세트를 버전 관리된 데이터 세트로 ClearML에 가져오려면 데이터 세트 루트 폴더로 이동하여 다음 명령을 실행합니다.
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .
clearml-data sync 명령어는 실제로 약식 명령어입니다. 다음 명령어를 차례로 실행할 수도 있습니다.
# 다른 데이터 세트 버전을 기반으로 하려면 --parent를 선택적으로 추가하십시오.
# 이 버전을 다른 데이터 세트 버전을 기반으로 하려면 --parent를 선택적으로 추가하십시오. 그러면 중복 파일이 업로드되지 않습니다!
clearml-data create --name coco128 --project YOLOv5/p>
clearml-data add --files .
clearml-data close
이제 ClearML 데이터 세트가 있으므로, 이를 사용하여 사용자 정의 YOLOv5 모델을 매우 간단하게 훈련할 수 있습니다.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cache
이제 실험과 데이터 버전을 확보했으니, 이를 기반으로 무엇을 구축할 수 있는지 살펴볼 차례입니다!
코드 정보, 설치된 패키지 및 환경 세부 정보를 사용하여 실험 자체를 이제 완전히 재현할 수 있습니다. 실제로 ClearML을 사용하면 실험을 복제하고 매개변수를 변경할 수도 있습니다. 그런 다음 이러한 새로운 매개변수로 자동으로 다시 실행할 수 있습니다. 이것이 기본적으로 HPO가 하는 일입니다!
로컬에서 하이퍼파라미터 최적화를 실행하기 위해 미리 만들어진 스크립트를 포함했습니다. ClearML 실험 관리자에 훈련 작업이 한 번 이상 실행되었는지 확인하기만 하면 기본적으로 복제하고 하이퍼파라미터를 변경합니다.
utils/loggers/clearml/hpo.py에 있는 스크립트에서 이 템플릿 작업의 ID를 입력한 다음 실행하기만 하면 됩니다. task.execute_locally()를 task.execute()로 변경하여 ClearML 대기열에 넣고 원격 에이전트가 대신 작업하도록 할 수 있습니다.
# optuna를 사용하려면 먼저 설치하십시오. 그렇지 않으면 옵티마이저를 RandomSearch pip install optuna python utils\/loggers\/clearml\/hpo.py로 변경할 수 있습니다.
HPO를 로컬에서 실행하는 것은 매우 편리하지만 원격 머신에서 실험을 실행하고 싶다면 어떻게 해야 할까요? 현장에 매우 강력한 GPU 머신에 액세스할 수 있거나 클라우드 GPU를 사용할 예산이 있을 수 있습니다. 이때 ClearML Agent가 필요합니다.
에이전트가 할 수 있는 작업은 여기에서 확인하세요:
요약하자면, 실험 관리자가 추적하는 모든 실험에는 다른 시스템에서 실험을 재현할 수 있을 만큼 충분한 정보(설치된 패키지, 커밋되지 않은 변경 사항 등)가 포함되어 있습니다. 따라서 ClearML 에이전트는 들어오는 작업에 대한 대기열을 수신하고 작업을 찾으면 환경을 재구성하고 스칼라, 플롯 등을 실험 관리자에게 계속 보고하면서 작업을 실행합니다.
다음 명령을 실행하기만 하면 모든 머신(클라우드 VM, 로컬 GPU 머신, 자신의 랩톱)을 ClearML 에이전트로 전환할 수 있습니다.
clearml-agent daemon --queue [--docker]
에이전트가 실행 중인 상태에서 작업을 제공할 수 있습니다. HPO 섹션에서 작업을 복제하고 하이퍼파라미터를 편집할 수 있다고 언급한 것을 기억하십니까? 인터페이스에서도 그렇게 할 수 있습니다!
🪄 실험을 마우스 오른쪽 버튼으로 클릭하여 복제하십시오.
🎯 하이퍼파라미터를 원하는 대로 편집하십시오.
⏳ 작업을 마우스 오른쪽 버튼으로 클릭하여 대기열에 추가합니다.
이제 위에서 설명한 대로 작업을 복제하거나, task.execute_remotely()를 추가하여 현재 스크립트를 표시하기만 하면 실행 시 에이전트가 작업을 시작할 수 있도록 대기열에 추가됩니다!
YOLOv5 훈련 스크립트를 원격으로 실행하려면 ClearML 로거가 인스턴스화된 후 training.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 either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...
이 변경 후 학습 스크립트를 실행하면 python은 해당 라인까지 스크립트를 실행한 다음 코드를 패키징하여 대기열로 보냅니다!
ClearML에는 자동 스케일러도 함께 제공됩니다! 이 도구는 선택한 클라우드(AWS, GCP, Azure)에서 새로운 원격 머신을 자동으로 스핀업하고 대기열에서 실험이 감지될 때마다 ClearML 에이전트로 전환합니다. 작업이 처리되면 자동 스케일러가 원격 머신을 자동으로 종료하므로 비용 지불을 중단할 수 있습니다! 아래 자동 스케일러 시작하기 비디오를 확인하십시오.
궁금한 점이 있으신가요? 커뮤니티에 참여하여 질문을 남겨주세요!