Een efficiënte softwareversneller voor sparse inferentie voor transformer-gebaseerde taalmodelen op CPU's
An Efficient Sparse Inference Software Accelerator for Transformer-based Language Models on CPUs
June 28, 2023
Auteurs: Haihao Shen, Hengyu Meng, Bo Dong, Zhe Wang, Ofir Zafrir, Yi Ding, Yu Luo, Hanwen Chang, Qun Gao, Ziheng Wang, Guy Boudoukh, Moshe Wasserblat
cs.AI
Samenvatting
De afgelopen jaren zijn Transformer-gebaseerde taalmodelen de standaardaanpak geworden voor taken binnen natuurlijke taalverwerking. Echter beperken strenge doorvoer- en latentie-eisen in industriële toepassingen hun adoptie. Om deze kloof te verkleinen, worden modelcompressietechnieken zoals gestructureerd snoeien gebruikt om de inferentie-efficiëntie te verbeteren. Toch bieden de meeste bestaande inferentie-runtimes voor neurale netwerken onvoldoende ondersteuning voor gestructureerde sparsity. In dit artikel stellen we een efficiënte sparse deep learning inferentie-softwarestack voor Transformer-gebaseerde taalmodelen voor, waarbij de gewichten worden gesnoeid met een constante blokgrootte. Onze sparse software-accelerator maakt gebruik van Intel Deep Learning Boost om de prestaties van sparse matrix - dense matrix vermenigvuldiging (vaak afgekort als SpMM) op CPU's te maximaliseren. Onze SpMM-kernel overtreft de bestaande sparse bibliotheken (oneMKL, TVM en LIBXSMM) met een orde van grootte op een breed scala aan GEMM-vormen onder 5 representatieve sparsity-ratio's (70%, 75%, 80%, 85%, 90%). Bovendien toont onze SpMM-kernel een versnelling tot 5x ten opzichte van de dense GEMM-kernel van oneDNN, een goed geoptimaliseerde dense bibliotheek die veel wordt gebruikt in de industrie. We passen onze sparse accelerator toe op veelgebruikte Transformer-gebaseerde taalmodelen, waaronder Bert-Mini, DistilBERT, Bert-Base en BERT-Large. Onze sparse inferentie-software toont een versnelling tot 1,5x ten opzichte van Neural Magic's Deepsparse onder dezelfde configuraties op Xeon op Amazon Web Services onder proxy productie latentiebeperkingen. We vergelijken onze oplossing ook met twee framework-gebaseerde inferentie-oplossingen, ONNX Runtime en PyTorch, en demonstreren een versnelling tot 37x ten opzichte van ONNX Runtime en 345x ten opzichte van PyTorch op Xeon onder de latentiebeperkingen. Alle broncode is openbaar beschikbaar op Github: https://github.com/intel/intel-extension-for-transformers.
English
In recent years, Transformer-based language models have become the standard
approach for natural language processing tasks. However, stringent throughput
and latency requirements in industrial applications are limiting their
adoption. To mitigate the gap, model compression techniques such as structured
pruning are being used to improve inference efficiency. However, most existing
neural network inference runtimes lack adequate support for structured
sparsity. In this paper, we propose an efficient sparse deep learning inference
software stack for Transformer-based language models where the weights are
pruned with constant block size. Our sparse software accelerator leverages
Intel Deep Learning Boost to maximize the performance of sparse matrix - dense
matrix multiplication (commonly abbreviated as SpMM) on CPUs. Our SpMM kernel
outperforms the existing sparse libraries (oneMKL, TVM, and LIBXSMM) by an
order of magnitude on a wide range of GEMM shapes under 5 representative
sparsity ratios (70%, 75%, 80%, 85%, 90%). Moreover, our SpMM kernel shows up
to 5x speedup over dense GEMM kernel of oneDNN, a well-optimized dense library
widely used in industry. We apply our sparse accelerator on widely-used
Transformer-based language models including Bert-Mini, DistilBERT, Bert-Base,
and BERT-Large. Our sparse inference software shows up to 1.5x speedup over
Neural Magic's Deepsparse under same configurations on Xeon on Amazon Web
Services under proxy production latency constraints. We also compare our
solution with two framework-based inference solutions, ONNX Runtime and
PyTorch, and demonstrate up to 37x speedup over ONNX Runtime and 345x over
PyTorch on Xeon under the latency constraints. All the source code is publicly
available on Github: https://github.com/intel/intel-extension-for-transformers.