Ctrip の AI 推論パフォーマンスの自動最適化プラクティス

Ctrip の AI 推論パフォーマンスの自動最適化プラクティス

[[424530]]

1. 背景

近年、人工知能はセキュリティ、教育、医療、観光などの産業や生活の場面に徐々に根付き、繁栄してきました。 Ctripの旅行事業においても、AI技術は複数の観光商品や観光サービス分野を幅広くカバーしています。観光の具体的なシナリオとビジネスニーズに基づき、Ctripの休暇AI研究開発は、自然言語処理、機械翻訳、コンピュータービジョン、検索ソートなどの主流のAI技術を、無料旅行、団体旅行、ビザ、娯楽、レンタカーなど、観光と休暇の複数の事業分野にうまく適用しています。

技術的な観点から見ると、さまざまなビジネスシナリオのニーズに適応するために、従来の機械学習、畳み込みニューラルネットワーク、Transformerなどのディープラーニングモデル構造、ナレッジグラフやグラフニューラルネットワークなどの技術分野を含むさまざまなAIテクノロジーが関与しています。同時に、AI技術の利点を十分に引き出すために、モデルの深さ、幅、構造の複雑さなど、さまざまな次元を含むモデル設計の複雑さが増しています。コンピューティング能力の増加により、AI推論パフォーマンスのボトルネックがますます顕著になり、特にリアルタイムのビジネスニーズでは推論速度に対する要件が高まっています。最高の推論パフォーマンスを追求するには、多くの場合、手動での最適化を 1 つずつ行う必要があり、開発、展開、通信に多大なコストがかかります。主な問題は次のとおりです。

  • モデル構造の種類が多く、パフォーマンスのボトルネックが大きく異なり、適用可能な最適化方法が異なり、手動による最適化コストが高くなります。
  • 最適化方法は多数あり、トップダウン、複数のモデル圧縮方法、システムレベル、ランタイム最適化などがあり、手動による最適化のしきい値は高くなっています。
  • 手動で 1 つずつ最適化すると、スケーラビリティが低く、技術的な範囲が制限されます。
  • ハードウェア プラットフォームの違いにより、対象を絞ったチューニングが必要となり、最適化の労力と導入コストが高くなります。
  • 新しいモデルのリリースと反復には最適化手法の適用が必要であり、これには高い通信およびアクセスコストがかかり、パフォーマンスの不安定性も生じます。
  • モデル圧縮テクノロジーの最適化効果はモデルによって異なり、モデルの再トレーニングが必要になる場合があります。トレーニングとデータ準備のプロセスは長く、非効率的です。

そのため、最適化、展開、反復のコストを削減し、作業効率を向上させ、安定したパフォーマンスを確保するために、モデル自動化最適化プラットフォームの構築に取り組んでおり、アルゴリズムモデルに、より包括的で使いやすく、より安定しており、使用と保守のための低コストの最適化ソリューションを提供することを目指しています。

2. プラットフォームのメインフレームワークを最適化する

パフォーマンス最適化方法論の観点から、自動最適化であれ手動最適化であれ、私たちは主に次の 2 つの方向に焦点を当てています。

  • アルゴリズムの複雑さを軽減する: モデル構造を調整または簡素化することでアルゴリズムの効率を向上させるか、構造を変更せずに維持します。
  • ソフトウェアとハ​​ードウェアのパフォーマンスを最大限に発揮します。モデル構造とアルゴリズムを変更せずに、ソフトウェアの実行効率を最適化し、ハードウェアの利点と機能を活用し、ハードウェアの実行効率を最大化します。

