Transformerアーキテクチャは並列計算ができるというのは本当か?
お疲れ様です。
私は、日々ChatGPTをはじめとするLLMとの対話を繰り返しています。
LLMはTransformerアーキテクチャをベースにしており、「並列計算」が可能だと言われていますが、具体的にどの部分で並列計算が行われているのか、よくわからなかったため、少し調べてみました。
結論から言うと、Transformerアーキテクチャでは、入力された文章を単語(厳密にはトークン)ごとに独立して処理できるため、並列計算が可能なようです。
具体的には、入力された文章は単語ごとにベクトルに変換され、その後マルチヘッドアテンション層やフィードフォワード層を何度も通過して、各単語のベクトルの方向が調整されます。最終的に、各単語のベクトルの方向(正確には最後の単語のベクトル方向)をもとに次の単語を予測します。
ここまでの流れを見ると「確かにTransformerは並列計算ができるアーキテクチャだな」と思えるのですが、マルチヘッドアテンションの処理においては、他の単語のベクトルが必要となります。
つまり、マルチヘッドアテンション層の計算を開始する時に、すべての単語のベクトルが算出されていないと、マルチヘッドアテンションの計算を開始することができません。
まとめると、Transformerアーキテクチャは単語ごとに独立した処理が可能なので基本的には並列計算をできると言えるのですが、マルチヘッドアテンション層では他の単語との関係を考慮する必要があるため、完全には独立して計算できるわけではない、ということです。
Transformerアーキテクチャについて、また少し理解を深めることができて嬉しく思います。
最後までお読みいただき、ありがとうございました。