INCL이란
빠른 공유를 위한 번역, 축약본입니다. 원본
Lunit은 매일 수많은 딥러닝 모델을 학습한다. 초기에는 온프레미스 서버를 사용했지만 잦은 문제에 직면했다. 연구팀 규모가 커지자 학습 인프라를 클라우드로 이전했으나, 수많은 수동 작업 때문에 시간과 오류가 증가했다. 이를 해결하고 클라우드 컴퓨팅의 이점을 극대화하기 위해 Lunit은 딥러닝 학습 플랫폼 INtelligent CLoud(INCL)를 구축했다. INCL은 필요한 자원을 자동으로 제공하고 반복 작업을 제거하여 연구원이 모델과 알고리즘 개발에 집중할 수 있도록 했다.
왜 클라우드로 마이그레이션했는가
- 확장성. 온프레미스 서버는 확장이 어렵다. 팀원 수가 늘면 자원 수요가 증가하고, 마감이 다가오면 학습 수요가 급증한다. 새 하드웨어 구매에는 비용, 시간이 많이 들며, 필요한 용량 예측도 어려워 과소, 과대 투자 위험이 있다.
- 하드웨어. 서버 노후화로 GPU 장애가 빈번하다. 구식 GPU는 성능 저하나 고장으로 이어져 다운타임과 유지비를 높인다.
클라우드 전환으로 초기 투자 없이 사용량 기반 과금으로 강력한 GPU를 즉시 확보하고, 필요 시 자원을 무제한에 가깝게 확장할 수 있다.
새로운 과제
클라우드는 온프레미스 대비 이점이 크지만, 모델 학습에는 여전히 수작업이 과다하다. 딥러닝 학습의 일반적 절차:
- 가상 머신 생성
- 학습 환경 설정(데이터, 코드)
- 모델 학습
- 출력물을 클라우드 스토리지에 저장
- 가상 머신 삭제
단일 모델은 관리 가능하지만, 수백 개면 수작업이 폭증한다. 클라우드 학습 과정에서 추가로 맞닥뜨리는 과제:
- 실험 결과 관리
- 로그 모니터링
- 오류 처리
- 다중 노드 분산 학습 인프라 확장
이 수작업은 시간 낭비와 오류를 유발한다. 자동화와 부가 기능이 결합된 효율적 솔루션이 요구되었다. Spotty 등 오픈 소스 플랫폼이 있었지만, 핵심 기능이 결여됐다. 대부분 스토리지만 지원해 의료 이미지 처리 속도가 느렸고 학습 병목이 발생했다. 다중 노드 분산 학습도 지원이 부족했다. 우리는 GPU 할당량 관리, 낮은 GPU 활용도 감지, 팀 협업 기능까지 필요했으나 대다수 플랫폼이 이를 제공하지 못했다. 결국 자체 딥러닝 학습 플랫폼 INtelligent CLoud(INCL)를 구축했다.
INtelligent CLoud (INCL) 플랫폼
그럼 INCL은 무엇을 하는가?
수동 프로세스 자동화
INCL은 클라우드에서 딥러닝 모델 학습을 최소 노력으로 수행하도록 설계되었다. 학습 관련 수작업을 자동화해 연구원이 모델과 알고리즘 개발에 집중할 수 있게 한다. 실험에 필요한 것은 스크립트, 도커 이미지, 인스턴스 정보 지정뿐이며 나머지는 INCL이 처리한다. 작업 디렉터리 코드를 업로드하고 인스턴스를 기동해 환경을 구성한 뒤 실험을 자동으로 실행한다. 실행 중 발생하는 오류도 자체 처리해 연구원이 본연의 연구에만 시간을 투입할 수 있다.
실험 추적 및 관리
복잡한 딥러닝 프로젝트에서는 실험 추적과 관리가 필수다. 전용 시스템 없이는 실험 상태, 구성, 진행 상황을 체계적으로 파악하기 어렵다. INCL은 CLI와 웹 UI로 접근 가능한 통합 추적, 관리 시스템을 제공한다. 시스템은 실험 상태와 구성을 작업 목록으로 제시하고 로그를 실시간 스트리밍한다. 결과는 자동 저장되며 언제든 다운로드, 공유 가능하다. 진행 상황과 상태 변화는 실시간으로 갱신되고 Slack 알림으로 통보된다. 실시간 메트릭 시각화로 손실, 정확도 등 사용자 정의 지표를 모니터링해 모델 성능을 즉시 평가하고 조정할 수 있다. 모델 레지스트리는 등록, 메타데이터 추가, 버전 추적을 지원해 전체 수명주기를 관리하고 프로덕션 배포를 단순화한다.
다중 노드 분산 학습
대규모 데이터셋과 복잡한 모델을 다룰 때 학습 시간을 단축하려면 다중 노드 분산 학습이 필수다. 계산을 여러 노드로 분산해 병렬 처리를 극대화하면 배치 크기를 확장하고 대량 데이터를 효율적으로 처리할 수 있다. INCL은 노드 수만 지정하면 분산 학습에 필요한 인프라를 자동으로 프로비저닝하고 환경 변수를 설정한다. 실행 스크립트는 이 변수만 받아 사용하면 된다.
자동화된 하이퍼파라미터 최적화
수동 하이퍼파라미터 튜닝은 시간이 많이 든다. INCL은 Tree-structured Parzen Estimator(TPE)를 개선한 자체 알고리즘으로 하이퍼파라미터 최적화를 전면 자동화했다. 하이퍼파라미터 평가를 여러 노드에 분산해 탐색 속도를 높이고, 연구원은 최적화 대상 메트릭을 incl.log
로 기록하기만 하면 된다. 구성 파일에 정의한 이름과 동일하게 환경 변수로 주입된 값이 자동 검색 범위를 형성해 최소한의 코드 수정만으로 병렬 HPO를 활용할 수 있다.