これら 2 つの最適化の方向性と人工知能の主流の技術の方向性に焦点を当てると、最適化プラットフォームの全体的なアーキテクチャは、下から上に向かって次のように分けることができます。

  • ハードウェア プラットフォームおよびオペレーティング システム層には、x86 アーキテクチャ CPU、GPU、ARM、FPGA などのさまざまなプラットフォームが含まれます。オペレーティング システムは主に Linux OS です。
  • エンジン フレームワーク レイヤーには、主に Tensorflow や Pytorch などの主流の人工知能フレームワークが含まれます。
  • 推論最適化レイヤーは、主に高性能演算子ライブラリ、グラフ最適化および修正ツール、定量蒸留などのモデル圧縮モジュールなど、ビジネスシナリオと実際のニーズに基づいて当社が独自に開発した最適化テクノロジで構成されています。
  • アルゴリズム モデル: 畳み込みを主な構造とする CV モデル、Resnet、GoogleNet、YOLO など、業界で一般的に使用されているモデル、Bert や Albert など、Transformer を主な構造とする NLP モデルが含まれます。
  • 応用シナリオ: 主に、インテリジェントな顧客サービス プラットフォーム、機械翻訳、検索ソートなどのアプリケーションなど、観光シナリオにおける実際のアプリケーションに反映されます。

図1 モデルプラットフォームのフレームワーク構成

3. 自動化された最適化プロセス

最適化プラットフォームを確立することで、最適化技術を体系的かつ効果的に統合し、実際のニーズに迅速に適用することができます。ただし、自動最適化が実装されていない場合、最適化の効率は比較的低く、展開および反復コスト、通信およびアクセスコストが高くなります。そのため、当社は、サポートされているすべての最適化テクノロジーを網羅する自動最適化プロセスを確立し、モデルトレーニングプラットフォームとデータ注釈プラットフォームを組み合わせて、モデル設計、モデルトレーニングからモデル推論の最適化、モデル展開まで、ゼロ関与と知覚できない最適化効果を実現し、作業効率と全体的な最適化効果の安定性を大幅に向上させました。

図 2 は、データ プラットフォーム、モデル トレーニング プラットフォーム、モデルの最適化と展開の一般的なプロセスを示しています。プロセスを自動化するための具体的な最適化方法とプロセスの詳細は、図 3 に示されています。

図2 モデル自動化最適化実装フレームワーク

図3 自動最適化実装の基本プロセス

4. 機能モジュール

自動最適化プラットフォームの主な機能モジュールは、次の 4 つの部分に分かれています。

  • 演算子の書き換えや演算子のマージなどの複数の最適化を含み、アテンション、ソフトマックス、レイヤーノルムなどの複数の一般的な演算子をサポートする高性能演算子ライブラリ。
  • 計算グラフ最適化は、主に計算グラフの検索、モデルグラフ構造の変更と置換、推論展開用の新しいモデルファイルのマージと生成を行います。また、一般的に使用されるグラフ最適化および変更ツールも含まれています。
  • モデルの静的および動的量子化、モデルの剪定および蒸留などを含むモデル圧縮モジュール。
  • モデルデプロイメント最適化は、主にデプロイメント設計、ランタイム環境の構成などを含むデプロイメント最適化ソリューションを提供します。

図4 モデル最適化プラットフォームの基本モジュール

4.1 高性能演算子ライブラリ

このモジュールは、畳み込み、完全接続層、バッチノルム、ソフトマックスなどの基本的な演算子、およびトランスフォーマーエンコーダー、デコーダーなどの統合された古典的なモデル構造を含む、一般的に使用される演算子と活性化関数を主に実装します。これは、TensorFlow に基づいており、C++ で実装されており、CPU および GPU プラットフォームの最適化をサポートしています。

具体的な最適化手法は次のとおりです。

  • 畳み込みアルゴリズムの実装、im2col と winograd 畳み込みの組み合わせ、さまざまな畳み込みカーネル サイズに最適なアルゴリズムを適応的に使用して最速の速度を達成するなどのアルゴリズムの改善。
  • メモリ再構築。BERTモデルを例にとると、最もコアで時間のかかるコンピューティングモジュールの1つは、多数の行列乗算計算を含むマルチヘッドセルフアテンションメカニズムです。アルゴリズムの原理によれば、クエリ層、キー層と値層の取得、クエリとキードットの乗算などが含まれます。さらに重要なのは、現在のTensorflowアルゴリズムの実装には、多数の行と列の変換操作(転置)が含まれていることです。転置は、多くのメモリアクセスオーバーヘッドをもたらします。これらの問題は、メモリ再構築によって回避できます。
    同時に、多くの行列乗算実装では、バッチ行列乗算呼び出しを通じて計算効率を向上させ、実行速度を向上させることができます。下の図 5 に示すように、自己注意メカニズムの元の実装プロセスには 3 つの冗長な転置演算が含まれており、T(a) はテンソル a の転置形式を表します。これら 3 つの転置操作は、メモリを再構築することで回避できます。図 6 に示すように、最適化された計算プロセスには転置は含まれません。


