Intel AMX は、Alibaba Cloud の推奨モデルのパフォーマンス向上に役立ちます

背景

レコメンデーション システムは、電子商取引、ショート ビデオ、ニュース、広告、その他の業界で広く使用されています。レコメンデーション システムは、エンド ユーザーの興味をより正確に理解し、エンド ユーザーのブラウジング エクスペリエンスを向上させることができます。一般的な業界推奨システムでは、リコール、粗選別、詳細選別、並べ替えといった多段階のファネルアプローチが一般的であり、各段階で処理する製品の数が順に減少し、パラメータの数も減少します。通常、計算の複雑さは順番に増加します。ディープラーニングの発展により、主流のレコメンデーションシステムはディープラーニングモデルを使用して、さまざまな製品に対するユーザーの好みを推定するようになりました。ディープラーニングはモデル予測の精度を大幅に向上させ、マルチタスクと複数のシナリオの共同モデリングをサポートできます。ただし、これに伴う問題は、モデル パラメーターの数と計算の複雑さの大幅な増加であり、モデル トレーニングとオンライン推論サービスの両方に大きな課題をもたらします。モデルの精度を向上させるには、通常、数千億のサンプルと特徴に基づいて推奨モデルをトレーニングする必要があります。分散トレーニングを使用する場合でも、推奨ランキング モデルのトレーニングには数日かかる場合があります。これにより、アルゴリズム エンジニアはモデル構造を探索して最適化するという多大なプレッシャーがかかります。オンライン推論サービスは通常、限られた時間内 (< 500 ミリ秒) で結果を返す必要がありますが、最新のレコメンデーション モデルの複雑なモデル構造に必要な膨大な量のパラメーターと計算量により、そのような要件を満たすことが困難なことがよくあります。

これらの課題を解決し、ユーザーがディープ ラーニングレコメンデーション アルゴリズムをより適切に実装できるようにするために、Alibaba Cloud PAI チームは、ユーザーがホワイトボックス方式でフルリンク レコメンデーション ソリューションを迅速に構築できるようにする PAI-REC フルリンク ソリューションを開発しました。図 1 に示すように、PAI-REC プラットフォームには、完全なリンクを推奨するために必要な機能 (特徴の構築、モデルのトレーニング、オンライン サービスなど) が含まれています。主要な機能の 2 つはモデル トレーニングとモデル推論で、それぞれEasyRec 推奨アルゴリズム フレームワークEasyRec プロセッサーによって提供されます。EasyRec 推奨アルゴリズム フレームワークは、ユーザーが推奨モデルを迅速にトレーニングするのに役立ちます。DeepFM、DIN、DBMTL など、業界で広く使用されている推奨アルゴリズム モデルを提供し、コンポーネント化カスタム モデルを通じて新しいモデル構造の迅速な構築をサポートします。さらに、 PAI-NNI-HPOを介したハイパーパラメータ検索の。EasyRec アルゴリズム フレームワークの関連コードは、github でオープンソース化されています。 

図 1. PAI-REC 推奨アルゴリズムのカスタム開発プラットフォーム

PAI-REC オンライン推論リンクは図 2 に示されており、EasyRec プロセッサーがモデル推論リンクを担当します。EasyRec Processor は、ItemFeatureCache、Feature Generator (Feature Intersection)、TF Model Serving の 3 つの部分で構成されており、Kafka/OSS からモデルの増分更新を取得し、FeatureStore から機能のリアルタイム更新を取得できます。

図 2. PAI-REC オンライン推論リンク

推奨モデルのトレーニングとオンライン推論の効率を向上させるために、インテルの関連チームと協力してハードウェアの特性に基づいて徹底的な最適化を行い、モデルのトレーニングの速度を向上させると同時に、QPS (リクエスト数) も向上させました。モデル推論の RT (応答時間) が改善され、CPU 使用率も大幅に改善されました [20% -> 60%]。EasyRec で使用される最適化手法をいくつか紹介します。

AMX行列乗算の最適化

