GPU는 컴퓨터 비전(computer vision), 자연어 처리(natural language processing), 멀티모달 학습(multimodal learning)과 같은 분야에서 AI 모델을 배포하는 데 필요한 컴퓨팅 자원을 제공하는 데 중요한 역할을 합니다. 현재 AI 실무자들은 고성능 GPU 추론 솔루션을 선택할 때 매우 제한적인 유연성을 가지고 있습니다. 그 이유는 이러한 솔루션들이 플랫폼별로 특화되어 있고 폐쇄적인 블랙박스(black box) 런타임 환경에 집중되어 있기 때문입니다. 한 기술 제공업체의 GPU를 위해 설계된 머신러닝 시스템은 다른 제공업체의 하드웨어에서 작동하려면 완전히 재구현되어야 합니다. 이러한 유연성 부족은 복잡한 런타임 환경 내의 하드웨어 종속성 때문에 솔루션을 구성하는 코드를 반복하고 유지보수하기 어렵게 만듭니다.
더욱이, AI 프로덕션 파이프라인은 종종 빠른 개발 속도를 요구합니다. 이 분야는 빠르게 발전하고 있기 때문에 개발자들은 새로운 모델링 기법을 시도하는 데 열의를 보입니다. TensorRT와 같은 독점 소프트웨어 툴킷(proprietary software toolkits)이 커스터마이징 방법을 제공하지만, 이러한 방법들만으로는 종종 요구 사항을 충족하기에 충분하지 않습니다. 게다가, 폐쇄적이고 독점적인 솔루션은 코드를 빠르게 디버깅하는 것을 더 어렵게 만들어 개발 민첩성(development agility)을 떨어뜨릴 수 있습니다.
이러한 산업적 과제들을 해결하기 위해 Meta AI는 AMD와 NVIDIA GPU 하드웨어 모두를 위한 별도의 가속 백엔드(acceleration back ends)를 갖춘 통합 추론 시스템인 AITemplate (AIT)를 개발하고 오픈소싱하고 있습니다. AIT은 합성곱 신경망(convolutional neural networks), 트랜스포머(transformers), 디퓨저(diffusers)와 같이 널리 사용되는 다양한 AI 모델에서 하드웨어 네이티브에 가까운 Tensor Core (NVIDIA GPU) 및 Matrix Core (AMD GPU) 성능을 제공합니다. AIT을 통해 이제 두 GPU 공급업체의 하드웨어 모두에서 고성능 추론 실행이 가능해졌습니다. 저희는 AIT을 사용하여 PyTorch의 eager mode 대비 NVIDIA GPU에서 최대 12배, AMD GPU에서 4배의 성능 향상을 달성했습니다.
AITemplate은 AI 모델을 고성능 C++ GPU 템플릿 코드로 변환하여 추론을 가속화하는 Python 프레임워크입니다. 저희 시스템은 속도와 단순성을 염두에 두고 설계되었습니다. AITemplate에는 두 개의 계층이 있습니다. 첫 번째는 그래프를 최적화하기 위해 다양한 그래프 변환(graph transformations)을 수행하는 프런트엔드(front-end) 계층이며, 다른 하나는 GPU 타겟을 위한 C++ 커널 템플릿(C++ kernel templates)을 생성하는 백엔드(back-end) 계층입니다. 또한, AIT은 외부 라이브러리에 대한 의존성을 최소화합니다. 예를 들어, 추론을 위한 생성된 런타임 라이브러리(runtime library)는 자체적으로 완결성이 있으며 CUDA/ROCm 런타임 환경만 필요합니다. (CUDA: NVIDIA의 Compute Unified Device Architecture)