[논문 리뷰] Efficient Memory Management for GPU-based Deep Learning Systems
이 논문은 딥러닝 훈련을 위한 투명하고 시스템 수준의 GPU 메모리 최적화 기법인 SmartPool와 AutoSwap을 제안한다. SmartPool는 히우리스틱 알고리즘을 사용한 수명 주기 인식 할당을 통해 메모리 블록의 분할을 줄여, NVIDIA의 CnMem 대비 최대 13.3%까지 메모리 사용량을 감소시킨다. AutoSwap는 액세스 패턴을 기반으로 비활성 변수를 GPU와 CPU 메모리 간에 동적으로 이동시켜, 통신 오버헤드가 없이도 최대 34.2%까지 메모리 사용량을 줄이며, 이 두 기법을 조합하면 정확도 손실 없이 다양한 모델과 워크로드에서 스케일링이 가능하다. 사용자 개입 없이도 자동으로 작동한다.
GPU (graphics processing unit) has been used for many data-intensive applications. Among them, deep learning systems are one of the most important consumer systems for GPU nowadays. As deep learning applications impose deeper and larger models in order to achieve higher accuracy, memory management becomes an important research topic for deep learning systems, given that GPU has limited memory size. Many approaches have been proposed towards this issue, e.g., model compression and memory swapping. However, they either degrade the model accuracy or require a lot of manual intervention. In this paper, we propose two orthogonal approaches to reduce the memory cost from the system perspective. Our approaches are transparent to the models, and thus do not affect the model accuracy. They are achieved by exploiting the iterative nature of the training algorithm of deep learning to derive the lifetime and read/write order of all variables. With the lifetime semantics, we are able to implement a memory pool with minimal fragments. However, the optimization problem is NP-complete. We propose a heuristic algorithm that reduces up to 13.3% of memory compared with Nvidia's default memory pool with equal time complexity. With the read/write semantics, the variables that are not in use can be swapped out from GPU to CPU to reduce the memory footprint. We propose multiple swapping strategies to automatically decide which variable to swap and when to swap out (in), which reduces the memory cost by up to 34.2% without communication overhead.
연구 동기 및 목표
- 제한된 GPU 메모리에도 불구하고 점점 더 크고 깊어지는 모델로 인해 증가하는 메모리 압박을 해결하기 위해.
- 모델 압축(정확도 손실)이나 수동 메모리 스위apping(높은 오버헤드, 전문 지식 필요) 등의 기존 접근법의 한계를 극복하기 위해.
- 모델 구조나 훈련 알고리즘을 변경하지 않는, 자동화되고 투명하며 시스템 수준의 메모리 최적화 기법을 개발하기 위해.
- 성능나 정확도 손실 없이 다양한 DNN 아키텍처, 배치 크기, 메모리 제약 조건에서도 효율적인 메모리 사용을 가능하게 하기 위해.
- 다양한 딥러닝 워크로드에 걸쳐 스케일링 가능한 통합적이고 확장 가능한 메모리 최적화 프레임워크를 제공하기 위해.
제안 방법
- 수명 주기가 겹치지 않는 변수들을 같은 영역에 할당하여 GPU 메모리 공간을 재사용하는 메모리 풀인 SmartPool를 제안한다. 이를 통해 분할을 최소화한다.
- NP-완전 문제인 메모리 할당 문제를 효율적으로 해결하기 위해 히우리스틱 알고리즘을 설계하여, 기준 대비 동일한 시간 복잡도로 근사 최적의 할당을 달성한다.
- DNN의 역전파 과정에서의 읽기/쓰기 액세스 패턴을 분석하여, 훈련 반복 중 일부 시점에서 비활성화되는 변수를 식별한다.
- 사용되지 않는 변수를 GPU에서 CPU 메모리로 이동시키고 재사용 전에 복원하는 자동 메모리 스위핑 메커니즘인 AutoSwap을 구현한다.
- 통신 및 동기화 오버헤드를 최소화하면서도 메모리 절약을 극대화하는 스위핑을 위한 다수의 스케줄링 전략을 개발한다.
- 두 기법을 통합된 추상화 아래에 통합하여 런타임에 변수 수명 주기와 액세스 순서 정보를 수집함으로써 투명한 최적화를 가능하게 한다.
실험 결과
연구 질문
- RQ1모델 구조나 훈련 알고리즘을 변경하지 않고도 딥러닝 훈련에서 GPU 메모리 사용량을 줄일 수 있는가?
- RQ2변수의 수명 주기 정보를 활용해 GPU 메모리 풀의 메모리 분할을 최소화할 수 있는가?
- RQ3자동으로 비활성 변수를 CPU 메모리로 스위핑하여 GPU 메모리 사용량을 줄일 수 있는가?
- RQ4GPU-CPU 메모리 스위핑에서 통신 오버헤드를 최소화하면서도 메모리 절약을 극대화할 수 있는 스케줄링 전략은 무엇인가?
- RQ5제안된 기법들이 다양한 DNN 아키텍처, 배치 크기, 메모리 제약 조건에서 어떻게 스케일링되는가?
주요 결과
- SmartPool는 NVIDIA의 기본 CnMem 메모리 풀 대비 동일한 시간 복잡도를 유지하면서도 최대 13.3%까지 GPU 메모리 사용량을 줄였다.
- AutoSwap는 측정 가능한 통신 오버헤드 없이도 GPU 메모리 사용량을 최대 34.2%까지 줄였다.
- SmartPool와 AutoSwap의 조합은 VGG와 ResNet을 포함한 다양한 모델에서 뚜렷한 메모리 절약 효과를 보였으며, 성능 영향은 최소한이었다.
- 이 방법은 사용자에게 완전히 투명하며 수동 설정이나 모델 전용 지식이 필요하지 않다.
- 이 방법은 네트워크 깊이, 배치 크기, 메모리 부하 한계에 관계없이 효과적으로 스케일링되며, MXNet-memonger나 SuperNeurons와 같은 기존 도구보다 메모리 절감과 오버헤드 제어 면에서 뛰어나다.
- GeePS와 비교했을 때, 제안된 방법은 더 큰 메모리 절감 효과를 달성하면서도 낮은 오버헤드를 유지하고, 수동 레이어/텐서 선택이 필요 없어졌다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.