深層学習の推奨モデルでは通常、MLP とアテンションが使用されます。これには一般に多くの行列乗算計算が含まれ、計算量が多く、オペレーター内の計算効率に影響を与えるだけでなく、オペレーターのスケジューリングの効率にも影響します。OneDNN と MKL は行列演算を徹底的に最適化し、行列乗算の計算能力を向上させましたが、依然としてハードウェアの計算能力によって制限されています。行列乗算の計算効率をさらに向上させるために、推奨システムのトレーニングと推論を処理するインテル® 第 4 世代 Xeon® スケーラブル プロセッサー Sapphire Rapids (SPR) の使用を選択できます。このプロセッサは、革新的なアーキテクチャによってクロック サイクルあたりの命令数を増やし、8 チャネル DDR5 メモリをサポートし、メモリの帯域幅と速度を効果的に向上させ、PCIe 5.0 によってより高い PCIe 帯域幅の向上を実現します。このプロセッサーは、一連のマイクロアーキテクチャーの革新と技術仕様の改善が施されただけでなく、新しい AI アクセラレーション エンジンであるインテル® アドバンスト マトリックス エクステンション (AMX) も搭載されています。

前世代のディープラーニング高速化テクノロジー (ベクトル ニューラル ネットワーク命令 VNNI および BF16) と比較して、インテル® AMX テクノロジーは 1 次元ベクトルから 2 次元行列に進化したため、コンピューティング リソースを最大限に活用し、キャッシュを向上させることができます。使用率を高め、潜在的な帯域幅のボトルネックを回避します。この改善により、AI アプリケーションのクロック サイクルあたりの命令数が大幅に増加し、AI ワークロードのトレーニングと推論のパフォーマンスが大幅に向上します。

(a) AMX アーキテクチャ図

(b) 1コアあたりの1サイクルあたりの演算数の比較

図 3. AMX アーキテクチャとパフォーマンス

図 3a は、次の 2 つの主要コンポーネントで構成されるインテル® AMX アーキテクチャを示しています。

  1. タイル: 8 つの 2 次元レジスタ (tmm0、tmm1、…、tmm7 という名前) で構成され、各レジスタの最大サイズは 16 ライン、各ラインは 512 ビット、サイズは 1 KiB です。タイル全体のサイズは 8 KiB です。
  2. TMUL: Tile に接続され、行列乗算計算の実行に使用できる加速エンジンです。

AMX は、AI ワークロードの行列乗算演算用に INT8 および BF16 データ型をサポートします。図 3b に示すように、第 4 世代インテル® Xeon® スケーラブル プロセッサーは単位コンピューティング サイクルあたり 1024 の BF16 演算を実行できますが、第 3 世代インテル® Xeon® スケーラブル プロセッサーは 64 の FP32 演算を実行できます。パフォーマンスが 16 倍向上しました。

混合精度演算

BFloat16 浮動小数点形式は、コンピュータ メモリ内で 16 ビットを占有するコンピュータ数値形式です。この形式は、32 ビット IEEE 754 単精度浮動小数点形式 (float32) の切り詰められた (16 ビット) バージョンです。32 ビット浮動小数点数のおおよそのダイナミック レンジが維持されます。BFloat16 は、ストレージ要件を削減し、機械学習アルゴリズムの計算速度を向上させるために使用されます。BFloat16 は、機械学習用のカスタム 16 ビット浮動小数点形式です。IEEE 754 標準と同様のレイアウトを採用していますが、指数フィールドと仮数フィールドが変更されています。符号ビット、8 つの指数ビット、7 つの仮数ビットで構成されます。比較すると、IEEE 754 標準の半精度浮動小数点数 (Float16) は、1 つの符号ビット、5 つの指数ビット、および 10 の仮数ビットを使用します。IEEE 754 標準の単精度浮動小数点数 (Float32) は、1 つの符号ビット、8 ビットの指数、および 23 ビットの仮数を使用するため、BFloat16 は Float32 と同じダイナミック レンジを持ちます。

