[论文解读] Optimizing Inference Performance of Transformers on CPUs
本文通过提出三种矩阵乘法(matmul)优化方法,优化了CPU上的Transformer推理:自适应矩阵转置、减少matmul调用中的顺序开销,以及调优矩阵划分。在HuggingFace基准测试中对BERT进行评估,这些技术在不改变模型精度或框架的前提下,实现了最高2.37倍的加速。
The Transformer architecture revolutionized the field of natural language processing (NLP). Transformers-based models (e.g., BERT) power many important Web services, such as search, translation, question-answering, etc. While enormous research attention is paid to the training of those models, relatively little efforts are made to improve their inference performance. This paper comes to address this gap by presenting an empirical analysis of scalability and performance of inferencing a Transformer-based model on CPUs. Focusing on the highly popular BERT model, we identify key components of the Transformer architecture where the bulk of the computation happens, and propose three optimizations to speed them up. The optimizations are evaluated using the inference benchmark from HuggingFace, and are shown to achieve the speedup of up to x2.37. The considered optimizations do not require any changes to the implementation of the models nor affect their accuracy.
研究动机与目标
- 解决在生产级Web服务中广泛应用的CPU系统上,Transformer推理性能优化这一被严重忽视的挑战。
- 识别出在CPU上进行BERT推理时,矩阵乘法(matmul)是主要的性能瓶颈。
- 提出三种硬件感知的、非侵入式优化方法,以加速matmul操作,而无需修改模型架构或影响推理精度。
- 证明这些优化方法在Intel Skylake CPU上,针对不同序列长度和线程数量,能显著提升可扩展性和性能。
- 验证研究结果在不同模型(如BERT-base)和数学库(如oneDNN)中的普适性,从而将适用范围扩展至BERT之外。
提出的方法
- 实现自适应矩阵转置:在matmul前动态选择是否转置输入矩阵,以提升数据局部性和缓存利用率。
- 通过分析和最小化深度学习框架中每调用一次的延迟,减少matmul调用中的顺序开销,从而提升线程级可扩展性。
- 优化oneDNN的GEMM内核中的矩阵划分参数(BK、BM、BN),使其更好地匹配CPU缓存层次结构,特别是减少最后一级缓存(LLC)未命中。
- 通过调优划分方式,将BK从384降低至64,使子矩阵更小、更符合缓存友好性,同时提升指令级并行性。
- 使用性能计数器(通过perf)验证优化后的oneDNN版本中LLC未命中减少、IPC提升。
- 使用HuggingFace的推理基准测试,在PyTorch与oneDNN组合下评估所有优化,测量在多种序列长度和线程数量下的延迟。
实验结果
研究问题
- RQ1为何matmul是CPU上BERT推理的主要性能瓶颈?其可扩展性在增加线程数时如何退化?
- RQ2自适应矩阵转置在提升数据局部性和缓存效率方面,能多大程度改善matmul性能?
- RQ3matmul调用中的顺序开销如何限制可扩展性?是否能在不修改底层框架的前提下减少该开销?
- RQ4调优矩阵划分参数(如BK、BM、BN)是否能通过更好地利用CPU缓存和减少缓存未命中,带来可测量的性能提升?
- RQ5所观察到的性能提升在多大程度上可推广至不同Transformer模型和数学库?
主要发现
- 所提出的优化在不同序列长度和线程数量下,使BERT-large的推理速度最高提升2.37倍。
- 仅使用自适应矩阵转置,即可在16个线程下实现短序列(如8个token)最高1.44倍加速,长序列(如384个token)最高1.19倍加速。
- 将矩阵划分大小(BK)从384降低至64,使BERT-large在4个线程下获得1.16倍加速,在16个线程下获得1.19倍加速,且LLC未命中显著减少。
- 性能计数器显示,优化后的oneDNN版本在保持相近指令数的同时,降低了每条指令的周期数(IPC),表明硬件利用率得到提升。
- 这些优化在多个模型上均有效:BERT-base在使用调优划分后也表现出显著的延迟降低,证实了其更广泛的适用性。
- 在16个线程下,用于层归一化的时间占比从1线程时的2.9%上升至12%,表明未来优化也应关注此类操作。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。