目次
Lefebvre Sarrut では、プロジェクト作成者が実稼働環境でいくつかのトランスフォーマー モデルを実行していますが、その中にはレイテンシーに敏感なものもあり、主に検索と Resys が行われます。彼らは OnnxRuntime と TensorRT も使用しており、知識をコミュニティと共有するために Transformer-Deploy OSS ライブラリも作成しました。
ホームページ テクノロジー周辺機器 AI OpenAIプログラミング言語がBert推論を12倍高速化、そのエンジンが注目を集める

OpenAIプログラミング言語がBert推論を12倍高速化、そのエンジンが注目を集める

Apr 23, 2023 pm 03:19 PM
ai 推論

1 行のコードはどれほど強力なのでしょうか?今日紹介する Kernl ライブラリを使用すると、ユーザーはわずか 1 行のコードで GPU 上で Pytorch 変換モデルを数倍高速に実行できるため、モデルの推論が大幅に高速化されます。

具体的には、Kernl の恩恵により、Bert の推論速度は Hugging Face のベースラインより 12 倍速くなりました。この成果は主に、Kernl が新しい OpenAI プログラミング言語 Triton および TorchDynamo でカスタム GPU カーネルを作成したことによるものです。プロジェクトの著者は Lefebvre Sarrut 出身です。

OpenAIプログラミング言語がBert推論を12倍高速化、そのエンジンが注目を集める

GitHub アドレス: https://github.com/ELS-RD/kernl/

#Kernl と他の推論エンジンの比較です。横軸の括弧内の数字はそれぞれバッチサイズとシーケンス長を表し、縦軸は推論の加速度を表します。

OpenAIプログラミング言語がBert推論を12倍高速化、そのエンジンが注目を集める

#ベンチマークは、3090 RTX GPU および 12 コア Intel CPU で実行されます。

#上記の結果から、Kernl は長いシーケンス入力に関しては最速の推論エンジンであると言えます (図の右)上)半分)、短い入力シーケンスでは NVIDIA の TensorRT (上図の左半分) に近い値です。それ以外の場合、Kernl カーネル コードは非常に短く、理解や変更が簡単です。このプロジェクトでは、カーネルの置き換えを簡素化するために Triton デバッガとツール (Fx ベース) も追加しているため、PyTorch モデルのソース コードを変更する必要はありません。

プロジェクト著者の Michael Benesty は、この研究を要約しました。彼らがリリースした Kernl は、変換推論を加速するためのライブラリです。非常に高速で、場合によっては SOTA パフォーマンスに達します。ほとんどの変換アーキテクチャに適合するようにハッキングされています。

彼らは 6 倍高速な T5 でもテストしましたが、ベネスティ氏はこれはほんの始まりにすぎないと述べました。

Kernl はなぜ作成されたのですか?

Lefebvre Sarrut では、プロジェクト作成者が実稼働環境でいくつかのトランスフォーマー モデルを実行していますが、その中にはレイテンシーに敏感なものもあり、主に検索と Resys が行われます。彼らは OnnxRuntime と TensorRT も使用しており、知識をコミュニティと共有するために Transformer-Deploy OSS ライブラリも作成しました。

最近、著者は生成言語をテストし、その高速化に取り組んでいます。ただし、従来のツールを使用してこれを行うのは非常に難しいことが判明しています。彼らの見解では、Onnx はもう 1 つの興味深い形式であり、機械学習用に設計されたオープン ファイル形式であり、トレーニングされたモデルを保存するために使用され、広範なハードウェア サポートを備えています。

ただし、Onnx エコシステム (主に推論エンジン) には、新しい LLM アーキテクチャを扱うため、いくつかの制限があります。 #追跡を信頼できるため、制御フローなしでモデルを Onnx にエクスポートするのは簡単です。ただし、動的な動作を取得するのはより困難です。

PyTorch とは異なり、ONNX Runtime/TensorRT は、テンソル並列処理を実装するマルチ GPU タスクをまだネイティブにサポートしていません。

TensorRT は、同じ構成ファイルを使用してトランスフォーマー モデルの 2 つの動的軸を管理できません。ただし、通常はさまざまな長さの入力を提供できるようにする必要があるため、バッチ サイズごとに 1 つのモデルを構築する必要があります。
  • 非常に大きなモデルが一般的ですが、Onnx (protobuff ファイルとして) ) ファイル内 サイズに関していくつかの制限があるため、ウェイトをモデルの外に保存することで解決する必要があります。
  • 非常に厄介な事実の 1 つは、新しいモデルは決して高速化されないということです。他の人がそのモデル用のカスタム CUDA カーネルを作成するのを待つ必要があります。既存のソリューションが悪いというわけではありません。OnnxRuntime の優れた点の 1 つはマルチハードウェアのサポートであり、TensorRT は非常に高速であることが知られています。
  • そこで、プロジェクトの作成者は、Python/PyTorch 上で TensorRT と同じくらい高速なオプティマイザーを実現したいと考え、Kernl を作成しました。
  • ###どうやってするの?

    メモリ帯域幅は通常、ディープ ラーニングのボトルネックです。推論を高速化するには、メモリ アクセスを減らすことが多くの場合良い戦略となります。短い入力シーケンスでは、ボトルネックは通常 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Debian Readdirによるファイルソートを実装する方法 Debian Readdirによるファイルソートを実装する方法 Apr 13, 2025 am 09:06 AM

Debian Systemsでは、Readdir関数はディレクトリコンテンツを読み取るために使用されますが、それが戻る順序は事前に定義されていません。ディレクトリ内のファイルを並べ替えるには、最初にすべてのファイルを読み取り、QSORT関数を使用してソートする必要があります。次のコードは、debianシステムにreaddirとqsortを使用してディレクトリファイルを並べ替える方法を示しています。

