AI/DL

효율적인 MLOps를 가능케 하는 ClearML

민사민서 2024. 8. 29. 15:07

💡What’s ClearML

머신러닝 관련 업무들을 생성하고 자동화, 관리해주는 플랫폼 (실험/모델/데이터)

For ML Engineers

  • 학습 메트릭, 모델을 추적 및 업로드/다운로드
  • 실험 재현
  • 데이터 업로드/다운로드, 버전관리

For DevOps Engineers

  • Cloud/On-premise 상관없이 원격에 있는 리소스를 누구든지 쉽게 사용할 수 있도록 구성
    • clearml-agent

그래서 왜쓰냐? (사수님 왈)

  • remote execution 가능 (clearML server 존재할 때)
  • ckpt들을 클라우드에 자유롭게 업로드/다운로드 가능
  • queue에 넣어두고 자동으로 빈 gpu 사용하도록 할 수 있어서 편함
  • hparams를 자동으로 optimize

내가 쓰면서 느낀거

  • metric 등을 추가하고 손쉽게 시각화할 수 있음
  • 원격 서버들의 도커 내에서 실행시키고 까먹으면 됨 ("딸깍")
  • hyperparameter optimization도 해보았지만 제대로 한 진 모르겠음.. 쨌든 지스스로 abort하고 다른 거 시도해가면서 다양한 param 조합을 시도해보는게 신기했음

💡Document

https://clear.ml/docs/latest/docs/clearml_serving/clearml_serving_setup/#initial-setup

https://clear.ml/docs/latest/docs/clearml_serving/clearml_serving_tutorial/

https://clear.ml/docs/latest/docs/clearml_data/data_management_examples/data_man_cifar_classification/

💡간단히 ClearML 사용해보기

pip install clearml

가상환경에 설치

clearml-init

한 후 발급받은 clearml app credentials 입력

from clearml import Task

...

task = Task.init(project_name='great project', task_name='best experiment')

initialize the Task object in your main() function, or the beginning of the script

⇒ 이러면 일단 scalar 이런 거 잘 뜸

 

from clearml import Logger

logger = Logger.current_logger()
logger.report_text("Start!", level=logging.DEBUG, print_console=False)

logger.report_scalar(title="scalar metrics", series="series", value=scalar_series[iter], iteration=iter)
logger.report_text(f"scalar metric: {scalar_series[iter]}", level=logging.DEBUG, print_console=False)

scalar 탭에 로그를 찍거나 / 콘솔에 로그를 찍거나

 

TROUBLESHOOT

  • scalar 탭에 안 뜨는 문제
    • 원래 self.log() 하면 자동으로 로깅되어야 하나
    • train.yaml 에서 self 가 맨 위에 있으면 yaml에 지정된 속성들이 기본 속성을 전부 override 하여 안 뜨는 문제가 발생했었음, 아래로 옮겨서 해결함