Um Acelerador de Software Eficiente para Inferência Esparsa em Modelos de Linguagem Baseados em Transformadores em CPUs
An Efficient Sparse Inference Software Accelerator for Transformer-based Language Models on CPUs
June 28, 2023
Autores: 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
Resumo
Nos últimos anos, modelos de linguagem baseados em Transformers tornaram-se a abordagem padrão para tarefas de processamento de linguagem natural. No entanto, requisitos rigorosos de taxa de transferência e latência em aplicações industriais estão limitando sua adoção. Para mitigar essa lacuna, técnicas de compressão de modelos, como o pruning estruturado, estão sendo utilizadas para melhorar a eficiência da inferência. Contudo, a maioria dos tempos de execução de inferência de redes neurais existentes carece de suporte adequado para esparsidade estruturada. Neste artigo, propomos uma pilha de software eficiente para inferência de aprendizado profundo esparso em modelos de linguagem baseados em Transformers, onde os pesos são podados com tamanho de bloco constante. Nosso acelerador de software esparso aproveita o Intel Deep Learning Boost para maximizar o desempenho da multiplicação de matriz esparsa por matriz densa (comumente abreviada como SpMM) em CPUs. Nosso kernel SpMM supera as bibliotecas esparsas existentes (oneMKL, TVM e LIBXSMM) em uma ordem de magnitude em uma ampla gama de formas GEMM sob 5 taxas de esparsidade representativas (70%, 75%, 80%, 85%, 90%). Além disso, nosso kernel SpMM mostra uma aceleração de até 5x em relação ao kernel GEMM denso do oneDNN, uma biblioteca densa altamente otimizada amplamente utilizada na indústria. Aplicamos nosso acelerador esparso em modelos de linguagem baseados em Transformers amplamente utilizados, incluindo Bert-Mini, DistilBERT, Bert-Base e BERT-Large. Nosso software de inferência esparso mostra uma aceleração de até 1,5x em relação ao Deepsparse da Neural Magic sob as mesmas configurações no Xeon na Amazon Web Services sob restrições de latência de produção proxy. Também comparamos nossa solução com duas soluções de inferência baseadas em frameworks, ONNX Runtime e PyTorch, e demonstramos uma aceleração de até 37x em relação ao ONNX Runtime e 345x em relação ao PyTorch no Xeon sob as restrições de latência. Todo o código-fonte está disponível publicamente no 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.