ホームページ > 記事 > テクノロジー周辺機器 > アドレス標準化サービス AIディープラーニングモデル推論最適化実践
ディープラーニングは自然言語処理などの分野で実際のビジネスシナリオに広く実装されており、その推論パフォーマンスの最適化は導入プロセスの重要な部分となっています。推論パフォーマンスの向上: 導入されたハードウェアの能力を最大限に活用し、ユーザーの応答時間を短縮し、コストを節約できる一方で、応答時間を維持しながらより複雑な構造の深層学習モデルを使用できるようになります。これにより、ビジネスの正確性指標が向上します。
この記事では、アドレス標準化サービスにおける深層学習モデルの推論パフォーマンスの最適化作業を実施します。高性能オペレーター、定量化、コンパイルの最適化などの最適化手法により、モデル の精度を低下させることなく、AI モデルのエンドツーエンド推論速度を最大 4.11 倍達成できます。指標の改善。 1. モデル推論パフォーマンスの最適化方法論
1.1 自然言語処理シナリオの最適化の難しさ
典型的な自然言語処理 (自然言語処理、NLP) タスクでは、リカレント ニューラル ネットワーク ( Recurrent Neural Network (RNN) と BERT [7] (Transformers からの双方向エンコーダー表現) は、使用率の高い 2 つのタイプのモデル構造です。柔軟な拡張および縮小メカニズムとコスト効率の高いオンライン サービスの展開を促進するために、自然言語処理タスクは通常、インテル® Xeon® プロセッサーなどの x86 CPU プラットフォームに展開されます。ただし、ビジネス シナリオが複雑になるにつれて、サービスの推論コンピューティング パフォーマンス要件はますます高くなっています。上記の RNN モデルと BERT モデルを例として挙げると、CPU プラットフォームに展開した場合のパフォーマンスの課題は次のとおりです。
#リカレント ニューラル ネットワークは、シーケンス データを入力として受け取り、シーケンスの進化方向に再帰を実行し、すべてのノード (巡回ユニット) がチェーンで接続された再帰的ニューラル ネットワークの一種です。実際に使用される一般的な RNN には、LSTM、GRU、およびいくつかの派生バリアントが含まれます。計算プロセス中、以下の図に示すように、RNN 構造の後続の各ステージの出力は、対応する入力と前ステージの出力に依存します。したがって、RNN はシーケンス型のタスクを完了することができ、NLP や近年ではコンピューター ビジョンの分野でも広く使用されています。 BERT と比較して、RNN は必要な計算が少なく、モデル パラメーターを共有しますが、計算タイミングに依存するため、シーケンスに対して並列計算を実行することができません。
BERT
##BERT[7] は、教師なし事前トレーニング (Unsupervised Pre-training) がより深いネットワーク構造を持つ大規模なデータセットで完了できることを証明し、それによって特定のタスクの微調整 (ファインチューン) のためのモデルを提供します。これらの特定のタスクの精度が向上するだけでなく、トレーニング プロセスも簡素化されます。 BERT のモデル構造はシンプルで拡張が容易で、ネットワークを深くしたり広げたりするだけで、RNN 構造よりも高い精度を得ることができます。一方で、精度の向上には計算オーバーヘッドの増大が伴いますが、BERT モデルには多数の行列乗算演算が含まれており、CPU にとっては大きな課題となります。
に基づく上記 推論パフォーマンスの課題を分析するには、ソフトウェア スタック レベルからのモデル推論の最適化には主に次の戦略が含まれると考えています。
モデル圧縮: 量子化、スパース性、プルーニングなど特定のシナリオ向けの高パフォーマンス オペレーター
AI コンパイラーの最適化
モデル量子化とは、浮動小数点アクティベーション値または重み (通常は 32 ビット浮動小数点数で表される) を低ビット整数 (16 ビットまたは 8 ビット) に近似し、計算を 1 つの単位で完了することを指します。低ビット表現のプロセス。一般に、モデルの量子化によりモデル パラメータを 圧縮することができ、それによってメモリ アクセスを削減し、低ビット コンピューティング命令 (インテル® ディープ ラーニング ブースト ベクトル ニューラル ネットワーク命令、VNNI など) を効果的に利用することで、モデル ストレージのオーバーヘッドを削減できます。 , 推論速度の向上を獲得します。
与えられた浮動小数点値を次の式で下位ビット値にマッピングできます。
ここで、合計は次のように取得されます。量子化アルゴリズム。これに基づいて、Gemm 演算を例として、浮動小数点計算プロセスがあると仮定すると:
# 低ビット領域で対応する計算プロセスを完了できます:
高パフォーマンス演算子
深層学習フレームワークでは、さまざまなプロセス(例えば、トレーニング)、演算子の推論オーバーヘッドには冗長性があります。モデル構造が決定されると、オペレーターの推論プロセスは、元の完全なプロセスのサブセットにすぎません。したがって、モデルの構造が決定したら、高性能の推論演算子を実装し、元のモデルの一般的な演算子を置き換えて推論速度を向上させることができます。高性能演算子を CPU に実装するための鍵は、メモリ アクセスを減らし、より効率的な命令セットを使用することです。一方、元の演算子の計算プロセスでは、多数の中間変数が存在し、これらの変数はメモリ上で大量の読み書き操作を実行するため、推論速度が遅くなります。この状況に対応して、計算ロジックを変更して中間変数のコストを削減できますが、一方で、ベクトル化された命令セットを直接呼び出して、インテル® Xeon® の処理など、オペレーター内の一部の計算ステップを高速化することもできます。プロセッサ上の AVX512 命令セット。
AI コンパイラの最適化
ディープラーニング分野の発展に伴い、モデルの構造と導入されているハードウェアを紹介し、多様な進化の傾向を示します。モデルをさまざまなハードウェア プラットフォームにデプロイする場合、通常、各ハードウェア メーカーが発売したランタイムを呼びます。実際のビジネス シナリオでは、次のようないくつかの課題に直面する可能性があります。ベンダーのランタイムに基づいて迅速に展開できます。現時点では、メーカーに更新を依頼するか、プラグインなどのメカニズムを使用して不足している演算子を実装する必要があります。ビジネスには複数のモデルが含まれており、これらのモデルは複数の深層学習フレームワークによってトレーニングされる場合があり、さらに、モデルを複数のハードウェア プラットフォームに展開する必要がある場合もあります。この際、形式の異なるモデルを各ハードウェアプラットフォームが要求する形式に変換する必要があると同時に、各推論フレームワークの実装の違いによるモデルの精度や性能の変化などの問題も考慮する必要があります。特に、数値の差に非常に敏感な量子化などの領域で使用されます。
2. 標準化への取り組みの紹介
公安および政府関連、電子商取引物流、エネルギー (水道、電気、ガス)、オペレーター、新規事業におけるビジネス開発小売、金融、医療、その他の業界 このプロセスには大量の住所データが含まれることが多く、これらのデータは標準的な構造仕様を形成していないことが多く、住所の欠落や 1 か所に複数の名前が存在するなどの問題が発生します。デジタル化の進展に伴い、都市部の住所が標準ではないという問題がますます顕著になってきています。
アドレス アプリケーションの既存の問題
アドレスの標準化[2](アドレス浄化) は Alibaba Damo Academy の NLP チームが依存していますAlibaba Cloud の大規模なアドレス コーパスとその強力な NLP アルゴリズムにより、高性能かつ高精度の標準アドレス アルゴリズム サービスが提供されます。アドレス標準化製品は、アドレスデータの標準化と統一された標準アドレスライブラリの確立の観点から、高性能なアドレスアルゴリズムを提供します。
#住所標準化の利点この住所アルゴリズム サービスは、住所データを自動的に標準化し、複数の住所の問題を効果的に解決できます。住所識別、住所真正性識別、その他の住所データは標準化されておらず、手動管理には時間と労力がかかり、住所データベースの重複構築の問題により、企業、政府機関、開発者に住所データのクリーニングと住所標準化機能が提供されます。住所データをより良くするためにビジネスをサポートします。住所標準化製品には次のような特徴があります。
今回最適化したモジュールはアドレス標準化の検索モジュールに属します。住所検索とは、ユーザーが住所テキストに関連する情報を入力することを意味し、住所ライブラリと検索エンジンに基づいて、ユーザーが入力した住所テキストが検索および関連付けられ、関連する POI (Point of Interest) 情報が返されます。住所検索機能は、ユーザーのデータ処理エクスペリエンスを向上させるだけでなく、緯度と経度のクエリ、ドアの住所の標準化、住所の正規化など、複数の住所のダウンストリーム サービスの基礎でもあるため、住所全体で重要な役割を果たします。サービスシステム。
住所サービス検索システムの概略図具体的には、この最適化モデルは マルチタスク地理予測に基づいています。 マルチタスク ベクトル リコール モデル と 洗練されたランキング モデル は、トレーニング言語モデル ベース によって生成されます。
マルチタスクの地理的事前トレーニング言語モデル ベース マスク言語モデル (MLM) タスクに基づいて、関連する関心点の分類と住所を組み合わせます。 要素の識別 (州、都市、地区、POI など)、メタ学習 (メタ ラーニング) を通じて、複数のタスクのサンプリング確率が適応的に調整され、一般的な住所の知識が言語モデルに統合されます。
マルチタスク アドレス事前トレーニング モデルのベース図マルチタスク ベクトル リコール モデルベース上記のベーストレーニングに基づく結果には、ツインタワーの類似性、Geohash (アドレスエンコーディング) 予測、単語の分割、および用語の重み付け (単語の重み付け) の 4 つのタスクが含まれます。
マルチタスクベクトルリコールモデルの概略図アドレス類似性マッチングを計算するためのコアモジュールとして、Fineランキング モデル は、上記のベースに基づいており、大量のクリック データとアノテーション データのトレーニング [3] を導入し、モデル蒸留技術 [4] によってモデルの効率を向上させます。最後に、リコールモデルのリコールに適用されたアドレスライブラリドキュメントを使用して並べ替えました。上記のプロセスに基づいてトレーニングされた 4 層の単一モデルは、CCKS2021 中国語 NLP 住所相関タスク [5] で 12 層のベースライン モデルよりも優れた結果を達成できます (詳細については、「パフォーマンス表示」セクションを参照してください)。
洗練されたモデルの概略図
Alibaba Cloud Machine Learning Platform PAI チームによるブレード製品サポートの開始上記のすべての最適化ソリューションは、統一されたユーザー インターフェイスを提供し、高性能オペレーター、インテル カスタム バックエンド、BladeDISC などの複数のソフトウェア バックエンドを備えています。
ブレード モデル推論最適化アーキテクチャ図
3.1 ブレード
Blade は、Alibaba Cloud 機械学習 PAI チーム (人工知能のプラットフォーム) によって立ち上げられた汎用推論最適化ツールで、モデル システムを共同最適化して最適な推論パフォーマンスを実現できます。計算グラフの最適化、Intel® oneDNN などのベンダー最適化ライブラリ、BladeDISC コンパイル最適化、Blade 高性能オペレーター ライブラリ、Costom バックエンド、Blade 混合精度、その他の最適化手法を有機的に統合します。同時に、シンプルな使用法によりモデル最適化の敷居が低くなり、ユーザーエクスペリエンスと生産効率が向上します。
PAI-Blade は、Tensorflow pb、PyTorch torchscript などを含む複数の入力形式をサポートしています。最適化対象のモデルに対して、PAI-Blade はモデルを分析し、考えられるさまざまな最適化手法を適用し、さまざまな最適化結果から最も明白な加速効果を持つ手法を最終的な最適化結果として選択します。
ブレード最適化図
導入の成功率を確保しながら最大限の最適化効果を得るために、PAI-Blade は Optimize を採用しています。 「円グラフ」方式、つまり:
ブレード サークル ダイアグラム図
Blade Compression は、Blade によって開始されたモデル圧縮モデルです。開発者による効率的なモデル圧縮と最適化作業を支援するために設計されたツールキット。量子化、枝刈り、スパース化などのさまざまなモデル圧縮関数が含まれています。圧縮モデルは Blade を通じて簡単にさらに最適化でき、モデル システムの組み合わせを究極的に最適化できます。
定量化の観点から見ると、Blade Compression:
同時に、特定の状況に合わせてカスタマイズされた開発を容易にするための豊富なアトミック機能 API を提供します。
ブレード圧縮図BladeDISC は、Alibaba Cloud マシンによって起動される機械学習指向の製品です。学習プラットフォーム PAI チーム: シーンのダイナミック シェイプ ディープ ラーニング コンパイラーは、Blade のバックエンドの 1 つです。主流のフロントエンド フレームワーク (TensorFlow、PyTorch) とバックエンド ハードウェア (CPU、GPU) をサポートし、推論とトレーニングの最適化もサポートします。
BladeDISC アーキテクチャ図
3.2 Intel® Xeon® に基づく高性能オペレーター
ニューラル ネットワーク モデルのサブネットワークには、通常、長期にわたる汎用性とPyTorch などの Linear Layer や Recurrent Layer などのモデル構築の基本モジュールであり、特定の機能を担う汎用性の高いモジュールであり、これらのモジュールを組み合わせることで様々なモデルが得られ、これらのモジュールも最適化されています。 AIコンパイラー、ターゲット。したがって、最高のパフォーマンスの基本モジュールを入手し、それによって最高のパフォーマンスのモデルを実現するために、インテルは、効率的な AVX512 命令の有効化、オペレーターの内部計算スケジューリング、オペレーターの有効化など、X86 アーキテクチャー向けにこれらの基本モジュールのマルチレベルの最適化を実行しました。融合、キャッシュ最適化、並列最適化など。
アドレス標準化サービスでは、リカレント ニューラル ネットワーク (RNN) モデルがよく登場しますが、RNN モデルのパフォーマンスに最も影響を与えるモジュールは LSTM または GRU です。この章では、LSTM をこの例では、入力が可変長で複数のバッチである場合に、LSTM のパフォーマンスを究極的に最適化する方法を示します。
通常、高性能と低コストを追求するクラウド サービスは、さまざまなユーザーのニーズや要求に応えるために、さまざまなユーザーの要求をまとめてコンピューティング リソースを最大限に活用します。下図に示すように、埋め込み文は合計 3 つあり、内容と入力長が異なります。
元の入力データ
LSTM 計算をより効率的にするには、PyTorch の Pack_padded_sequence() 関数を使用する必要があります。以下の図に示すように、バッチ入力のパディングとソート、パディング データ テンソル、データ テンソルを記述するバッチ サイズ テンソル、およびデータ テンソルを記述する元のシリアル番号テンソル。
元の入力データ
ここまでで LSTM の入力が準備できましたが、LSTM の計算プロセスは次のようになります。以下の図は、入力テンソルがバッチで計算され、ゼロ値の計算がスキップされることを示しています。
入力の LSTM 計算ステップ
LSTM のさらに詳細な計算最適化を、以下の図 17 に示します。数式内の乗算部分は計算され、数式間で融合されます。下図に示すように、元の 4 つの行列乗算は 1 つの行列乗算に変換され、数値計算とマルチスレッド並列最適化には AVX512 命令が使用され、効率的な LSTM を実現します。オペレーター。このうち、数値計算とは行列の乗算とその後の要素ごとの演算を指します。行列の乗算部分については、このソリューションは計算に oneDNN ライブラリを使用します。ライブラリには効率的な AVX512 GEMM が実装されています。要素ごとの演算については、このソリューションは AVX512 命令セットを使用します。演算子の融合に使用され、キャッシュ内のデータのヒット率が向上します。
#LSTM コンピューティング フュージョン[8]3.3 カスタム バックエンド
Intel カスタムbackend[9] は、Blade のソフトウェア バックエンドとして、モデルの量子化とスパース推論のパフォーマンスを強力に加速し、主に 3 つのレベルの最適化を含みます。まず、プリミティブ キャッシュ戦略を使用してメモリを最適化し、次にグラフ フュージョンの最適化を実行し、最後に演算子レベルで、スパース演算子と量子化演算子を含む効率的な演算子ライブラリを実装します。
#インテル カスタム バックエンド アーキテクチャ図
低精度量子化
スパースや量子化などの高速演算子は、VNNI 命令セットなどのインテル® DL ブースト アクセラレーション命令セットの恩恵を受けます。
VNNI 命令の紹介
上の図は VNNI 命令を示しています。3 つの AVX512 BW 命令を使用して 8 ビットを高速化できます。VPMADDUBSW は、まず 8 ビットで構成される 2 組の配列を乗算および加算して、16 ビットのデータを取得します。 , VPMADDWD は隣接するデータを加算して 32 ビット データを取得します。最後に、VPADDD は定数を追加します。これら 3 つの関数は AVX512_VNNI を形成できます。この命令は、推論における行列乗算を高速化するために使用できます。
グラフ フュージョン
さらに、カスタム バックエンドは、行列の乗算などのグラフ フュージョンも提供します。中間の一時 Tensor を使用すると、後続の命令が直接実行されます (つまり、後続の項目の事後演算が前の演算子と融合されるため、データ処理が削減され、実行時間が短縮されます。次の図は例です。赤いボックス内の演算子)融合後は、追加のデータ移動を排除でき、新しいオペレーターになります。
グラフフュージョン
メモリ最適化
メモリ割り当てと解放はオペレーティング システムと通信するため、実行時の遅延が増加します。オーバーヘッドのこの部分を削減するために、カスタム バックエンドはプリミティブ キャッシュの設計を追加しました。プリミティブ キャッシュは、作成されたプリミティブをキャッシュするために使用されます。プリミティブはシステムによってリサイクルできないため、次の呼び出しの作成オーバーヘッドが軽減されます。
同時に、次の図に示すように、時間のかかるオペレータの操作を高速化するためのキャッシュ メカニズムが確立されました。
プリミティブ キャッシュ
定量関数 前述したように、モデル サイズが小さくなると、計算とアクセスのオーバーヘッドが大幅に削減されるため、パフォーマンスが大幅に向上します。改善されました。4. 全体的なパフォーマンスの表示
上記の最適化ソリューションの効果を検証するために、住所検索サービスの 2 つの典型的なモデル構造を選択しました。テスト環境は次のとおりです:
#LSTM 構造
入力形状
#最適化後 RT |
加速率 |
|||
#LSTM - A |
7x200 |
0.199ms |
#0.066ms
| ## 3.02x
|
|
##0.914ms |
0.307ms |
## 2.98x | LSTM - B |
70x50 |
0.266ms |
#0.098ms
|
# 2.71x |
|
##0.804ms |
##0.209ms |
3.85x |
最適化の前後で、ESIM のエンドツーエンドの推論速度は表に示すとおりですが、最適化の前後でモデルの精度は変わりません。
ESIM[6] |
#ESIM[6] ブレード オペレーターの最適化
| #加速率##RT
|
|||||||||
##3.4ms |
# 1.85x |
# 推論パフォーマンス前後の ESIM モデルの最適化 4.2 BERT BERT[7] は自然界で広く使用されています。近年では言語処理(NLP)、コンピュータビジョン(CV)などが広く採用されています。 Blade ではこの構造に対してコンパイル最適化 (FP32) や量子化 (INT8) などのさまざまな手法を備えています。 速度テストでは、テストデータの形状を 10x53 に固定し、各種バックエンドと各種最適化手法の速度性能を以下の表に示します。ブレードのコンパイルと最適化後、または INT8 量子化後のモデル推論速度は、libtorch や onnxruntime よりも優れており、推論のバックエンドは Intel Custom Backend & BladeDisc であることがわかります。量的高速化後の 4 層 BERT の速度は 2 層 BERT の 1.5 倍であることは注目に値します。これは、ビジネスが高速化しながら、より大きなモデルを使用し、より高いビジネス精度を得ることができることを意味します。 精度の観点から、CCKS2021 中国語 NLP 住所相関タスクに基づいて関連モデルを表示します。 [5] 以下の表に示すパフォーマンス。 DAMO アカデミーのアドレス チームが独自に開発した 4 層 BERT マクロ F1 の精度は、標準の 12 層 BERT ベースよりも高くなっています。ブレード コンパイルの最適化によりロスレス精度を達成でき、ブレード圧縮量子化トレーニング後の実際の量子化モデルの精度は、元の浮動小数点モデルよりわずかに高くなります。
#78.72(1.48) アドレス 4 層 BERT ブレード コンパイルの最適化
##アドレス 4 層 BERT ブレード量子化 BERT 関連の精度結果に対処する |
以上がアドレス標準化サービス AIディープラーニングモデル推論最適化実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。