Conversational AI / NLP

NVIDIA FasterTransformer による KoGPT の推論高速化の向上

Reading Time: 2 minutes

Transformer は、現在最も影響力のある AI モデル アーキテクチャの 1 つであり、将来の AI 研究開発の方向性を形作っています。自然言語処理 (NLP) のツールとして最初に発明された Transformer は、現在、コンピューター ビジョン、自動音声認識、分子構造分類、金融データ処理など、ほぼすべての AI タスクで使用されています。

韓国では、Kakao Brain が Transformer アーキテクチャに基づいた高精度の大規模言語モデル (LLM)、KoGPT を開発しました。大規模な韓国のデータセットでトレーニングし、NVIDIA FasterTransformer を使用して最適化することに成功しました。

この投稿では、NVIDIA と Kakao Brain が FasterTransformer を使用して KoGPT をどのように最適化したかについて説明します。

FasterTransformer の概要

図 1. NLP タスクで使用される FasterTransformer

Transformer レイヤーは、現在、深層学習の分野で最も広く使用されている深層学習アーキテクチャです。NLP に起源を持ち、現在では言語を超えて視覚、音声、生成 AI へと用途を拡大しています。

NLP で最も人気のある AI モデルの 1 つは、GPT モデルのファミリです。GPT は OpenAI によって開発された LLM で、Transformer モデル アーキテクチャからのいわゆるデコーダー ブロックの複数のレイヤーをスタックします。たとえば、GPT-3 は数千億のパラメーターを備えた LLM であり、巨大な百科事典のように膨大な量の情報を集約できます。

ただし、これらの LLM をトレーニングするには、次のようないくつかの課題が生じます。

  • これらの LLM は大量のメモリを占有し、単一の GPU の容量を超える可能性がある。
  • トレーニングと推論には膨大な計算量が必要となるため、かなりの時間がかかる場合がある。したがって、スタックのあらゆるレベル (アルゴリズム、ソフトウェア、ハードウェア) を最適化する必要がある。

NVIDIA NeMo フレームワークと FasterTransformer により、数千億のパラメーターを持つ LLM のトレーニングと推論が高速化されます。

FasterTransformer の最適化

FasterTransformer は、前述のモデル並列化 (テンソル並列化およびパイプライン並列化) メソッドを使用して、大規模な Transformer モデル用の推論加速エンジンを実装するライブラリです。FasterTransformer は、以前に利用可能な深層学習フレームワークと比較して、レイテンシを最小限に抑え、スループットを最大化するために開発されました。

FasterTransformer は、Transformer モデルの最適化されたデコーダー ブロックとエンコーダー ブロックを提供します。これは C++/CUDA で書かれており、TensorFlow、PyTorch、および Triton バックエンド フレームワーク用の API を備えています。主な機能を示すサンプル コードが付属しています。

FasterTransformer はオープン ソースです。すでに GPT-3、GPT-J、GPT-NeoX、BERT、ViT、Swin Transformer、Longformer、T5、XLNet、BLOOM などの多くのモデルをサポートしています。新しいモデルのサポートは常に追加されています。迅速な学習テクニックもサポートします。詳細については、最新のサポート マトリックスを参照してください。

