1 行のコードはどれほど強力なのでしょうか?今日紹介する Kernl ライブラリを使用すると、ユーザーはわずか 1 行のコードで GPU 上で Pytorch 変換モデルを数倍高速に実行できるため、モデルの推論が大幅に高速化されます。
具体的には、Kernl の恩恵により、Bert の推論速度は Hugging Face のベースラインより 12 倍速くなりました。この成果は主に、Kernl が新しい OpenAI プログラミング言語 Triton および TorchDynamo でカスタム GPU カーネルを作成したことによるものです。プロジェクトの著者は Lefebvre Sarrut 出身です。
GitHub アドレス: https://github.com/ELS-RD/kernl/
#Kernl と他の推論エンジンの比較です。横軸の括弧内の数字はそれぞれバッチサイズとシーケンス長を表し、縦軸は推論の加速度を表します。
#ベンチマークは、3090 RTX GPU および 12 コア Intel CPU で実行されます。
#上記の結果から、Kernl は長いシーケンス入力に関しては最速の推論エンジンであると言えます (図の右)上)半分)、短い入力シーケンスでは NVIDIA の TensorRT (上図の左半分) に近い値です。それ以外の場合、Kernl カーネル コードは非常に短く、理解や変更が簡単です。このプロジェクトでは、カーネルの置き換えを簡素化するために Triton デバッガとツール (Fx ベース) も追加しているため、PyTorch モデルのソース コードを変更する必要はありません。
プロジェクト著者の Michael Benesty は、この研究を要約しました。彼らがリリースした Kernl は、変換推論を加速するためのライブラリです。非常に高速で、場合によっては SOTA パフォーマンスに達します。ほとんどの変換アーキテクチャに適合するようにハッキングされています。
彼らは 6 倍高速な T5 でもテストしましたが、ベネスティ氏はこれはほんの始まりにすぎないと述べました。
Kernl はなぜ作成されたのですか?
最近、著者は生成言語をテストし、その高速化に取り組んでいます。ただし、従来のツールを使用してこれを行うのは非常に難しいことが判明しています。彼らの見解では、Onnx はもう 1 つの興味深い形式であり、機械学習用に設計されたオープン ファイル形式であり、トレーニングされたモデルを保存するために使用され、広範なハードウェア サポートを備えています。
ただし、Onnx エコシステム (主に推論エンジン) には、新しい LLM アーキテクチャを扱うため、いくつかの制限があります。 #追跡を信頼できるため、制御フローなしでモデルを Onnx にエクスポートするのは簡単です。ただし、動的な動作を取得するのはより困難です。
PyTorch とは異なり、ONNX Runtime/TensorRT は、テンソル並列処理を実装するマルチ GPU タスクをまだネイティブにサポートしていません。
TensorRT は、同じ構成ファイルを使用してトランスフォーマー モデルの 2 つの動的軸を管理できません。ただし、通常はさまざまな長さの入力を提供できるようにする必要があるため、バッチ サイズごとに 1 つのモデルを構築する必要があります。メモリ帯域幅は通常、ディープ ラーニングのボトルネックです。推論を高速化するには、メモリ アクセスを減らすことが多くの場合良い戦略となります。短い入力シーケンスでは、ボトルネックは通常 CPU オーバーヘッドに関連しているため、これを取り除く必要があります。プロジェクト作成者は主に次の 3 つのテクノロジを利用しています:
1 つ目は OpenAI Triton で、CUDA などの GPU カーネルを記述するための言語です。Nvidia Triton 推論と混同しないでください。サーバーの方が効率的です。改善は、GPU メモリに中間結果を保持せずに計算を連鎖するように、いくつかの操作を融合することによって達成されました。著者はこれを使用して、アテンション (フラッシュ アテンションに置き換え)、線形レイヤーとアクティベーション、および Layernorm/Rmsnorm を書き換えます。
2 つ目は CUDA グラフです。ウォームアップ ステップ中に、起動された各コアとそのパラメータが保存されます。その後、プロジェクトの作成者は推論プロセス全体を再構築しました。
最後に、TorchDynamo があります。これは、プロジェクト作成者が動的な動作に対処するのを支援するために Meta によって提案されたプロトタイプです。ウォームアップ ステップ中にモデルを追跡し、Fx グラフ (静的計算グラフ) を提供します。彼らは、Fx グラフの一部の操作を、Python で再コンパイルされた独自のカーネルに置き換えました。
将来的には、プロジェクトのロードマップでは、ウォームアップの高速化、不規則推論 (パディングでの損失計算なし)、トレーニング サポート (ロング シーケンスのサポート)、マルチ GPU サポート (複数の並列化モード)、量子化 (PTQ)、新しいバッチの Cutlass カーネル テスト、ハードウェア サポートの改善など。
詳細については、元のプロジェクトを参照してください。
以上がOpenAIプログラミング言語がBert推論を12倍高速化、そのエンジンが注目を集めるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。