μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°

ClearML 톡합

μ§€μš°κΈ°|MLμ§€μš°κΈ°|ML

정보 ClearML

ClearML λŠ” μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆλ„λ‘ μ„€κ³„λœ μ˜€ν”ˆμ†ŒμŠ€ 도ꡬ μƒμž ⏱️.

πŸ”¨ μ‹€ν—˜ κ΄€λ¦¬μžμ—μ„œ λͺ¨λ“  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>=1.2.0

μ΄λ ‡κ²Œ ν•˜λ©΄ 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 μ—μ΄μ „νŠΈλ‘œ μ „ν™˜ν•©λ‹ˆλ‹€. μž‘μ—…μ΄ 처리되면 μ˜€ν† μŠ€μΌ€μΌλŸ¬κ°€ 원격 머신을 μžλ™μœΌλ‘œ μ’…λ£Œν•˜κ³  μš”κΈˆ μ§€λΆˆμ€ μ€‘λ‹¨λ©λ‹ˆλ‹€!

μ•„λž˜μ—μ„œ μ˜€ν† μŠ€μΌ€μΌλŸ¬ μ‹œμž‘ν•˜κΈ° λ™μ˜μƒμ„ ν™•μΈν•˜μ„Έμš”.

λ™μ˜μƒ 보기



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (7), RizwanMunawar (1)

λŒ“κΈ€