콘텐츠로 건너뛰기

ClearML 통합

지우기|ML지우기|ML

정보 ClearML

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

🔨 실험 관리자에서 모든 YOLOv5 교육 실행을 추적하세요.

🔧 통합된 ClearML 데이터 버전 관리 도구로 사용자 지정 교육 데이터를 버전 관리하고 쉽게 액세스하세요.

ClearML 에이전트를 사용하여 YOLOv5 트레이닝 실행을 원격으로 훈련하고 모니터링합니다.

ClearML 하이퍼파라미터 최적화를 사용하여 최상의 맵을 얻으세요.

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


그리고 훨씬 더 많습니다. 이러한 도구 중 몇 개를 사용할지는 실험 관리자만 사용할 수도 있고, 모두 함께 연결하여 인상적인 파이프라인으로 만들 수도 있습니다!

ClearML 스칼라 대시보드



🦾 설정하기

실험 및/또는 데이터를 추적하려면 ClearML 서버와 통신해야 합니다. 이를 위한 두 가지 옵션이 있습니다:

ClearML 호스팅 서비스에 무료로 가입하거나 여기를 참조하여 직접 서버를 설정할 수 있습니다. 서버도 오픈 소스이므로 민감한 데이터를 다루는 경우에도 안심하고 사용할 수 있습니다!

  • 설치 clearml python 패키지입니다:

    pip install clearml
    
  • 자격 증명을 생성하여 ClearML SDK를 서버에 연결한 다음(오른쪽 상단에서 설정 -> 워크스페이스 -> 새 자격 증명 생성으로 이동) 아래 명령을 실행하고 지침을 따릅니다:

    clearml-init
    

끝났습니다! 완료되었습니다 😎


🚀 교육 YOLOv5 함께 ClearML

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 에포크마다 체크포인트를 저장합니다.)
  • 콘솔 출력
  • 스칼라(mAP_0.5, mAP_0.5:0.95, 정밀도, 리콜, 손실, 학습률, ...)
  • 머신 세부 정보, 런타임, 생성 날짜 등과 같은 일반 정보를 제공합니다.
  • 라벨 상관도 및 혼동 행렬과 같은 모든 생성된 플롯
  • 시대별 경계 상자가 있는 이미지
  • 시대별 모자이크
  • 시대별 유효성 검사 이미지

많이 많죠? 이제 ClearML UI에서 이 모든 정보를 시각화하여 훈련 진행 상황을 한눈에 파악할 수 있습니다. 테이블 보기에 사용자 지정 열(예: mAP_0.5)을 추가하여 가장 성과가 좋은 모델을 쉽게 정렬할 수 있습니다. 또는 여러 실험을 선택하여 직접 비교할 수도 있습니다!

하이퍼파라미터 최적화 및 원격 실행과 같이 이 모든 정보로 할 수 있는 일이 훨씬 더 많으니 그 방법을 알고 싶다면 계속 읽어보세요!

🔗 데이터 세트 버전 관리

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

ClearML 데이터 세트 인터페이스

데이터 집합 준비

YOLOv5 리포지토리는 해당 정보가 포함된 YAML 파일을 사용하여 다양한 데이터 집합을 지원합니다. 기본적으로 데이터 세트는 다음 주소로 다운로드됩니다. ../datasets 폴더를 리포지토리 루트 폴더에 연결합니다. 따라서 coco128 데이터 집합에 대한 링크를 사용하거나 yolov5 에서 제공하는 스크립트를 사용하면 이 폴더 구조를 얻을 수 있습니다:

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

하지만 원하는 데이터 세트는 무엇이든 상관없습니다. 이 폴더 구조를 지키기만 한다면 자유롭게 사용해도 됩니다.

그런 다음,해당 YAML 파일을 folder⚠️ 데이터 집합의 루트에 ⚠️copy 업로드합니다.이 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 에이전트는 수신 대기열에서 들어오는 작업을 기다리다가 작업을 발견하면 환경을 재현하고 실행하면서 스칼라, 플롯 등을 실험 관리자에게 보고합니다.

클라우드 가상 머신, 로컬 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 오토스케일러도 함께 제공됩니다! 이 도구는 대기열에서 실험이 감지될 때마다 선택한 클라우드(AWS, GCP, Azure)에서 새 원격 머신을 자동으로 스핀업하고 이를 ClearML 에이전트로 전환합니다. 작업이 처리되면 오토스케일러가 원격 머신을 자동으로 종료하고 사용자는 비용을 지불하지 않아도 됩니다!

아래에서 오토스케일러 시작하기 동영상을 확인하세요.

동영상 보기

자세히 알아보기

ClearML Ultralytics 모델과 통합하는 방법에 대한 자세한 내용은 ClearML 통합 가이드를 참조하고 다른 실험 추적 도구로 MLOps 워크플로우를 개선하는 방법을 살펴보세요.

📅1 년 전 생성됨 ✏️ 업데이트됨 6 일 전

댓글