콘텐츠로 건너뛰기

ClearML 통합

Clear|MLClear|ML

ClearML 정보

ClearML은 머신 러닝 워크플로를 간소화하고 시간을 절약하도록 설계된 오픈 소스 MLOps 플랫폼입니다 ⏱️.

🔨 실험 관리자에서 모든 YOLOv5 학습 실행을 추적합니다.

🔧 통합된 ClearML 데이터 버전 관리 도구를 사용하여 사용자 지정 학습 데이터를 버전 관리하고 쉽게 액세스합니다.

🔦 ClearML Agent를 사용하여 YOLOv5 학습 실행을 원격으로 학습하고 모니터링합니다.

🔬 ClearML 하이퍼파라미터 최적화를 사용하여 최고의 mAP를 얻으세요.

🔭 ClearML Serving을 사용하여 몇 가지 명령만으로 새로 학습된 YOLOv5 모델을 API로 전환하세요.


그리고 훨씬 더 많은 기능이 있습니다. 이러한 도구를 얼마나 많이 사용할지는 여러분에게 달려 있습니다. 실험 관리자를 고수하거나 이 모든 도구를 연결하여 인상적인 파이프라인을 만들 수도 있습니다!

ClearML 스칼라 대시보드



🦾 설정

실험 및/또는 데이터를 추적하려면 ClearML이 서버와 통신해야 합니다. 서버를 얻을 수 있는 방법은 2가지입니다.

ClearML Hosted Service에 무료로 가입하거나 자체 ClearML 서버를 설정할 수 있습니다. 서버조차도 오픈 소스이므로 민감한 데이터를 처리하는 경우에도 안심할 수 있습니다!

  • 다음을 설치합니다. clearml python 패키지:

    pip install clearml
    
  • 자격 증명 생성 (오른쪽 상단의 설정 -> 작업 공간 -> 새 자격 증명 생성으로 이동)을 통해 ClearML SDK를 서버에 연결한 다음 아래 명령을 실행하고 지침을 따르십시오.

    clearml-init
    

이것으로 끝입니다! 완료되었습니다. 😎


🚀 ClearML을 사용한 YOLOv5 학습

ClearML 실험 추적을 활성화하려면 ClearML pip 패키지를 설치하기만 하면 됩니다.

pip install clearml

이렇게 하면 YOLOv5 학습 스크립트와 통합할 수 있습니다. 이제부터 모든 학습 실행은 ClearML 실험 관리자에 의해 캡처되어 저장됩니다.

다음을 변경하려면 project_name 또는 task_name, 다음을 사용합니다. --project--name 다음에 대한 인수 train.py 스크립트를 실행하면 기본적으로 프로젝트 이름은 YOLOv5 작업입니다. Training. 참고: 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

다음을 캡처합니다.

  • 소스 코드 + 커밋되지 않은 변경 사항
  • 설치된 패키지
  • (하이퍼)파라미터
  • 모델 파일 (사용 --save-period n n epoch마다 체크포인트를 저장하려면)
  • 콘솔 출력
  • 스칼라 (mAP_0.5, mAP_0.5:0.95, 정밀도, 재현율, 손실, 학습률 등)
  • 머신 세부 정보, 런타임, 생성 날짜 등과 같은 일반 정보
  • 레이블 코렐로그램 및 혼동 행렬과 같이 생성된 모든 플롯
  • 에포크당 경계 상자가 있는 이미지
  • Epoch 당 모자이크
  • epoch당 유효성 검사 이미지

정말 많죠? 🤯 이제 ClearML UI에서 이 모든 정보를 시각화하여 학습 진행 상황을 개괄적으로 파악할 수 있습니다. 테이블 뷰에 사용자 정의 열(예: mAP_0.5)을 추가하여 성능이 가장 좋은 모델을 쉽게 정렬할 수 있습니다. 또는 여러 실험을 선택하여 직접 비교할 수도 있습니다!

하이퍼파라미터 최적화 및 원격 실행과 같이 이 모든 정보를 사용하여 수행할 수 있는 작업이 훨씬 더 많습니다. 작동 방식을 알고 싶다면 계속 읽어보세요!

🔗 데이터세트 버전 관리

코드와 별도로 데이터를 버전 관리하는 것은 일반적으로 좋은 방법이며 최신 버전을 쉽게 얻을 수 있습니다. 이 리포지토리는 데이터 세트 버전 ID 제공을 지원하며, 아직 없는 경우 데이터를 가져오도록 합니다. 또한 이 워크플로는 사용된 데이터 세트 ID를 작업 파라미터의 일부로 저장하므로 어떤 데이터가 어떤 실험에 사용되었는지 항상 확실하게 알 수 있습니다!

ClearML 데이터세트 인터페이스

데이터 세트 준비