Float16 に対する BFloat16 の主な利点は、ダイナミック レンジが広いことです。BFloat16 は指数部により多くのビットを備えているため、より大きな数値範囲とより小さな数値間隔を表現できます。ディープ ニューラル ネットワークをトレーニングするときは、広範囲の値を処理する必要があることが多いため、これによりディープ ラーニングに一定の利点が得られます。もう 1 つの利点は、Float32 との間の変換が高速であることです。変換中に、最後の 16 ビットのみを埋めたり削除したりするだけで、高速変換を実現できます。

図 4. BFloat16 浮動小数点形式の概要

この最適化プランでは、埋め込み部分と行列乗算部分で、ユーザーは BFloat16 を使用して対応する演算を実行することを選択できます。テスト後、BFloat16 を使用すると、精度を損なうことなくメモリを半分に減らすことができます。さらに、フレームワークのネイティブ BFloat16 から Float32 への変換効率は非常に低いですが、AVX のハードウェア命令アクセラレーションを使用すると、パフォーマンスが大幅に向上します。AMX をさらに使用すると、BF16 行列乗算の効率が向上し、AMX を使用すると、プロセッサは 1 サイクルあたり 1,024 回の BFloat16 (16 ビット浮動小数点) 演算を実行できます。

演算子の融合とグラフの最適化

グラフ最適化の観点から見ると、演算子融合は一連の演算子を 1 つの演算子に融合することで効果的にパフォーマンスを向上させることができます。これは、各オペレーターが起動するためにカーネルを必要とし、場合によっては起動時間が実際のコアの計算よりも長い時間がかかるためです。一連の演算子を 1 つの大きな演算子に統合することにより、カーネル起動のオーバーヘッドを削減できます。さらに、オペレータ フュージョンは、CPU キャッシュのヒット率を向上させ、メモリへの中間データの読み取りおよび書き込みに伴うデータ送信のオーバーヘッドを削減するのにも役立ちます。

DNN 部分に加えて、推奨モデルのもう 1 つの主要部分は embedding_lookup の計算です。この関数は、Unique、Gather、Reshape、ExpandDims、SparseSegmentSum および数十の演算子を含む、Tensorflow によって提供される多くの演算子によって実装されています。図 4 では、計算効率が非常に低くなります。EasyRec では、これらの関数を 1 つのオペレーターに統合して実行するため、オペレーターのスケジューリングのコストが削減されます。さらに、AVX 命令を使用して、埋め込み集約 (Combine) 計算を最適化し、ベクトルの加算と乗算の計算効率を向上させます。

デプロイメントの複雑さを軽減するために、一般的な Embedding モデルに対して、embedding_lookup のサブグラフを自動的に検索して照合し、それを融合演算子に置き換えるテンプレート マッチング アルゴリズムを設計しました。これにより、ユーザーの既存のモデルは、 any 調整することで、パフォーマンスの向上をダイレクトに実感できます。通常、embedding_lookup の前のステップは、string_to_hashbucket、bucketize、string_to_number などの操作ですが、対応する OP が一致する場合は、それを embedding_lookup の操作に統合して、カーネル起動の数を減らします。最適化後、主流の推奨モデルの OP の数は通常半分以下に削減され、RT は通常 50% 以上削減できます。

(a) 最適化前

(b) 最適化後

図 5.embedding_lookup サブグラフ最適化のケース

特徴計算(FeatureGenerator)の最適化

レコメンデーション モデル効果の最適化の重要な部分は、主要な機能のマイニングと構築です。フィードバックとまばらな特徴の問題によって制限されるため、レコメンデーション シナリオでは通常、モデルの効果を向上させるために強力な一般化を備えたいくつかの特徴の設計が必要になります。その中で、より一般化された機能のタイプは、LookupFeature、MatchFeature などの表示クロス機能です。このタイプの機能は、過去 1 時間におけるユーザーによるさまざまな製品のクリック数、対応するカテゴリのクリック数など、u2i マッピングを構築することによって、さまざまなアイテムに対するユーザーの行動の統計情報を記録します。検索効率を向上させるために、この種の情報は通常、HashMap の形式でオンラインに保存されます。オフラインの保存と送信では、データの分析と保存の効率が考慮されており、通常は文字列形式で保存されます。文字列のセグメンテーションは、オフライン形式から HashMap への解析プロセスで多くの計算を要します。文字列解析を高速化するために、AVX に基づいて新しい StringSplitOp を設計しました。実際のテスト速度は Tensorflow のネイティブ StringSplit の 3 倍です。トレーニングのために CSV 形式でデータを読み取るプロセスにも多くの文字列解析作業が含まれますが、AVX ベースの StringSplitOp を使用すると、トレーニング速度が 2 倍以上向上します。