図5 自己注意のオリジナル実装プロセス

図6 自己注意最適化後の実装プロセス

両者を比較すると、最適化後に転置演算が 4 回削減され、メモリ アクセスのオーバーヘッドが削減されたことがはっきりとわかります。同時に、行列乗算の場合、単一の行列乗算演算ではなくバッチ行列乗算を呼び出す方が効率的です。

  • CPU プラットフォーム上の AI 専用の適切なベクトル化命令 AVX512 および VNNI 命令の使用などの固有の命令セットの最適化。
  • 演算子の融合。Transformer を例にとると、各レイヤーには、自己注意、GELU 活性化関数、正規化レイヤー正規化演算子、その他の散在演算子など、多数の散在演算子が含まれています。データ アクセスのオーバーヘッドを削減するために、複数の演算子を融合して新しい GPU カーネルを実装します。演算子のマージにより、演算子の数が約 90% 削減され、モデル内のメモリ移動を伴う操作率が 100% 排除され、時間の 90% がコア コンピューティング用のカーネル ランチャーに集中します。図7に示すように。

図7: 演算子の融合の例

4.2 モデルの圧縮

モデル圧縮は推論性能を向上させるもう 1 つの効果的な手段です。主にアルゴリズム レベルでのモデル最適化を指します。精度を確保するという前提の下、モデル構造またはパラメータ量を合理的に削減することで、モデル全体の計算の複雑さを軽減するという目的を達成します。

モデル圧縮の主な機能は次のとおりです。

  • モデル構造を簡素化し、計算の複雑さを軽減し、推論速度を向上させる
  • モデルパラメータとモデルサイズを削減し、メモリ使用量を削減します。

一般的に、現在の最適化プラットフォームでサポートされているモデル圧縮方法には、モデル蒸留、モデルプルーニング、低精度量子化などがあります。

4.2.1 モデルの蒸留

モデル蒸留では転移学習が使用されます。転移学習では、事前トレーニング済みの複雑なモデル (教師モデル) の出力を、別の単純な生徒ネットワーク (生徒モデル) をトレーニングするための監視信号として使用し、モデルを簡素化してモデル パラメータを削減します。モデル蒸留は非常に一般的であり、小さなモデルの精度を効果的に向上させることができますが、パラメータの調整は比較的困難です。主な中核的な問題には、特徴レイヤーの選択方法、損失関数の設計方法、学生モデルの設計方法、およびデータセットの選択方法が含まれます。図 8 は、圧縮フレームワークにおける Transformer デコーダー モデルの蒸留実装を示しています。

図8 トランスフォーマーモデルの蒸留

総損失関数は次の要素で構成されます。

ここで、α と β は対応する損失値の重み係数を表し、α∈(0,1]、β∈R、Lsoft は教師ネットワークの出力と生徒ネットワーク モデルの出力間の損失値、Lhard - トレーニング データ コーパスの真のラベルと生徒ネットワーク モデルの出力間の損失値、LAT_FMT - 教師ネットワーク モデルと生徒ネットワーク モデルのデコーダーの中間出力コンテンツの損失値であり、段階的な階層蒸留法が採用されています。最終的な推論速度の加速比は 2 倍に達し、精度損失 BLEU 値は許容範囲内 (4%) です。

4.2.2 低精度量子化

低精度の量子化は、コンピュータのハードウェア設計の観点から、データ型を変更し、データの精度を下げることで、プロセスを高速化し、ハードウェア実装に依存することを意味します。量子化には、トレーニング後の量子化 (PTQ トレーニング後の量子化)、トレーニング中の量子化 (QAT、量子化を考慮したトレーニング) など、さまざまな方法があります。

