[논문 리뷰] Profile-guided memory optimization for deep neural networks
이 논문은 단일 순방향 전파를 프로파일링하여 유도된 빠른 히우리스틱 기반 메모리 할당 전략을 통해 최대 49.5%까지 피크 메모리 사용량을 줄이는 프로파일 기반 메모리 최적화 기법을 제안한다. 이 방법은 동적 메모리 할당의 성능 오버헤드를 피함으로써 훈련 및 추론을 최대 4배 빠르게 하며, 프로파일링 이후 런타임 성능 오버헤드가 없다.
Recent years have seen deep neural networks (DNNs) becoming wider and deeper to achieve better performance in many applications of AI. Such DNNs however require huge amounts of memory to store weights and intermediate results (e.g., activations, feature maps, etc.) in propagation. This requirement makes it difficult to run the DNNs on devices with limited, hard-to-extend memory, degrades the running time performance, and restricts the design of network models. We address this challenge by developing a novel profile-guided memory optimization to efficiently and quickly allocate memory blocks during the propagation in DNNs. The optimization utilizes a simple and fast heuristic algorithm based on the two-dimensional rectangle packing problem. Experimenting with well-known neural network models, we confirm that our method not only reduces the memory consumption by up to $49.5\%$ but also accelerates training and inference by up to a factor of four thanks to the rapidity of the memory allocation and the ability to use larger mini-batch sizes.
연구 동기 및 목표
- 딥 뉴럴 네트워크(DNNs)의 훈련 및 추론 과정에서 높은 메모리 소비 문제를 해결하기 위해, 특히 GPU 및 엣지 시스템과 같은 메모리 제약이 있는 장치에서의 성능을 향상시키기 위함이다.
- 모델 계산을 변경하지 않고도 DNN의 피크 메모리 사용량을 줄여 더 큰 미니배치 크기와 향상된 GPU 활용도를 가능하게 하기 위함이다.
- 딥 러닝 프레임워크에서의 동적 메모리 할당의 성능 오버헤드를 피할 수 있는 빠르고 프로파일 기반의 메모리 할당 기법을 개발하기 위함이다.
- 입력 길이가 변하는 모델(예: RNN)에 대해서도 효율적인 메모리 관리를 가능하게 하기 위해 피드포워드 네트워크(CNN 등)와 순환 네트워크(seq2seq 등) 모두에 적용 가능한 방법을 개발하기 위함이다.
제안 방법
- DNN의 단일 순방향 전파 동안 메모리 사용량을 프로파일링하여 '핫'한 계산 경로의 메모리 액세스 패턴을 캡처한다.
- 피크 메모리 사용량을 최소화하기 위해 메모리 할당 문제를 2차원 직사각형 정렬 문제로 수식화한다.
- 근사 최적의 메모리 블록 할당을 효율적으로 생성하기 위해 단순하고 빠른 히우리스틱 알고리즘을 개발한다.
- 프로파일에서 사전 계산하고 캐시한 메모리 주소를 통해 후속 실행에서 상수 시간 메모리 액세스를 가능하게 한다.
- 이 방법은 Chainer 딥 러닝 프레임워크에 통합되었으며, 다른 프레임워크와도 호환된다.
- 변형된 길이의 시퀀스(예: RNN에서의 입력)에 대해서는 필요에 따라 할당을 재계산하여 사용하지 않는 블록으로 인한 메모리 팽창을 방지한다.
실험 결과
연구 질문
- RQ1프로파일 기반 메모리 할당이 런타임 오버헤드 없이 딥 뉴럴 네트워크의 피크 메모리 사용량을 크게 줄일 수 있는가?
- RQ22차원 직사각형 정렬 문제에 대해 빠른 히우리스틱 기반 접근 방식이 DNN의 메모리 소비를 최소화하는 데 얼마나 효과적인가?
- RQ3메모리 절감이 훈련 과정에서 더 큰 미니배치 크기와 GPU 활용도 향상에 얼마나 기여하는가?
- RQ4프로파일링 계산 비용이 있음에도 불구하고, 이 방법이 추론 속도를 유지하거나 향상시키는가?
- RQ5이 방법이 RNN과 같이 입력 길이가 변하는 모델에서 어떻게 성능을 내는가?
주요 결과
- ResNet-50 및 Inception-ResNet에서 피크 메모리 사용량을 최대 49.5%까지 줄였으며, GoogLeNet과 ResNet-50의 추론 과정에서 각각 12.6%와 10.0%의 감소를 기록했다.
- 더 큰 미니배치 크기로 인한 더 높은 GPU 활용도와 더 빠른 메모리 할당 덕분에 훈련 속도가 최대 4배 빨라졌다.
- seq2seq 모델에서 메모리 할당 비용 감소와 더 나은 메모리 재사용 덕분에 추론 속도가 최대 23.8% 향상되었다.
- 히우리스틱 알고리즘이 매우 빠르게 실행되어 대부분의 모델에서 실행 시간이 1초 이내로 실용적으로 활용 가능했다.
- 메모리 풀 기반 메모리 관리 방식에 비해 RNN에서 메모리 풀의 분할 문제를 피하고 메모리 할당/해제가 줄어들어 성능이 뛰어나졌다.
- 128 및 256 미니배치 크기에서 최적화된 버전에서 원본 Chainer보다 훈련 속도가 더 빨랐다. 이는 메모리 할당 오버헤드 감소 덕분이었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.