今回は、"LightSeq: A High Performance Inference Library for Transformers"という論文について紹介していきます!
論文情報
著者 : Xiaohui Wang, Ying Xiong, Yang Wei, Mingxuan Wang, Lei Li
(Submitted on 23 Oct 2020 (v1))
ひとこと紹介
Transformerの課題である推論に時間がかかるという点を補う手法 "LightSeq" を提案!
イントロダクション
自然言語処理タスクの現状
Sequenceの処理・生成といったタスクは自然言語処理タスクにおいて基本的なものであり、Transformer の普及により、 BERT, GPT, mRASPなどの多くの事前学習済み言語モデルに取り入られている。その一方で、これらのモデルのパラメータは大きくなってきており、推論時間も増えているため、逐次的に行うオンラインサービスなどに最適なものではなくなってしまっているという課題もある。
具体的な課題点としては、以下の通り。
1つ目としては、TensorFlowやPyTorchなどのフレームワークは、柔軟なモデルアーキテクチャと逆伝搬に対応する必要があるため、追加のメモリ割り当てと、細かいカーネル関数を使用する余分なオーバーヘッドが発生する。それゆえ、フレームワークを直接導入しても、ハードウェアリソースを十分に活用できない。(例 機械翻訳 : Transformerのビッグモデルは現在、1つの文を翻訳するのにおよそ2秒かかる)
2つ目としては、TensorFlow XLA(Abadi et al., 2017),TVM(Chen et al., 2018),Tensor RT(Vanholder, 2016)など、現在の深層学習用の最適化コンパイラは、主に固定サイズの入力用に設計されています。しかし、ほとんどのNLP問題は可変長の入力を活用するものであり、はるかに複雑で、動的なメモリ割り当てが必要となる。そのため、可変長入力のための高性能なシーケンス推論ライブラリが必要。
LightSeq とは?
LightSeqが類似プロジェクトと異なる3つの革新的な特徴とは?
1. 不可分な(atomic)カーネル関数を 1/4に! (対 Tensorflow's approach)
TensorFlowやPyTorchの実装において、きめ細かなGPUカーネル関数の単純な組み合わせを、粗視化された融合したものに置き換えた。これにより、大量のカーネル関数の起動や中間結果のためのGPUメモリI/Oによってもたらされる高い時間コストを回避してる。
2. 自動回帰検索を高速化
階層的な自動回帰検索法を特別に設計することにより実現
3. 動的な GPUメモリの再利用
固定長の入力とは異なり、シーケンス処理は可変長の入力を扱うため、メモリの割り当てが困難になる。そこでLightSeqでは、各カーネル関数の最大メモリをあらかじめ定義し、依存しない関数間でGPUメモリを共有することを提案している。その結果、LightSeqは推論速度を落とすことなく、メモリの割り当てを8倍に減らすことができた。
その結果、LightSeqは下記のような利点を享受することができる。
LightSeq の利点
1. 効率性 (性能の良さ)
LightSeqは、生成タスクにおいてより優れた推論性能を発揮する。
例えば、機械翻訳のベンチマークではLightSeqは
・TensorFlowと比べて最大14倍、
・FasterTransformerと比べて1.4倍のスピードアップを達成
2. 機能性
LightSeqは、BERT, GPT, Transformer, Variational Autoencoders(VAE)など、より多くのarchitecture variants をサポートしている。さらに、LightSeqは、ビーム探索 や 確率的サンプリングなどの異なる探索アルゴリズムも提供している
3. 使いやすさ
LightSeqは、serving システムと効率的なCUDA実装を含む、使いやすいソフトウェアである。BERT, Roberta, GPT, VAEs, MT Transformer, Speech Transformerなどの一般的なモデルは、コードを修正することなくオンラインで直接活用することができる。ユーザー固有のアーキテクチャのために、LightSeqは複数のモデルの再利用をサポートしており、わずか数行のコード修正で簡単に適応することができる。
この論文の構成
- Introduction
- LightSeq のアプローチ
- Experiments
- 結論
コメント