現在、当社の最適化されたプラットフォームは float16 と int8 をサポートしていますが、そのうち int8 量子化は PTQ 方式のみをサポートしています。一般的に、モデルの精度を確保するために、int8 量子化では量子化モデルのキャリブレーションが必要です。キャリブレーション方法は複雑な数学アルゴリズムに依存しています。最も一般的に使用されるのは KL ダイバージェンスです。CV モデルの場合、精度の低下は許容範囲です。 Transformer ベースの NLP モデルの場合、精度の損失が大きく、現在は GPU プラットフォームで float16 実装のみをサポートしています。 float32 と比較すると、ストレージ容量と帯域幅は半分になり、精度はほとんど変わらず、スループットは最大 3 倍に増加します。

4.2.3 モデルの剪定

プルーニングの主な考え方は、重みマトリックス内の比較的「重要でない」重みを削除してから、ネットワークを微調整することです。この方法は単純で、圧縮効果は制御可能ですが、プルーニングの粒度と方法の選択には定義されたルールが必要であり、構造化されていないプルーニング効果は、実装されるハードウェアプラットフォームに依存する必要があります。モデルプルーニングはコンピュータービジョンの分野で広く使用されており、良好な結果が得られています。

図9は典型的な構造化剪定法の例を示しています[4]。 CVモデルでは、元のモデルにbatch_normalレイヤーを追加しました。batch_normalの参考論文2:ChannelPruning for Accelerating Very Deep Neural Networksでは、チャネルを使用してプルーニングを行うことを提案しています。実験は次のとおりです。超解像実験では、元のモデルにbatch_normalレイヤーを追加し、batch_nomalのα値を正規化し、最後にこの値をプルーニングの基準として使用することを検討しました。トレーニング済みモデルのbatch_normalレイヤーのパラメーターαを分析し、同じ方法をさまざまな畳み込みモデルに適用したところ、一部のモデルのパラメーターのほぼ半分が1e-5のオーダーであることがわかりました。また、同じレイヤー内の分布の分散は極めて小さかった。これに基づいて、チャネルレベルでモデルをプルーニングし、微調整トレーニングを実行しました。プルーニング効果は明ら​​かで、モデルサイズは元のサイズの1/4に縮小されました。精度が変わらないという前提で、加速率は4倍に達する可能性があります。 Yolov3モデルの場合、ほとんどのパラメータはそれほど変わらない(MAPが2%削減)ため、限られた数を切り捨てることができるため、精度を維持するためにパラメータ数を半分に減らし、高速化率は約1.5倍になります。

図9 モデルの剪定例

4.3 インターフェース設計

モデル最適化プラットフォームは、プラグアンドプレイのモジュール設計を採用しており、モデルトレーニングプラットフォーム、モデル公開プラットフォームなどにシームレスに接続できます。

  • トレーニング プラットフォームからの呼び出しとフィードバック: トレーニング プラットフォームにシームレスに接続し、Python インターフェイスまたは Web サービス インターフェイスを呼び出します。再トレーニングが必要な場合は、トレーニング プラットフォームからインターフェイスを申請します。
  • 最適化結果のインターフェースは、次の機能を提供します: *.pb 形式でのモデル出力のサポート。

具体的な使用方法は図10と図11に示されています。

図10 高性能演算子ライブラリの呼び出し

図 11 は、モデル圧縮モジュールを呼び出す方法を示しています。

図11 モデル圧縮モジュール呼び出し

5. 最適化の結果

機械翻訳のTransformerモデルを例にとると、テストプラットフォームはCPU: Intel(R) Xeon(R) Silver 4210CPU @ 2.20GHz、GPU: Nvidia T4で、固定サンプルの平均応答遅延をテストデータとして使用しています。最適化前後のスピードアップを図12に示します。

本来のパフォーマンスは、Tensorflow1.14をテストベンチマークとして採用し、GPUプラットフォームフレームワーク層の最適化やコンパイル、ランタイムなどの複数の層の最適化によって実現されています。図13は、T4プラットフォームに基づくモデル圧縮と高性能演算子ライブラリの最適化後のTransformer変換モデルの比較です。この図は、トークン長が64の場合の異なるバッチサイズのレイテンシとスループットの改善率を示しています。実際には、トークンが大きくなるほど、float16の利点がより明らかになります。

