INCL과 스팟 인스턴스
Warning
Over a year old. May be outdated
정보
Lunit 기술 블로그 글을 빠르게 공유하려고 번역하고 줄인 글입니다.
INCL을 배포하고 나서 GPU 사용량이 확 늘었다. 효율은 증명됐는데 비용 압박이 커져서, 스팟 인스턴스로 비용을 줄이는 게 필수가 됐다.
스팟 인스턴스가 뭔데
스팟 인스턴스는 클라우드에 남는 계산 자원을 온디맨드보다 60~91% 싸게 파는 것이다. 대신 수요가 몰리면 언제든 종료될 수 있어서 가용성은 보장되지 않는다. 멈췄다가 다시 이어 가기 쉬운 딥러닝 작업에 잘 맞는데, 선점(대충 클라우드가 인스턴스를 도로 가져간다는 말이다)되고 나서 복구하는 과정이 복잡하다.
INCL은 스팟 인스턴스를 이렇게 쓴다
INCL은 선점을 감지하면 학습을 알아서 이어서 돌린다. 사람이 손댈 일이 없다.
- 선점 감지. 수요가 몰리면 클라우드가 인스턴스 종료를 시작한다.
- 종료 보고. VM의 셧다운 스크립트가 선점됐다고 백엔드에 알린다.
- 인스턴스 유형 결정. 선점률과 정책을 보고 새 스팟을 띄울지 온디맨드를 띄울지 고른다.
- 재프로비저닝. 고른 유형으로 VM을 다시 만들고, 기존 부트 디스크를 그대로 쓴다.
- 작업 재개. 체크포인트를 복원할 필요 없이 바로 학습을 이어 간다.
- 정리. 끝나면 필요 없어진 디스크를 INCL이 알아서 지운다.
근데 쉽지만은 않다
스팟 인스턴스로 비용은 줄지만, 선점이 끝없이 반복되는 문제와 분산 학습 복구가 까다롭다.
선점 무한 루프 막기
INCL은 기본으로 스팟을 쓰다가 선점이 계속 반복되면 온디맨드로 갈아탄다. 언제 갈아탈지는 과거 선점 이력 데이터를 보고 정하고, 선점 패턴이 계속 바뀌니까 정책도 계속 업데이트한다.
분산 학습에서 멀티 노드 학습 재개
마스터든 자식 노드든 하나라도 선점되면, INCL이 새 노드를 바로 띄우고 주소를 갱신해서 전체 노드의 학습을 자동으로 다시 시작한다. 여러 노드가 동시에 선점돼도 복구 순서를 맞춰서 중단 시간을 최소로 줄인다.
Backlinks3
250521INCL의 구성INCL이란