Debian Readdirのパフォーマンスを最適化する方法 Debian Readdirのパフォーマンスを最適化する方法 Apr 13, 2025 am 08:48 AM

Debian Systemsでは、Directoryコンテンツを読み取るためにReadDirシステム呼び出しが使用されます。パフォーマンスが良くない場合は、次の最適化戦略を試してください。ディレクトリファイルの数を簡素化します。大きなディレクトリをできる限り複数の小さなディレクトリに分割し、Readdirコールごとに処理されたアイテムの数を減らします。ディレクトリコンテンツのキャッシュを有効にする:キャッシュメカニズムを構築し、定期的にキャッシュを更新するか、ディレクトリコンテンツが変更されたときに、頻繁な呼び出しをreaddirに削減します。メモリキャッシュ(memcachedやredisなど)またはローカルキャッシュ(ファイルやデータベースなど)を考慮することができます。効率的なデータ構造を採用する:ディレクトリトラバーサルを自分で実装する場合、より効率的なデータ構造(線形検索の代わりにハッシュテーブルなど)を選択してディレクトリ情報を保存およびアクセスする

Debian Apacheログレベルを設定する方法 Debian Apacheログレベルを設定する方法 Apr 13, 2025 am 08:33 AM

この記事では、DebianシステムのApachewebサーバーのロギングレベルを調整する方法について説明します。構成ファイルを変更することにより、Apacheによって記録されたログ情報の冗長レベルを制御できます。方法1:メイン構成ファイルを変更して、構成ファイルを見つけます。Apache2.xの構成ファイルは、通常/etc/apache2/ディレクトリにあります。ファイル名は、インストール方法に応じて、apache2.confまたはhttpd.confである場合があります。構成ファイルの編集:テキストエディターを使用してルートアクセス許可を使用して構成ファイルを開く(nanoなど):sudonano/etc/apache2/apache2.conf

Debian Readdirが他のツールと統合する方法 Debian Readdirが他のツールと統合する方法 Apr 13, 2025 am 09:42 AM

DebianシステムのReadDir関数は、ディレクトリコンテンツの読み取りに使用されるシステムコールであり、Cプログラミングでよく使用されます。この記事では、ReadDirを他のツールと統合して機能を強化する方法について説明します。方法1:C言語プログラムを最初にパイプラインと組み合わせて、cプログラムを作成してreaddir関数を呼び出して結果をinclude#include#include inctargc、char*argv []){dir*dir; structdireant*entry; if(argc!= 2){(argc!= 2){

Debian OpenSSLがどのように中間の攻撃を防ぐか Debian OpenSSLがどのように中間の攻撃を防ぐか Apr 13, 2025 am 10:30 AM

Debian Systemsでは、OpenSSLは暗号化、復号化、証明書管理のための重要なライブラリです。中間の攻撃(MITM)を防ぐために、以下の測定値をとることができます。HTTPSを使用する:すべてのネットワーク要求がHTTPの代わりにHTTPSプロトコルを使用していることを確認してください。 HTTPSは、TLS(Transport Layer Security Protocol)を使用して通信データを暗号化し、送信中にデータが盗まれたり改ざんされたりしないようにします。サーバー証明書の確認:クライアントのサーバー証明書を手動で確認して、信頼できることを確認します。サーバーは、urlsessionのデリゲート方法を介して手動で検証できます

Debian Mail Serverファイアウォールの構成のヒント Debian Mail Serverファイアウォールの構成のヒント Apr 13, 2025 am 11:42 AM

Debian Mail Serverのファイアウォールの構成は、サーバーのセキュリティを確保するための重要なステップです。以下は、iPtablesやFirewalldの使用を含む、一般的に使用されるファイアウォール構成方法です。 iPtablesを使用してファイアウォールを構成してIPTablesをインストールします(まだインストールされていない場合):sudoapt-getupdatesudoapt-getinstalliptablesview現在のiptablesルール:sudoiptables-l configuration

Debian syslogを学ぶ方法 Debian syslogを学ぶ方法 Apr 13, 2025 am 11:51 AM

このガイドでは、Debian SystemsでSyslogの使用方法を学ぶように導きます。 Syslogは、ロギングシステムとアプリケーションログメッセージのLinuxシステムの重要なサービスです。管理者がシステムアクティビティを監視および分析して、問題を迅速に特定および解決するのに役立ちます。 1. syslogの基本的な知識Syslogのコア関数には以下が含まれます。複数のログ出力形式とターゲットの場所(ファイルやネットワークなど)をサポートします。リアルタイムのログ表示およびフィルタリング機能を提供します。 2。syslog(rsyslogを使用)をインストールして構成するDebianシステムは、デフォルトでrsyslogを使用します。次のコマンドでインストールできます:sudoaptupdatesud

Debian Mail Server SSL証明書のインストール方法 Debian Mail Server SSL証明書のインストール方法 Apr 13, 2025 am 11:39 AM

Debian Mail ServerにSSL証明書をインストールする手順は次のとおりです。1。最初にOpenSSL Toolkitをインストールすると、OpenSSLツールキットがシステムに既にインストールされていることを確認してください。インストールされていない場合は、次のコマンドを使用してインストールできます。sudoapt-getUpdatesudoapt-getInstalopenssl2。秘密キーと証明書のリクエストを生成次に、OpenSSLを使用して2048ビットRSA秘密キーと証明書リクエスト(CSR)を生成します:Openss

See all articles