Эффективный программный ускоритель для разреженного вывода в трансформерных языковых моделях на процессорах
An Efficient Sparse Inference Software Accelerator for Transformer-based Language Models on CPUs
June 28, 2023
Авторы: 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
Аннотация
В последние годы языковые модели на основе архитектуры Transformer стали стандартным подходом для задач обработки естественного языка. Однако строгие требования к пропускной способности и задержкам в промышленных приложениях ограничивают их широкое внедрение. Для сокращения этого разрыва используются методы сжатия моделей, такие как структурированное прореживание, чтобы повысить эффективность вывода. Тем не менее, большинство существующих сред выполнения для вывода нейронных сетей не обеспечивают достаточной поддержки структурированной разреженности. В данной статье мы предлагаем эффективный программный стек для вывода разреженных глубоких моделей на основе Transformer, где веса прореживаются с постоянным размером блока. Наш разреженный программный ускоритель использует технологию Intel Deep Learning Boost для максимизации производительности операции умножения разреженной матрицы на плотную матрицу (обычно обозначаемой как SpMM) на процессорах. Наше ядро SpMM превосходит существующие библиотеки для работы с разреженными матрицами (oneMKL, TVM и LIBXSMM) на порядок величины для широкого диапазона форм матриц GEMM при пяти репрезентативных уровнях разреженности (70%, 75%, 80%, 85%, 90%). Более того, наше ядро SpMM демонстрирует ускорение до 5 раз по сравнению с плотным ядром GEMM из библиотеки oneDNN, которая является хорошо оптимизированной плотной библиотекой, широко используемой в промышленности. Мы применяем наш разреженный ускоритель на популярных языковых моделях на основе Transformer, включая Bert-Mini, DistilBERT, Bert-Base и BERT-Large. Наше программное обеспечение для разреженного вывода показывает ускорение до 1,5 раз по сравнению с Deepsparse от Neural Magic при одинаковых конфигурациях на процессорах Xeon в Amazon Web Services в условиях ограничений на задержку, приближенных к производственным. Мы также сравниваем наше решение с двумя решениями для вывода на основе фреймворков, ONNX Runtime и PyTorch, и демонстрируем ускорение до 37 раз по сравнению с ONNX Runtime и до 345 раз по сравнению с PyTorch на процессорах Xeon при ограничениях на задержку. Весь исходный код доступен публично на 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.