図12
図13

CPU ハードウェア プラットフォームに基づいて、CV および NLP モデル (yolov3、bert、albert など) に対して優れた最適化効果が達成され、遅延加速比は 5 倍以上に達しました。

VI. 将来の見通し

AI 最適化の可能性と需要は非常に大きいです。AI の理論とモデルがますます洗練され、アプリケーション シナリオでモデルの精度やその他の推論サービスの品質に対する要求が高まるにつれて、モデル構造と計算の複雑さは必然的に増加し、推論サービスのパフォーマンス要件は高まるばかりです。コストと効率の観点から、自動最適化は避けられない流れであり、業界も関連する研究を行い、一定の進歩を遂げています。

依然として2つの側面から見ると、どちらも自動最適化の一般的な方向性に基づいています。オペレーター最適化などのシステムレベルの最適化は、最終的にはtvmなどのAIコンパイラーを通じて実装されますが、モデル圧縮はAutoMLのアイデアを使用することに重点を置いています。現在のプラットフォームと実際のニーズに基づいて、構造検索を使用して、要件を満たす最も単純なネットワークを見つけます。もちろん、蒸留やプルーニングなどの現在の従来の圧縮方法も AutoML のアイデアと組み合わせて、同様の効率的な圧縮効果を実現できます。

そのため、当社の自動最適化プラットフォームは、自動最適化の理念に基づき、ビジネスシナリオの要件を総合的に考慮し、業界のより先進的な最適化技術を参考にして、観光シナリオにおけるAIモデルにさらに効率的な最適化ソリューションをもたらし、観光ビジネスにおけるAI技術のより良い実装を促進します。

<<:  深層強化学習の謎を解く

>>:  53 フレームが 900 フレームになります。 AIを使えば高価な高速カメラなしでスローモーションが作れる

ブログ    

推薦する

最高の AI スタートアップはどれですか? 6つの選択肢があなたに方向性を与える

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

2024年に注目すべき5つの持続可能な技術

今年が進むにつれて、持続可能な開発をめぐる話題はますます高まるばかりであり、気候変動が近づいていると...

...

人工知能は過去70年間で急速に成長し始めたばかりである

[[337550]] 2019年末現在、わが国の中核人工知能産業の規模は510億人民元を超え、人工知...

Google のコード生成システムはプログラマーの半分を「飲み込んだ」のでしょうか?人類は長い間AIに「負けて」きました!

著者: 徐潔成最近、センセーショナルなAlphaGo囲碁ロボットを発売したDeepMindが再び大き...

運輸省:2025年までに自動運転技術の産業化を推進

道路交通自動運転技術の開発と応用の促進に関する運輸省の指導意見:道路交通の自動運転技術の開発と応用を...

...

製薬業界を覆すAIは「仕掛け」か「希望」か?

人工知能 (AI) は、過去 10 年ほどの間に SF の世界から現実の世界へと移行し、地球上のほぼ...

WAVE SUMMIT での Baidu Wang Haifeng: ディープラーニングが人工知能を産業大量生産に導入

「ディープラーニングは人工知能を大規模な工業生産の段階に押し上げています。ディープラーニングのフレー...

ダボにおけるタイムホイールアルゴリズムの応用

[[346568]] 1 スケジュールされたタスクNetty、Quartz、Kafka、Linux ...

人工知能は鉄道の乗客の安全を守ることができるか?

高速鉄道網がますます充実するにつれ、列車は人々が長距離を移動する際に好まれる交通手段となってきました...

...

Java ソートアルゴリズムについてどれくらい知っていますか?

今日は、Java のさまざまなソート アルゴリズムについてお話します。以前、上級開発者との面接があり...

ニューラル ネットワークが適切に機能するには、なぜ十分なパラメータが必要なのでしょうか?

従来、パラメータの数が満たすべき方程式の数より多い場合は常に、パラメータ化されたモデルを使用してデー...