[논문 리뷰] Nimble: Efficiently Compiling Dynamic Neural Networks for Model Inference
Nimble는 동적 신경망의 고성능 이식성 추론을 가능하게 하는 새로운 딥러닝 컴파일러입니다. 제어 흐름, 동적 크기, 가변 데이터 구조를 지원하며, 동적 타입 시스템, 크기 인지 최적화, 경량 가상 머신 런타임을 도입함으로써 이를 실현합니다. 이는 CPU, GPU, ARM 플랫폼에서 기존 솔루션 대비 최대 20×의 성능 향상을 달성합니다.
Modern deep neural networks increasingly make use of features such as dynamic control flow, data structures and dynamic tensor shapes. Existing deep learning systems focus on optimizing and executing static neural networks which assume a pre-determined model architecture and input data shapes--assumptions which are violated by dynamic neural networks. Therefore, executing dynamic models with deep learning systems is currently both inflexible and sub-optimal, if not impossible. Optimizing dynamic neural networks is more challenging than static neural networks; optimizations must consider all possible execution paths and tensor shapes. This paper proposes Nimble, a high-performance and flexible system to optimize, compile, and execute dynamic neural networks on multiple platforms. Nimble handles model dynamism by introducing a dynamic type system, a set of dynamism-oriented optimizations, and a light-weight virtual machine runtime. Our evaluation demonstrates that Nimble outperforms state-of-the-art deep learning frameworks and runtime systems for dynamic neural networks by up to 20x on hardware platforms including Intel CPUs, ARM CPUs, and Nvidia GPUs.
연구 동기 및 목표
- 제어 흐름, 동적 크기, 가변 데이터 구조를 포함한 동적 신경망에 대해 효율적이고 이식 가능한 추론 시스템의 부족을 보완한다.
- 기존 딥러닝 프레임워크와 컴파일러의 한계를 극복한다. 이는 정적 모델에 최적화되어 있으며, 동적 특성에 대응하기 어려운 점을 개선한다.
- Intel CPU, ARM CPU, NVIDIA GPU를 포함한 다양한 하드웨어 플랫폼에서 동적 모델의 엔드 투 엔드 최적화 및 컴파일을 가능하게 한다.
- 전체 모델 최적화, 동적 메모리 계획, 가변 텐서 크기 및 실행 경로에 대한 효율적 커널 디스패치를 지원하는 시스템을 설계한다.
- 플랫폼에 종속되지 않는 로직과 하드웨어 특화 커널을 분리하여 이식성과 성능을 확보하는 경량 런타임을 제공한다.
제안 방법
- 알 수 없는 또는 가변적인 크기를 가진 텐서의 타입 추론과 검사를 가능하게 하기 위해 'Any' 차원 지원 기능을 갖춘 동적 타입 시스템을 도입한다.
- 컴파일 타임에 동적으로 변화하는 텐서 크기에 최적화된 커널을 생성하기 위해 크기 인지 코드 생성 기법을 개발한다.
- 모든 가능한 실행 경로를 고려해 런타임 메모리 할당을 정적 분석하고 최소화하기 위한 동적 메모리 계획 최적화를 구현한다.
- 제어 논리를 하드웨어 특화 커널에서 분리하여 이식성과 다양한 플랫폼 간 효율적 디스패치를 가능하게 하는 경량 가상 머신(VM) 런타임을 설계한다.
- 크기 및 계산 특성에 기반해 연산을 최적의 하드웨어 가속기로 할당하기 위한 장치 배치 히우리스틱을 통합한다.
- LLVM 및 JVM의 컴파일러 기법을 활용해 정적 분석이 가능한 중간 표현(IR)에서 동적 제어 흐름과 가변 길이 데이터 구조를 지원한다.
실험 결과
연구 질문
- RQ1딥러닝 컴파일러는 제어 흐름과 가변 텐서 크기 등의 동적 신경망 구성요소를 효과적으로 표현하고 최적화할 수 있는가?
- RQ2모든 가능한 실행 경로와 크기를 고려해야 하는 상황에서 동적 모델의 고성능 달성을 위해 필요한 최적화는 무엇인가?
- RQ3경량이고 이식 가능한 VM 기반 런타임은 CPU 및 GPU를 포함한 다양한 하드웨어 플랫폼에서 컴파일된 동적 모델을 효율적으로 실행할 수 있는가?
- RQ4메모리 계획 및 크기 인지 코드 생성과 같은 동적 전용 최적화는 정적 또는 프레임워크 기반 접근 방식에 비해 추론 성능 향상에 얼마나 기여하는가?
- RQ5전체 스택 기반 동적 모델 컴파일러의 성능은 다양한 하드웨어 플랫폼과 실제 동적 모델에서 기존 솔루션과 비교해 어떠한가?
주요 결과
- Nimble는 Intel CPU, ARM CPU, NVIDIA GPU를 포함한 주류 하드웨어 플랫폼에서 기존 솔루션 중 최고 성능을 기록한 것보다 최대 19.9× 낮은 지연 시간을 달성한다.
- LSTM, Tree-LSTM, BERT와 같은 다양한 동적 모델에서 일관된 성능 향상을 보이며, 1.05×에서 19.9×의 속도 향상이 이루어졌다.
- 모든 디스패치를 포함한 동적 크기 인지 코드 생성은 정적 코드 생성과 거의 동일한 성능을 달성했으며, 커널 수를 줄일 경우 발생하는 성능 저하를 피했다.
- cuDNN 및 oneDNN와 같은 외부 라이브러리가 없거나 최적화되지 않은 2등급 하드웨어 플랫폼인 ARM CPU에서 Nimble는 프레임워크 기반 솔루션을 뛰어넘는 성능을 보였다.
- VM 기반 런타임은 성능을 희생시키지 않고도 다양한 플랫폼 간 이식 가능한 실행을 가능하게 하였으며, 새로운 크기 및 장치에 대한 온디맨드 코드 생성을 지원한다.
- 동적 메모리 계획은 컴파일 시 모든 가능한 실행 경로를 분석함으로써 런타임 메모리 할당 오버헤드를 크게 감소시켜 명확한 성능 향상을 이끌어냈다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.