Ein effizienter Softwarebeschleuniger für dünnbesetzte Inferenz in transformerbasierten Sprachmodellen auf CPUs
An Efficient Sparse Inference Software Accelerator for Transformer-based Language Models on CPUs
June 28, 2023
Autoren: 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
Zusammenfassung
In den letzten Jahren haben Transformer-basierte Sprachmodelle den Standardansatz für Aufgaben der natürlichen Sprachverarbeitung (NLP) gebildet. Strenge Anforderungen an Durchsatz und Latenz in industriellen Anwendungen schränken jedoch deren Verbreitung ein. Um diese Lücke zu schließen, werden Modellkompressionsverfahren wie strukturiertes Pruning eingesetzt, um die Inferenzeffizienz zu verbessern. Allerdings bieten die meisten bestehenden Inferenzlaufzeitumgebungen für neuronale Netze nur unzureichende Unterstützung für strukturierte Sparsity. In diesem Artikel präsentieren wir einen effizienten Software-Stack für die Inferenz von tiefen Lernmodellen auf Basis von Transformer-Architekturen, bei denen die Gewichte mit konstanter Blockgröße gepruned werden. Unser sparser Software-Beschleuniger nutzt Intel Deep Learning Boost, um die Leistung der Multiplikation von sparsen mit dichten Matrizen (häufig als SpMM abgekürzt) auf CPUs zu maximieren. Unser SpMM-Kernel übertrifft die bestehenden sparsen Bibliotheken (oneMKL, TVM und LIBXSMM) um eine Größenordnung bei einer Vielzahl von GEMM-Formen unter fünf repräsentativen Sparsity-Verhältnissen (70 %, 75 %, 80 %, 85 %, 90 %). Darüber hinaus zeigt unser SpMM-Kernel eine bis zu 5-fache Beschleunigung gegenüber dem dichten GEMM-Kernel von oneDNN, einer hochoptimierten dichten Bibliothek, die in der Industrie weit verbreitet ist. Wir wenden unseren sparsen Beschleuniger auf weit verbreitete Transformer-basierte Sprachmodelle wie Bert-Mini, DistilBERT, Bert-Base und BERT-Large an. Unsere sparsen Inferenzsoftware zeigt unter denselben Konfigurationen auf Xeon in Amazon Web Services unter Proxy-Produktionslatenzbeschränkungen eine bis zu 1,5-fache Beschleunigung gegenüber Neural Magic’s Deepsparse. Wir vergleichen unsere Lösung auch mit zwei framework-basierten Inferenzlösungen, ONNX Runtime und PyTorch, und zeigen eine bis zu 37-fache Beschleunigung gegenüber ONNX Runtime und eine 345-fache gegenüber PyTorch auf Xeon unter den Latenzbeschränkungen. Der gesamte Quellcode ist öffentlich auf GitHub verfügbar: 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.