多くの企業が GPU コンピューティング能力の開発を組み合わせて、自社の機械学習の問題に対するソリューションを模索しています。たとえば、Xiaohongshu は推論のパフォーマンスと効率を向上させるために、2021 年にプロモーション検索モデルの GPU ベースの変換を開始しました。移行プロセスでは、異機種ハードウェアへのスムーズな移行方法、Xiaohongshu のビジネス シナリオとオンライン アーキテクチャに基づいた独自のソリューションの開発方法など、いくつかの困難にも直面しました。コスト削減と効率向上という世界的なトレンドの下、ヘテロジニアスコンピューティングは有望な方向性となっています。ヘテロジニアスコンピューティングでは、異なるタイプのプロセッサ(CPU、GPU、FPGAなど)を組み合わせることでコンピューティングパフォーマンスを向上させ、効率の向上とコストの削減を実現できます。 1. 背景Xiaohongshu の推奨、広告、検索などの主要なシナリオのモデル サービスは、ミドルエンドの推論アーキテクチャによって統一的にサポートされます。小紅書の事業が発展し続けるにつれて、プロモーション検索などのシナリオのモデル規模も拡大しています。主な推奨シナリオの正確なランキングのためのメインモデルを例にとると、2020年の初めから、アルゴリズムは完全な興味モデリングを導入し、ユーザーの過去の行動記録の平均長さは約100倍に拡大しました。モデル構造も、初期のマルチタスクから複数回の反復を経て、モデル構造の複雑さは増加し続けています。これらの変更により、モデル推論のための浮動小数点演算の数は 30 倍に増加し、モデル メモリ アクセスは約 5 倍に増加しました。 写真 2. モデルサービスアーキテクチャの概要モデルの特徴:小紅書の2022年末の主な推奨モデルを例にとると、モデルは十分にスパースであり、一部の構造は連続値特徴と行列演算で構成されています。また、<note id * user city>などの大規模なスパースパラメータもあります。単一モデルのスパース特徴は1TBにも達しますが、比較的効果的なモデル構造の最適化により、密な部分は10GB以内に抑えられ、ビデオメモリに配置できます。ユーザーが Xiaohongshu を閲覧するたびに、計算される合計 FLOP は 40B に達し、タイムアウトは 300 ミリ秒以内に制御されます (機能処理と検索を除く)。 推論フレームワーク: 2020年以前、XiaohongshuはオンラインサービスフレームワークとしてTensorFlow Servingフレームワークを使用していました。2020年以降、TensorFlowCoreをベースにした自社開発のLambdaサービスへと徐々に進化しました。 TensorFlow Serving は、モデル推論の正確性と信頼性を確保するために、グラフに入る前に TensorProto -> CTensor のメモリ コピーを実行します。しかし、ビジネス規模が拡大するにつれて、メモリコピー操作がモデルのパフォーマンスに影響を与えるようになります。 Xiaohongshu が独自に開発したフレームワークは、最適化による不要なコピーを回避しながら、ランタイム、グラフ スケジューリング機能、最適化機能のプラグ可能な機能を保持し、後で TRT、BLADE、TVM などのさまざまな最適化フレームワークを調整して使用するための基盤を築きます。今では、自社開発の技術を適切なタイミングで選択することが賢明な選択であるように思われます。同時に、データ転送コストを最小限に抑えるために、推論フレームワークは特徴抽出と変換の実装の一部も引き受けます。ここで、Xiaohongshuは、サービスの近い側に自社開発のエッジストレージを展開することも見積もっており、これにより、リモートでデータを取得するコストの問題が解決されます。 マシンの特性: Xiaohongshu には独自のコンピュータ ルームがありません。すべてのマシンはクラウド ベンダーから購入されます。したがって、さまざまなモデルを選択するかどうかは、購入できるモデルによって大きく左右されます。モデル推論の計算は純粋な GPU 計算ではありません。適切なハードウェア比率を見つけるには、GPU\CPU を考慮するだけでなく、帯域幅、メモリ帯域幅、NUMA 間の通信遅延などの問題も考慮する必要があります。 写真 GPU 機能 GPU 機能:ここで、Xiaohongshu は他の企業と同じ問題に直面しています。GPU カーネルの実行は、データ転送、カーネルの起動、カーネルの計算、結果の転送という段階に分けられます。このうち、データ転送はホストメモリから GPU メモリにデータを転送すること、カーネル起動はカーネルコードをホスト側から GPU 側に転送し、GPU 上でカーネルを起動すること、カーネル計算はカーネルコードを実際に実行して結果を計算すること、結果転送は計算結果を GPU メモリからホストメモリに転送することです。計算のためにカーネルに渡される作業は重くなく、実際の計算時間は非常に短いのに、データ転送とカーネルの起動に多くの時間が費やされると、GPU 使用率は向上せず、空実行が発生することもあります。 写真 見積サービスフレームワーク 3. GPU最適化の実践3.1 システムの最適化3.1.1 物理マシン 物理マシンの最適化に関しては、従来の最適化のアイデアをいくつか採用できます。主な目的は、GPU以外のシステムオーバーヘッドのコストを削減し、仮想化仲介業者の利益率を削減することです。一般的に、システムの最適化によりパフォーマンスが 1% ~ 2% 向上します。当社の経験から、クラウド ベンダーの実際の機能に基づいて最適化する必要があります。 ● 割り込み分離: GPU 割り込みを分離して、他のデバイスからの割り込みが GPU の計算パフォーマンスに影響を与えないようにします。 ● カーネルバージョンのアップグレード: システムの安定性とセキュリティが向上し、GPU ドライバーの互換性とパフォーマンスが向上します。 ● 命令パススルー: GPU 命令を物理デバイスに直接渡し、GPU の計算速度を高速化します。 3.1.2 仮想化とコンテナ 複数のカードの場合、1 つのポッドが特定の NUMA ノードにバインドされ、CPU と GPU 間のデータ転送速度が向上します。 ● CPU NUMA アフィニティ: アフィニティとは、CPU の観点から見てどのメモリ アクセスがより高速で、より低レイテンシであるかを指します。前述したように、CPU に直接接続されたローカル メモリの方が高速です。そのため、オペレーティング システムは、CPU NUMA アフィニティを考慮して、タスクが配置されている CPU に応じてローカル メモリを割り当て、アクセス速度とパフォーマンスを向上させることができます。これにより、タスクがローカル NUMA ノードで実行されるようになります。 Xiaohongshu シナリオでは、CPU のメモリ アクセス オーバーヘッドは小さくありません。 CPU がローカル メモリに直接接続できるようにすると、CPU でのカーネル実行にかかる時間が大幅に節約され、GPU に十分なスペースが確保されます。 ● CPU 使用率を 70% 未満に保つと、レイテンシを 200 ミリ秒から 150 ミリ秒に短縮できます。 3.1.3 ミラー コンパイルの最適化。 CPU によって命令レベルのサポート機能が異なり、クラウド ベンダーによって購入するモデルも異なります。比較的単純なアイデアは、異なるハードウェア シナリオでイメージをコンパイルするときに、異なる命令セットを導入することです。演算子を実装する場合、多数の演算子にはすでに AVX512 などの命令があります。 Alibaba Cloud の Intel(R) Xeon(R) Platinum 8163 + 2 A10 モデルを例にとり、モデルの特性とサポートされている命令セットに基づいて、適切な命令セットをコンパイル、最適化、調整しました。全体として、このモデルの CPU スループットは、命令の最適化を行わない場合と比較して 10% 増加しました。 3.2 計算最適化3.2.1 コンピューティングパワーを最大限に活用する ●コンピューティングの最適化には、まずハードウェアのパフォーマンスを完全に理解し、それを徹底的に把握することが必要です。下の図に示すように、Xiaohongshu のシナリオでは、2 つの主要な問題が発生しました。 1. CPU 上のメモリ アクセスが多く、メモリ ページ フォールトの頻度が高く、CPU リソースの浪費と過剰な要求レイテンシが発生します。 2. オンライン推論サービスでは、コンピューティングには通常、単一リクエストの小さなバッチ サイズと単一サービスの大規模な同時実行スケールという 2 つの特性があります。バッチ サイズが小さいと、カーネルは GPU の計算能力を十分に活用できなくなります。 GPU カーネルの実行時間は一般的に短く、カーネルの起動のオーバーヘッドを完全にカバーすることはできません。場合によっては、カーネルの起動時間がカーネルの実行時間よりも長くなることがあります。 TensorFlow では、単一の Cuda Stream 起動カーネルがボトルネックとなり、推論シナリオでの GPU 使用率はわずか 50% になってしまいます。さらに、小規模なモデル シナリオ (単純な高密度ネットワーク) の場合、CPU を GPU に置き換えることはコスト効率が悪く、モデルの複雑さが制限されます。 写真 ●上記2つの問題を解決するために、以下の対策を講じました。 1. メモリ ページ フォールトの高頻度に対処するために、jemalloc ライブラリを使用してメモリ回復メカニズムを最適化し、オペレーティング システムの透過的なラージ ページ機能を有効にしました。さらに、ラムダの特殊なメモリアクセス特性を考慮して、特別なデータ構造を設計し、メモリの断片化を可能な限り回避するためのメモリ割り当て戦略を最適化しました。同時に、tf_serving インターフェースをバイパスして TensorFlow を直接呼び出し、データのシリアル化とデシリアル化を削減しました。これらの最適化により、ホームページのランキングと内部フローのランキングのシナリオでスループットが 10% 以上向上し、ほとんどの広告シナリオでレイテンシが 50% 削減されました。 写真 tensorflow::Tensor 形式と互換性があり、tensorflow::SessionRun に機能を渡す前にゼロコピーします。 2. TensorFlow の単一の Cuda ストリームの問題に対処するために、マルチ ストリームとマルチ コンテキスト機能をサポートし、ミューテックス ロックによるパフォーマンスのボトルネックを回避し、GPU 使用率を 90% 以上に向上させることに成功しました。同時に、Nvidia が提供する Cuda MPS 機能を使用して GPU 空間分割多重化 (複数のカーネルの同時実行をサポート) を実装し、GPU の使用率がさらに向上します。これに基づいて、検索ランキング モデルが GPU 上に正常に実装されました。さらに、ホームページのレイアウトや広告など、他の事業ラインでも導入に成功しています。次の表は、検索ランキングのシナリオにおける最適化の状況を示しています。 写真 3. Op/カーネル融合技術: 手書きまたはグラフコンパイル最適化ツールを使用して、より高性能な Tensorflow 演算子を生成し、CPU キャッシュと GPU 共有メモリを最大限に活用して、システム スループットを向上させます。 写真 着信フローのシナリオでは、演算子が融合され、単一の呼び出しが 12 ミリ秒から 5 ミリ秒に短縮されます。 3.2.2 計算能力の無駄を避ける 1. システムリンクには最適化の余地がある a. 初期ソート前の事前計算: ユーザー側で関連する計算を処理する場合、初期ソートでは大量のノートを計算する必要があります。たとえば、流出を例にとると、約 5,000 ノートを計算する必要があり、Lambda にはそれらのスライス処理があります。繰り返し計算を回避するために、初期ランキングのユーザー側の計算は前倒しされ、リコール段階と並行して実行されます。これにより、ユーザー ベクトルの計算が複数回の繰り返しから 1 回に削減され、粗いランキング シナリオでマシンの 40% が最適化されます。 2. グラフのトレーニングから推論へ: a. 事前計算: グラフフリーズにより計算の一部を事前に処理できます。推論中は計算を繰り返す必要はありません。 b. 出力モデルのフリーズ最適化: モデルの出力時に、すべてのパラメータとグラフ自体がフリーズグラフに生成され、前処理されます。多くの事前計算されたVariable演算子をConst演算子に変換できます(GPU使用率が12%減少) c. 推論シナリオでのマージ計算: 各バッチには 1 人のユーザーのみが含まれるため、ユーザー側で繰り返し計算が多く行われ、マージが発生する可能性があります。 d. CPU/GPU演算子の分割: 検索後のすべての演算子をGPUに移動し、CPUとGPU間のデータコピーを回避します。 e. GPU から CPU へのデータのコピー: データをパッケージ化して 1 回コピーします。 f. BilinearNet 演算子 GPU cuda 実装: GPU によるコンピューティングの高速化によりパフォーマンスを向上 g. 一部の演算子のGPUベースの操作:CPU -> GPUコピーの必要性を排除 h. BatchNormとMLPの統合: 新しいMLPレイヤーを実装することで、目標に応じてGPUアクセス数(N -> 1)を減らし、計算あたりの計算量を増やすことができます(GPUの小さなコアの同時実行性を再利用) 写真 3.2.3 一日を通して動的な計算能力 ● 動的コンピューティング ダウングレードにより、1 日を通してリソースの使用効率が向上し、数秒以内に負のフィードバックを使用してラムダ負荷が自動的に調整され、単一ゾーンのストレス テストの前に手動でダウングレードを準備する必要がなくなります。 ● アウトバウンド精製ソート、アウトバウンド初期ソート、インバウンド精製ソート、インバウンド初期ソート、検索などの主要なビジネスシナリオがすべて起動されました。 ● 複数の事業ラインで容量の問題が解決され、事業成長によるリソースの直線的な増加が効果的に緩和され、システムの堅牢性が大幅に向上しました。機能導入後の事業ラインでは、瞬間成功率が大幅に低下したことにより、P3以上の事故は発生しませんでした。 ● 一日を通してリソースの利用効率を大幅に向上。内部フローのソートを例にとると(下図参照)、メーデーの3日間の休日中、10:00から24:00まで使用されたCPUコア数は50コアで横ばいでした(ジッターはリリースバージョンに対応しています)。 写真 3.2.4 より優れたハードウェアへの変更 ● A10 GPUの性能はT4 GPUの1.5倍です。同時に、A10モデルはT4モデル(skylake、14nm)よりも新しい世代のCPU(icelake、10nm)を搭載しており、価格はT4モデルの1.2倍にすぎません。今後はA30などのモデルのオンライン利用も検討してまいります。 3.3 グラフの最適化 写真 3.3.1 DLスタックの自動コンパイル最適化 ● BladeDISC は、Alibaba の最新のオープンソース MLIR ベースの動的形状ディープラーニング コンパイラです。Xiaohongshu の自動グラフ最適化部分は、このフレームワークから来ています (Blade 推論アクセラレーション ライブラリは Apache 2.0 オープンソースであり、知的財産リスクなしであらゆるクラウドで使用できます)。このフレームワークは、TF グラフのコンパイル最適化 (Dynamic Shape Compiler とスパース サブグラフの最適化を含む) を提供し、独自の演算子のカスタマイズ最適化と重ね合わせることもできるため、ビジネス シナリオにより適切に適応できます。単一マシン推論のストレステストでは、QPS を 20% 向上できます。 ● このフレームワークの主要技術 (1)MLIRインフラ MLIR(Multi-Level Intermediate Representation)は、Google が開始したオープンソース プロジェクトです。その目的は、柔軟で拡張可能な多層 IR インフラストラクチャとコンパイラ ユーティリティ ライブラリを提供し、コンパイラと言語ツールの開発者に統一されたフレームワークを提供することです。 MLIR の設計は LLVM の影響を受けていますが、LLVM とは異なり、MLIR は主に中間表現 (IR) の設計と拡張に重点を置いています。 MLIR は、高レベル言語から低レベルハードウェアまでのコンパイル プロセスをサポートするマルチレベル IR 設計を提供し、豊富なインフラストラクチャ サポートとモジュール設計アーキテクチャを提供するため、開発者は MLIR の機能を簡単に拡張できます。さらに、MLIR は強力な接着機能を備えており、さまざまなプログラミング言語やツールと統合できます。 MLIR は、コンパイラおよび言語ツール開発者に、コンパイルの最適化とコード生成を容易にする統一された柔軟な中間表現言語を提供する強力なコンパイラ インフラストラクチャおよびツール ライブラリです。 (2)ダイナミックシェイプコンパイル 静的形状制限とは、ディープラーニング モデルを作成するときに各入力と出力の形状を事前に決定する必要があり、実行時に変更できないことを意味します。これにより、ディープラーニング モデルの柔軟性とスケーラビリティが制限されるため、動的な形状をサポートするディープラーニング コンパイラが必要になります。 3.3.2 精度調整 ● 量子化を実装する一つの方法はFP16を使うことである FP16 計算の最適化: MLP レイヤーで FP32 計算を FP16 に置き換えることで、GPU 使用量を大幅に削減できます (相対的に 13% 減少) FP16 を調整するプロセスにおいて、精度の最適化にホワイトボックス アプローチを選択すると、どのレイヤーが低精度の計算を使用するかをより細かく制御でき、経験に基づいて継続的に調整および最適化できるようになります。このアプローチでは、モデル構造をより深く理解して分析する必要があり、モデルの特性とコンピューティング要件に基づいてターゲットを絞った調整を行うことで、より高いコスト効率を実現できます。 対照的に、ブラック ボックス アプローチは比較的単純で、モデルの内部構造を理解する必要がありません。精度の最適化を完了するには、特定の許容しきい値を設定するだけで済みます。この方法の利点は、操作が簡単で、模範生徒に対する要件が比較的低いことですが、一定のパフォーマンスと精度が犠牲になる可能性があります。 したがって、精度の最適化のためにホワイト ボックス アプローチを選択するか、ブラック ボックス アプローチを選択するかは、具体的な状況によって異なります。より高いパフォーマンスと精度を追求する必要があり、十分な経験と技術力がある場合は、ホワイト ボックス アプローチの方が適している可能性があります。操作の単純さと高速な反復がより重要である場合は、ブラック ボックス アプローチの方が実用的かもしれません。 4. まとめ2021年から2022年末まで、本プロジェクトの最適化後、Xiaohongshuの推論コンピューティング能力は30倍に増加し、主要ユーザー指標は10%以上増加し、累積クラスターリソースの節約は50%以上になりました。私たちの意見では、Xiaohongshu の AI 技術の開発の道筋はビジネスニーズによって導かれ、技術とビジネスの発展のバランスをとる必要があります。つまり、技術革新を達成すると同時に、コスト、利益、持続可能性も考慮する必要があります。最適化プロセスに関するいくつかの考えを次に示します。 アルゴリズムを最適化し、システムのパフォーマンスを向上させます。これは、Xiaohongshu の機械学習チームの中心的なタスクです。アルゴリズムを最適化し、システム パフォーマンスを向上させることで、ビジネス ニーズをより適切にサポートし、ユーザー エクスペリエンスを向上させることができます。ただし、リソースが限られているため、チームは最適化の優先順位を明確に特定し、過剰な最適化を避ける必要があります。 インフラストラクチャを構築し、データ処理機能を向上させます。インフラストラクチャは AI アプリケーションをサポートする上で重要です。 Xiaohongshu は、コンピューティングおよびストレージ機能、データセンター、ネットワーク アーキテクチャなどのインフラストラクチャ構築へのさらなる投資を検討できます。さらに、機械学習やデータ サイエンスのアプリケーションをより適切にサポートするには、データ処理機能の向上も非常に重要です。 チームの人材密度と組織構造を改善します。優れた機械学習チームには、データ サイエンティスト、アルゴリズム エンジニア、ソフトウェア エンジニアなど、さまざまなスキルとバックグラウンドを持つ人材が必要です。組織構造を最適化することで、チームの効率性とイノベーション能力を向上させることもできます。 双方に利益のある協力とオープンイノベーション。 Xiaohongshu は、他の企業、学術機関、オープンソース コミュニティと連携して AI テクノロジの開発を進め、より多くのリソースと知識を獲得し、よりオープンで革新的な組織になるよう努めています。 このソリューションにより、Xiaohongshu の機械学習アーキテクチャは業界でトップクラスのレベルに到達できました。今後もエンジンのアップグレードとコスト削減、効率向上を継続的に推進し、小紅書の機械学習の生産性を向上させる新技術を導入し、小紅書の実際の業務シーンとの融合をさらに進めていきます。単一モジュールの最適化からシステム全体の最適化へとアップグレードし、さらに業務側トラフィックのパーソナライズされた差異特性を導入することで、コスト削減と効率向上を最大化します。高い理想を持った方のご参加をお待ちしております! 5. チーム張 楚蘭 (Du Zeyu) : ビジネステクノロジー部門 華東師範大学卒業。商業エンジンチームのリーダーで、主に商業オンラインサービスの構築を担当。 陸光(彭彭) :インテリジェント流通部門 上海交通大学卒業、機械学習エンジンエンジニア。主にLambda GPUの最適化を担当。 イアン(陳建新) :インテリジェント流通部門 北京郵電大学卒業。機械学習エンジンエンジニア。主にLambdaパラメータサーバーとGPU最適化を担当。 赤羽(劉兆宇) :インテリジェント流通部 清華大学卒業、機械学習エンジンエンジニア。主に機能エンジン分野の研究と探究を担当。 感謝: インテリジェント流通学科の学生全員 |
<<: AIとクラウドワークロードがデータセンターの需要を牽引
今年 7 月、OpenAI は強力なプラグインである Code Interpreter をリリースし...
[[429813]]人工知能は、企業のマーケティング範囲の拡大に大きく貢献することが証明されています...
「平常時に努力しなければ、試験では友達に頼らざるを得なくなる」ということわざがある。試験が近づくに...
今日の人工知能 (AI) システムは、真の人間の知能を再現するにはまだ程遠い状態です。しかし、彼らは...
AI の恩恵を受ける業界はどれでしょうか?人工知能と機械学習はすでにさまざまな業界に導入されており...
プロジェクトアドレス: https://github.com/OpenBMB/ProAgent論文ア...
現在、知能ロボットが急速に発展していますが、機械を知能化するための鍵は実はビッグデータです。ビッグデ...
業界では、人工知能はこれまで2世代を経てきたと一般的に考えられています。第一世代の人工知能は知識主導...
AIが「コーダー」に取って代わるという現実はまだ実現していないが、その逆を行い、コーダーを使ってA...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
インテリジェントな顧客サービスの分野は、2018 年に急速な発展を遂げました。企業の人件費を抑制する...
Facebookは、独自のARグラスを開発するためにRay-Banと提携するなど、拡張現実技術に多大...
回帰アルゴリズムといえば、理解しやすく非常に単純なため、多くの人が線形回帰を思い浮かべると思います。...
1956 年に大学の研究分野として取り入れられて以来、AI は楽観的な時期と悲観的な時期を同程度に...