図 6. StringSplit の最適化

特徴量計算とembedding_lookupのオーバーラップ実行を実装するために、特徴量計算部分もTensorflowオペレーター(Operation)にカプセル化します。モデルをデプロイするとき、EasyRec Processor は、特徴構成に基づいて特徴計算サブグラフを自動的に構築し、それを TFModel のグラフに結合します。このプロセスも無秩序であり、ユーザーによって認識されます。同じグラフに統合した後、grappler、xla、trt などのグラフ最適化操作をさらに有効にして、大きなグラフ全体をさらに最適化できます。

事業実施効果

上記の最適化は、 EasyRec トレーニング フレームワークと推論フレームワークEasyRec Processorに統合され、複数の顧客シナリオに実装されており、ユーザーが大幅なパフォーマンスの向上を達成できるように支援します。

  1. 約 2,000 の機能スロットと 20G モデル パラメーターを備えた、e コマース シナリオ向けの洗練されたモデル。EasyRec プロセッサーを使用した後、ネイティブ tf サービング qps と比較して、qps は 8 倍増加し、rt は 70% 減少しました。
  2. EasyRec プロセッサを使用した、約 500 のフィーチャー スロット、10G モデル パラメーターのゲーム シーンの洗練されたモデルは、ネイティブ tf サービング QPS と比較して 4 倍向上しました。
  3. あるゲームシーンの微調整モデルをAMX最適化を使用してトレーニングしたところ、トレーニング速度が最適化前の2倍になりました。

展望

第 4 世代インテル® 特典ユーザーによる紹介システムのパフォーマンスを最適化します。より多くのディープ ラーニング モデルのエンドツーエンドのパフォーマンスを向上させるために、インテルと Alibaba Cloud は積極的に協力して、ソフトウェアとハ​​ードウェアの統合を最適化し、ディープ ラーニング モデルのパフォーマンスを加速し、より多くのクラウド ユーザーがメリットを享受できるようにする革新的な方法を模索しています。 。

さらに、インテルが最近、第 5 世代インテル® Xeon® スケーラブル プロセッサー Emerald Rapids (EMR) を発表したことも注目に値します。このプロセッサーには、最大 3 回の LLC を提供する組み込み AI アクセラレーション エンジン AMX も搭載されています。単一の CPU は 8 チャネル 5600MT/s DDR5 をサポートします。2023 Alibaba Cloud Computing Conference で、Alibaba Cloud ECS は、第 8 世代インスタンス g8i のコンピューティング能力がアップグレードされ、SPR から EMR にアップグレードされた後、AI パフォーマンスと全体的なパフォーマンスが大幅に向上したと発表しました。

元のリンク

この記事は Alibaba Cloud のオリジナル コンテンツであり、許可なく複製することはできません。

ブロードコム、既存のVMwareパートナープログラム終了を発表 . サイトBが2度クラッシュ、テンセントの「3.29」レベル1インシデント…2023年のダウンタイムインシデントトップ10を棚卸し、 Vue 3.4「スラムダンク」リリース、 ヤクルトが95Gデータ流出を確認 MySQL 5.7、Moqu、Li Tiaotiao... 2023 年に「停止」される (オープンソース) プロジェクトと Web サイトを棚卸す 「2023 中国オープンソース開発者レポート」が正式リリース 30 年前の IDE を振り返る: のみTUI、明るい背景色…… Julia 1.10が正式リリース Rust 1.75.0がリリース NVIDIAがGeForce RTX 4090 Dを中国で特別販売開始
{{名前}}
{{名前}}

Supongo que te gusta

Origin my.oschina.net/yunqi/blog/10560145
Recomendado
Clasificación