YOLOv5 저장소는 정보를 담고 있는 YAML 파일을 사용하여 다양한 데이터 세트를 지원합니다. 기본적으로 데이터 세트는 다음 위치에 다운로드됩니다. ../datasets 폴더는 저장소 루트 폴더와 관련됩니다. 따라서 다운로드한 경우 coco128 YAML의 링크 또는 yolov5에서 제공하는 스크립트를 사용하여 데이터 세트를 사용하는 경우 다음 폴더 구조를 얻게 됩니다.

..
|_ 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.txt

데이터세트 업로드

이 데이터 세트를 버전 관리된 데이터 세트로 ClearML에 가져오려면 데이터 세트 루트 폴더로 이동하여 다음 명령을 실행합니다.

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

명령어 clearml-data sync 실제로는 축약 명령입니다. 다음 명령을 차례대로 실행할 수도 있습니다.

# Optionally add --parent <parent_dataset_id> 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 close

ClearML 데이터 세트를 사용하여 훈련 실행

이제 ClearML 데이터 세트가 있으므로 매우 간단하게 사용자 정의 YOLOv5 🚀 모델을 훈련할 수 있습니다!

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


👀 하이퍼파라미터 최적화

이제 실험과 데이터 버전을 관리하므로 이를 기반으로 무엇을 구축할 수 있는지 살펴볼 차례입니다!

코드 정보, 설치된 패키지 및 환경 세부 정보를 사용하여 실험 자체를 이제 완벽하게 재현할 수 있습니다. 실제로 ClearML을 사용하면 실험을 복제하고 매개변수를 변경할 수도 있습니다. 그런 다음 이러한 새로운 매개변수로 자동으로 다시 실행할 수 있습니다. 이것이 기본적으로 HPO가 하는 것입니다!

로컬에서 하이퍼파라미터 최적화를 실행하기 위해 미리 만들어진 스크립트가 포함되어 있습니다. ClearML 실험 관리자에 훈련 작업이 한 번 이상 실행되었는지 확인하기만 하면 기본적으로 복제하여 하이퍼파라미터를 변경합니다.

이 ID를 입력해야 합니다. template task 스크립트에서 찾을 수 있습니다. utils/loggers/clearml/hpo.py 다음에 실행하기만 하면 됩니다. 다음을 변경할 수 있습니다. 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.py

HPO

🤯 원격 실행(고급)

로컬에서 HPO를 실행하는 것은 매우 편리하지만, 실험을 원격 시스템에서 실행하고 싶다면 어떻게 해야 할까요? 아마도 현장에 매우 강력한 GPU 시스템에 접근할 수 있거나 클라우드 GPU를 사용할 예산이 있을 수 있습니다. 이럴 때 ClearML 에이전트가 필요합니다. 에이전트가 할 수 있는 일은 다음에서 확인하십시오.

요약하자면, 실험 관리자가 추적하는 모든 실험에는 다른 시스템에서 재현할 수 있는 충분한 정보(설치된 패키지, 커밋되지 않은 변경 사항 등)가 포함되어 있습니다. ClearML 에이전트는 들어오는 작업을 큐에서 수신하고 작업을 찾으면 환경을 재구성하고 스칼라, 플롯 등을 실험 관리자에게 계속 보고하면서 실행합니다.

다음 명령을 실행하기만 하면 모든 머신(클라우드 VM, 로컬 GPU 머신, 개인 랩톱 등)을 ClearML 에이전트로 전환할 수 있습니다.

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

복제, 편집 및 대기열 등록

에이전트가 실행 중인 상태에서 작업을 제공할 수 있습니다. HPO 섹션에서 작업을 복제하고 하이퍼파라미터를 편집할 수 있다고 언급했었죠? 인터페이스에서도 그렇게 할 수 있습니다!

🪄 실험을 마우스 오른쪽 버튼으로 클릭하여 복제합니다.

🎯 원하는 대로 하이퍼파라미터를 편집합니다.

⏳ 작업을 마우스 오른쪽 버튼으로 클릭하여 대기열에 넣습니다.

UI에서 작업 대기열에 추가

원격으로 작업 실행하기

이제 위에서 설명한 것처럼 작업을 복제하거나 다음을 추가하여 현재 스크립트를 간단히 표시할 수 있습니다. 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에는 autoscaler도 함께 제공됩니다! 이 도구는 선택한 클라우드(AWS, GCP, Azure)에서 새로운 원격 머신을 자동으로 가동하고 대기열에서 실험이 감지될 때마다 해당 머신을 ClearML 에이전트로 전환합니다. 작업이 처리되면 autoscaler는 원격 머신을 자동으로 종료하므로 비용 지불이 중단됩니다!

아래에서 오토스케일러 시작하기 비디오를 확인하십시오.

비디오 시청하기

더 알아보기

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



📅 1년 전에 생성됨 ✏️ 4개월 전에 업데이트됨

댓글