[ASPLOS'20] FlexTensor

FlexTensor: An Automatic Schedule Exploration and Optimization Framework for Tensor Computation on Heterogeneous System

Size Zheng, et.al. on March 9, 2020
doi.org
obsidian에서 수정하기

Abstract

(서론): 텐서 계산은 기계 학습, 데이터 분석, 과학 계산 등 다양한 분야에서 매우 중요한 역할을 합니다. 텐서 계산의 널리 채택과 엄청난 계산 비용으로 인해 GPU 및 FPGA와 같은 이종 하드웨어 가속기에서 유연하고 이식 가능하며 고성능의 라이브러리 구현에 대한 높은 수요가 있습니다.

(한계): 그러나 현재의 텐서 라이브러리 구현은 주로 프로그래머가 알고리즘, 아키텍처 및 컴파일 관점에서 저수준 구현을 수동으로 설계하고 최적화해야 합니다. 이러한 수동 개발 과정은 종종 몇 달 또는 몇 년이 걸리며, 애플리케이션 알고리즘의 빠른 발전을 따라잡지 못합니다.

(방법론): 본 논문에서는 이종 시스템에서 텐서 계산을 위한 일정 탐색 및 최적화 프레임워크인 FlexTensor를 소개합니다. FlexTensor는 인간의 개입 없이 텐서 계산 프로그램을 최적화할 수 있으며, 프로그래머가 하드웨어 플랫폼의 세부 사항을 고려하지 않고도 고수준의 프로그래밍 추상화 작업만 할 수 있게 합니다. FlexTensor는 다양한 하드웨어에 대한 여러 가지 일정으로 구성된 최적화 설계 공간을 체계적으로 탐색합니다. 그런 다음 FlexTensor는 최적화된 일정 구성을 찾기 위해 휴리스틱 방법 및 기계 학습 방법을 포함한 다양한 탐색 기법을 결합합니다. 마지막으로 탐색 결과를 바탕으로 맞춤형 일정이 다양한 하드웨어에 대해 자동으로 생성됩니다.

(결론): 실험에서 우리는 12가지 다른 종류의 텐서 계산을 수백 가지의 테스트 케이스로 테스트했으며, FlexTensor는 cuDNN과 비교하여 NVIDIA V100 GPU에서 평균 1.83배의 성능 향상; 2D 컨볼루션에 대해 MKL-DNN과 비교하여 Intel Xeon CPU에서 1.72배의 성능 향상; OpenCL 기반과 비교하여 Xilinx VU9P FPGA에서 1.5배의 성능 향상; 그리고 최신 기술과 비교하여 NVIDIA V100 GPU에서 2.21배의 성능 향상을 달성했습니다.