前述したように、FasterTransformer は、他のディープラーニング フレームワークよりも低いレイテンシと高い出力を備えた高速な推論パイプラインを可能にします。FasterTransformer で使用される最適化手法の一部を次に示します。

  • レイヤー融合: この技術は、複数のレイヤーを 1 つのレイヤーに結合し、データ送信を削減し、計算強度を高めることで推論計算を高速化します。このような加速の例としては、バイアスとレイヤーの正規化、バイアスとアクティベーション、バイアスとソフトマックス、および注目レイヤーの 3 つの転置行列の融合などがあります。
  • マルチヘッド アテンションの高速化: マルチヘッド アテンションはシーケンス内のトークン間の関係を計算し、大量の計算とメモリ コピーを必要とします。FasterTransformer はデータ キャッシュ (K/V キャッシュ) を維持して計算を削減し、融合カーネルを使用してメモリ転送のサイズを最小限に抑えます。
  • GEMM カーネルの自動チューニング: 行列乗算は、Transformer ベースのモデルで最も一般的で負荷の高い操作です。FasterTransformer は、cuBLAS および CUTLASS ライブラリによって提供される機能を使用して、この操作を実行します。行列乗算演算は、ハードウェア レベルでさまざまな低レベル実装を持つことができます。FasterTransformer は、モデルのパラメーター (アタッチメント層、サイズ、アタッチメント ヘッドの数、隠れ層のサイズなど) と入力データに対してリアルタイムのベンチマークを実行します。最適な機能とパラメーターを選択します。
  • 低精度: FasterTransformer は、FP16、BF16、INT8 などの低精度のデータ型をサポートします。これらのデータ型の操作は、最近の NVIDIA GPU (NVIDIA Volta アーキテクチャ以降) の Tensor コアによって高速化できます。特に、NVIDIA Hopper GPU は、変換エンジンなどの特殊なハードウェアを実行できます。

KoGPT の概要

図 2. 韓国語コンテキスト内の KoGPT タスク

Kakao Brain の KoGPT は韓国語を語彙的および文脈的に理解し、ユーザーの意図に基づいて文章を生成します。KoGPT を使用すると、ユーザーは、特定の文の感情の判断、要約や結論の予測、質問への回答、次の文の生成など、韓国語に関連するさまざまなタスクを実行できます。また、機械読み取り、機械翻訳、書き込み、さまざまな分野の感情分析などの高レベル言語タスクも処理できます。

FasterTransformer を使用した KoGPT のパフォーマンス

Kakao Brain は、HuggingFace を使用して実装された GPT-3 ベースの言語モデルである KoGPT を実行したいと考えていました。パフォーマンスがより重要であるため、トレーニングではスピードは問題になりませんでした。しかし、サーブとなると、スピードが重要な問題になります。推論速度が遅いほど、より多くのサーバーをサービス専用にする必要があります。それは指数関数的に増加し、運用コストの増加につながりました。

Kakao Brain のチームは、GPT-3 の推論速度を最適化するためにさまざまな方法を見つけて適用しようとしましたが、大きな改善はできませんでした。チームが推論速度の大幅な向上を発見したのは、NVIDIA FasterTransformer を採用した後でした。推論速度は入力トークンと出力トークンの数によって異なりますが、平均すると、チームは 1 つの NVIDIA V100 GPU での推論速度を既存の速度よりも最大 400% 向上させました。

FasterTransformer は、テンソルとパイプラインの並列処理もサポートします。4 つの V100 GPU を使用した場合、チームはベースラインを超えて 1100% 以上の推論速度向上を達成しました。

図 3. FasterTransformer 上の KoGPT は、PyTorch と比較して大幅なパフォーマンス向上を示します

まとめ

NVIDIA FasterTransformer により、KoGPT はサービスとして開始する前にチームが直面しなければならなかった技術的課題を簡単に克服できるようになりました。Kakao Brain ML 最適化チームは、同じハードウェアでより多くのリクエストを処理することで、総所有コスト (TCO) を 15% 以上改善しました。

Kakao Brain の韓国語 LLM、KoGPT、および韓国語 AI チャットボット KoChat GPT の詳細については、Kakao の Web サイトをご覧ください。

翻訳に関する免責事項

この記事は、「Increasing Inference Acceleration of KoGPT with NVIDIA FasterTransformer」の抄訳で、お客様の利便性のために機械翻訳によって翻訳されたものです。NVIDIA では、翻訳の正確さを期すために注意を払っておりますが、翻訳の正確性については保証いたしません。翻訳された記事の内容の正確性に関して疑問が生じた場合は、原典である英語の記事を参照してください。

Tags