
학습 파이프라인 최적화를 통해 36 steps/minute에서 47 steps/minute로 개선하며 얻은 교훈
요약
디스크 저장 방식 최적화를 통해 ML 모델 학습 파이프라인의 속도를 약 30% 개선한 사례를 공유합니다. 작은 파일들을 TAR나 WebDataset 같은 블롭(blobs) 형태로 묶어 순차적 읽기를 유도함으로써 HDD의 성능 한계를 극복하는 방법을 다룹니다.
핵심 포인트
- 데이터셋을 압축된 블롭(blobs)으로 묶어 순차적 디스크 읽기 유도
- HDD 환경에서 무작위 접근을 줄여 CPU 사이클 및 시간 절약
- 이미 압축된 파일(예: FLAC)은 추가 압축 없이 저장하여 오버헤드 방지
- 대규모 학습 시 네트워크 스토리지를 활용한 데이터 관리 효율화
저는 디스크 저장 방식을 최적화함으로써 ML 모델 학습 파이프라인을 36 steps/minute에서 47 steps/minute로 개선했습니다. 소비자용 하드웨어에서 더 큰 ML 모델을 학습할 때는 많은 제약 사항이 따릅니다. 그중 하나는 저장 장치(storage devices)의 가용성과 성능입니다. 누구나 시스템에 NVMe 드라이브를 갖추고 싶어 하겠지만, 이는 비용이 많이 들며 SATA 하드 디스크 드라이브(HDD)는 매우 느립니다. 특히 오디오, 이미지, 비디오에서 흔히 볼 수 있듯이 데이터셋이 수많은 작은 파일들로 구성되어 있다면 더욱 그렇습니다. HDD에 데이터셋을 저장하는 것을 최적화하기 위해, 우리는 파일들을 압축된 블롭(blobs)으로 묶어 저장 디스크에 순차적으로 저장할 수 있습니다. 물리적으로 이는 하드 드라이브가 무작위 위치를 찾을 필요 없이 하나의 시퀀스만 계속해서 읽을 수 있음을 의미하며, 이를 통해 시간과 CPU 사이클을 절약할 수 있습니다. 우리는 학습을 시작하기 전에 이 작업을 수행할 수 있습니다. 즉, 데이터셋을 반복 탐색하며 특정 크기(예: 1GB)의 파일 배치를 선택하고, 이를 TAR, Parquet 또는 WebDataset과 같은 압축된 블롭으로 묶는 것입니다. 만약 파일들이 이미 압축되어 있다면, 압축 및 압축 해제 과정에 오버헤드(overhead)가 발생하므로 압축하지 않은 상태로 저장할 수도 있습니다. 예를 들어, FLAC은 이미 오디오를 위한 압축 형식입니다. 이러한 변화만으로도 저의 학습 파이프라인 속도를 36에서 47 steps/min으로 높였으며, 이는 약 30%의 상당한 향상입니다. 실험실에서 자원을 공유하고 있었기 때문에 모든 데이터를 하드 디스크에 저장해야만 했기 때문입니다. 제가 수행한 최적화는 이것이 전부입니다. 덧붙이자면, 초거대 규모의 모델 학습은 데이터셋을 장치에 저장하는 사치조차 누릴 수 없습니다. 데이터셋이 너무 크기 때문입니다. 그들은 일반적으로 GPU가 호스팅되는 것과 동일한 데이터 센터에 위치한 네트워크 스토리지 블록(network storage blocks)에 의존해야 합니다. Runpod에는 이 주제와 관련된 좋은 블로그 글들이 있습니다. 저는 Runpod에서 학습을 하고 싶었을 때 이 내용을 접하게 되었고, GPU를 사용하는 매 초마다 비용이 청구된다는 것을 알게 되었습니다. 주의할 점은 실제로 GPU를 사용하기 전에 데이터셋을 가져와야 한다는 것입니다. 따라서 데이터셋이나 학습 실행(training run) 규모가 상당히 작다면, GPU를 구동할 때마다 데이터셋을 매번 다운로드할 수 있습니다.
하지만 데이터셋이 크다면, 그다음으로 좋은 해결책은 지속적으로 유지되는 네트워크 스토리지 (network storage)입니다. 네트워크 스토리지는 새로 생성하는 어떤 머신(machine)에도 바로 연결할 수 있으며, 데이터가 그곳에 그대로 존재하게 됩니다. /u/Ok_Construction_3021 제출 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기