イントロ
最近、トランスフォーマーとトランスフォーマーのようなアーキテクチャーが、事実上の最先端のNLPとして引き継がれています。良い例はBERTです。BERTと、RoBERTaやAlBERTなどのさまざまないとこは、一連のテキストから埋め込みを生成します。埋め込みは、分類、意味的類似性、Q&Aなどのさまざまなダウンストリームタスクで使用でき、それらの一部でほぼ人間レベルのパフォーマンスを実現します。
BERT(および一般的な最先端のNLP)の大きな問題は、この優れた人間レベルが無料で提供されないことです。これは通常、顧客にとっての長い待ち時間と毎月の多額のAWS請求の形で提供されます。
多くの努力がこの課題に取り組むことを試みました。クエリのバッチ処理、柔軟なシーケンス長の許可、スマートなクライアント/サーバー作業の分割は、大いに役立ちます。しかし、実際のBERT推論自体を高速化する方法はありますか?この投稿では、CPUバックエンドを扱っていると想定します。これは、これまでで最も一般的なシナリオです。
適切なライブラリを使用する
最初のステップは、TensorflowまたはPytorchからOnnxまたはOpenVINOのより優れた無料ライブラリに切り替えることかもしれません。Tensorflow / Pytorchのバージョンと特定のハードウェアによっては、この手順で、ここで説明するすべての中で最大の節約になる可能性があります。人気のあるHuggingfaceライブラリはOnnxと継続的に統合されているため、そこでベストプラクティスを確認してください。
つまり、 Tensorflow / Pytorchに対する推論速度を向上させることができると主張しているが、OnnxまたはOpenVINOベンチマークについては言及していない商用ツールに注意する必要があります。理想的には、Onnx / OpenVINOバージョンもチェックすることをお勧めします。これは、それ以降のバージョンにのみTransformerを対象とした最適化が含まれているためです。
量子化
現在OnnxまたはOpenVINOを実行していると仮定すると、パフォーマンスをさらに向上させるにはどうすればよいですか?最初に試すのは量子化かもしれません。これは単に、モデルの浮動小数点の重みをint8の重みに置き換えることを意味します。これにより、通常、多くのメモリスペースを節約できますが、実行時間を大幅に節約できるとは限りません。
この不幸な事実は、AVX512-VNNIが導入されるまで、Intel(およびAMD)CPUのベクトルユニットがint8データでネイティブに動作できなかったためです。少なくとも、ディープラーニングの推論に役立つ方法ではありません。AWSのクラウドCPUの大部分は、現在AVX512-VNNIをサポートしていません。c5.12xlargeで始まる唯一のものであり、コスト計画に関して多くの柔軟性を提供しない可能性があります。
たとえば、c5.2xlargeを使用してシングルコアでBERTベースを実行すると、量子化によってOnnxで25%のスピードアップしか得られませんでした。これを、スピードアップが約250%であったc5.12xlargeのAVX512-VNNIコアと比較してください。
量子化の利点は、通常、精度が1%未満しか失われないことです。また、ほとんどのディープラーニングフレームワークにうまく統合されているため、簡単に試すことができます。https://colab.research.google.com/github/pytorch/tutorials/blob/gh-pages/_downloads/dynamic_quantization_bert_tutorial.ipynb。
剪定
量子化の代わりに剪定があります。剪定は、重み行列にゼロ(別名スパース性)を導入し、メモリと計算の両方の節約を約束します。たとえば、Huggingfaceによる最近の作業であるpruneBERTは、ダウンストリームタスクを微調整しながら、BERTで95%のスパース性を達成することができました。MITの宝くじ仮説チームによる別の有望な研究は、下流のタスクを微調整するための密なものと同様のパフォーマンスを達成する、70%の疎な事前トレーニング済みBERTを取得できることを示しています。TensorflowとPytorchはどちらも、剪定をいじくり回すためのサポートを提供します。
ただし、CPUはスパース計算をあまり好まないため、プルーニングからスピードアップを得るのは量子化よりもさらに困難です。確かに、前回チェックしたとき、Pytorchのスパース行列の密行列の乗算は、スパース行列に98%を超えるゼロが含まれている場合にのみ、密密バージョンよりも高速です。通常、精度をあまり失うことなく、最大で90%のスパース性またはおそらく95%のスパース性を許容できます。
OctoMLのTVMなどの最近のソリューションは、スパース推論の問題に取り組み始めています。 https://medium.com/octoml/using-sparsity-in-apache-tvm-to-halve-your-cloud-bill-for-nlp-4964eb1ce4f2。Tensorflowとの比較のみが示されていますが、pruneBERTでの2倍近くの高速化はかなり有望なようです。残念ながら、これはAMD CPUでのみ機能するようです。おそらく、IntelCPUに固有のAVX512用に最適化されていないためです。
Neuralmagicは、特にスパースニューラルネットワークを高速化するMITスタートアップです。報告されたパフォーマンスは素晴らしいものですが、残念ながら現在はコンピュータービジョンモデルのみをサポートしています。
ここに、私のライブラリであるSparseDNNの広告を追加します。これは、BERTのようなモデルに対して、現在市場で最高のスパース推論パフォーマンスを提供していると思います。 https://arxiv.org/abs/2101.07948。SparseDNNは、pruneBERTの5倍の高速化を提供し、IntelCPUとAMDCPUの両方で機能します。SparseDNNは、ResNetやMobileNetなどの一般的なコンピュータービジョンネットワークの高速化も提供します。
注目すべきことに、現在、量子化とプルーニングの両方を利用できるライブラリはありません。(ご存知の場合はコメントしてください。)SparseDNNは実験的なサポートを提供しますが、そのスパースINT8カーネルは浮動小数点のものよりわずかに高速です。
結論
この記事では、BERTを例として使用して、難易度の高い順にニューラルネットワークのパフォーマンスを向上させるいくつかの方法について説明しました。実際にどの方法を採用するかをどのように決定する必要がありますか?それはすべて、特定のアプリケーションの精度とスピードアップのトレードオフに依存します。直感的には、精度を犠牲にしても構わないと思っている場合は、ニューラルネットをさらに高速化できます。
BERTに適用される、この記事に記載されているいくつかの方法の精度と高速化のトレードオフが上にプロットされています。セットアップでは、AVX512-VNNIなしで単一のCPUコアを使用していることを前提としています。理想的には、精度の低下が少なく、高速化された右下隅に座りたいと考えています。緑の線は、最適化オプションのパレート最適フロンティアです。
この記事は、ニューラルネットワークの最適化の完全なガイドとなることを意図したものではありません。たとえば、量子化はint8に限定されず、構造化プルーニングについても取り上げませんでした。AWS GravitonやInferentiaなどの新しいハードウェアオプションも、アーキテクチャに依存する興味深いトレードオフを提供します。しかし、うまくいけば、それはあなたにいくつかのスターターアイデアと異なる最適化方法を比較するための精神的な枠組みを与えるでしょう。
次回まで…
開示:私はディープラーニング推論の加速でコンサルティングビジネスを運営しています:https://www.oneseventwoai.com/
私は、キーワード抽出タスクの有効なアルゴリズムを見つけるために積極的に取り組んできた2000のドキュメントのコーパスで、キーワード抽出タスクの7つの関連するアルゴリズムを比較しました。目標は、効率的な方法でキーワードを抽出できるアルゴリズムを見つけることでした。データのコーパスが数百万行に急速にヒットするにつれて、抽出の品質と実行時間のバランスが取れていました。
AWSは、過去5〜10年間で、開発者の間で最も広く使用されているクラウドサービスプラットフォームの1つになりました。アマゾンウェブサービスは32%の市場シェアを持ち、現在クラウドインフラストラクチャサービス市場で最も人気のあるベンダーです。
トーチビジョンライブラリの直感的な理解—基本から上級(パート1/3)トーチビジョンとは何ですか?Torchvisionは、PyTorchと連携するコンピュータービジョン用のライブラリです。効率的な画像およびビデオ変換用のユーティリティ、一般的に使用される事前トレーニング済みモデル、および一部のデータセットがあります(torchvisionはPyTorchにバンドルされていないため、個別にインストールする必要があります。
トーチビジョンライブラリの直感的な理解—変換の14の視覚的な例(パート2/3)パート1(トーチビジョンのモジュールの紹介)については、以下のリンクにアクセスしてください。この記事では、データセット(画像)が読み込まれた直後にシーケンスで実行できる単純な画像変換関数である変換を実験します。
グラフニューラルネットワーク(GNN)は、グラフデータから学習するための標準ツールボックスとして登場しました。GNNは、コンテンツの推奨や創薬など、さまざまな分野で影響の大きい問題の改善を推進できます。
前回の投稿で、ブロブ検出と連結成分に基づいて対象のオブジェクトを識別する方法を学びました。ただし、関心のある特定のオブジェクトを画像から分離する必要がある場合があります。
ハリー・スタイルズは、マニキュアとスキンケアを含む彼の新しいウェルネスブランド、プレージングでジェンダーの流動性を次のレベルに引き上げています。
フリートウッド・マックの歌手、スティーヴィー・ニックスは、リンジー・バッキンガムとの最初のアルバムカバーでヌードをポーズすることを「強制された」と感じたことを明らかにしました。
ミュージシャンのジー・イージーとマシン・ガン・ケリーは、ポップシンガーのハルシーをめぐって有名に争いました。しかし、2人のラッパーのどちらがより高い純資産を持っていますか?
スティーヴィー・ニックスとシェリル・クロウは、何年にもわたって数回コラボレーションしてきました。ニックスは彼女がクロウに与えたアドバイスの1つを共有しました。
ケンタッキー州の田舎に住むFugatesとCombsの家族は、遺伝的宝くじを失いました。どちらも、結婚するにつれて肌が青く見える、まれな劣性形質を共有していました。これの原因は何でしたか?そして、家族はどうなりましたか?
カリフォルニアコンドルを絶滅から救うためのプログラムで、2羽の父親のいないオスのヒナが飼育されています。そのような「処女」の誕生はどのように可能ですか?
さて、スパイク・リーがシャイラクという映画を作っていると最初に聞いたとき、彼の多作が彼を一種のヒット・オア・ミスにしていることを考えると、私は少し疑わしかった。Chiraqは、銃やギャングによる暴力が蔓延しているため、戦争地帯に似ているシカゴの地域のニックネームです。
毎日、Watch Thisは、その週に公開される新しい映画に触発されたスタッフの推奨事項を提供します。今週:ジェシカ・ハウスナーの独特な時代劇のアムール・フーが劇場に登場するので、私たちは他の19世紀のロマンスに手を差し伸べます。
画像:メモリー・アルファ経由のヒカル・スールースタートレック・ビヨンドのクリエイティブ・チーム、そして現在ヒカル・スールーを演じているジョン・チョーは、同じセックスパートナーと一緒にヒカル・スールーのシーンを含めることは大したことではないと判断したかもしれません、ジョージ・タケイ役を始めた俳優はハリウッドレポーターに次のように語った。「ゲイのキャラクターがいることをうれしく思います。
倉庫の乗組員はいい人でしたが、悪ふざけが好きすぎました。それで、その朝自転車を駐車した場所をちらっと見て、空きスペースを見たとき、私は、それらの肉の頭がそれを傷つけていない方がいいと思いました。
俳優のダンエイクロイドの兄弟であるピーターエイクロイドは、1979年のサタデーナイトライブの1シーズンで作家とキャストの両方のメンバーを務めました。
タイガーキングスターのジョセフ 'ジョーエキゾティック'マルドナド-パッセージは当初、彼の前立腺癌の診断を明らかにした後、今月後半に移管されることになっていた
Cardi BとOffsetの3歳の娘、Kultureは、Instagramで彼女の新しい編みこみのヘアスタイルを披露しました。