背景 ディープラーニングは、AI時代の中核技術として、さまざまなシナリオに適用されてきました。システム設計レベルでは、計算集約的な性質のため、エンジニアリングの実践における従来の機械学習アルゴリズムとの間には多くの違いがあります。この記事では、Meituan プラットフォームにディープラーニング技術を適用するプロセスにおける関連システム設計の経験をいくつか紹介します。 この記事では、まずいくつかのディープラーニング アルゴリズムの計算要件をリストし、次にこれらの計算要件を満たす業界で一般的なソリューションをいくつか紹介します。最後に、NLUと音声認識の2つの分野における関連システムの設計におけるMeituanプラットフォームの経験を紹介します。 ディープラーニングの計算コスト
データソース 上記の表は、ImageNet 画像認識における一般的なアルゴリズムのモデル サイズと、単一画像のワンパス トレーニングに必要な計算量を示しています。 2012 年にヒントン氏の学生アレックス・クリジェフスキー氏が AlexNet を提案し、ILSVRC 2012 チャンピオンシップで優勝して以来、ILSVRC コンテストの優勝者の精度はますます高くなっています。同時に、使用されるディープラーニングアルゴリズムはますます複雑になり、必要な計算量も増加しています。 AlexNet と比較すると、SENet では約 30 倍の計算が必要になります。 ImageNet には約 120 万枚の画像があることがわかっています。SENet を例にとると、100 エポックの完全なトレーニングを完了するには、2.52 * 10^18 の計算能力が必要になります。このような膨大な計算能力は、従来の機械学習アルゴリズムの範囲をはるかに超えています。言うまでもなく、Google が論文「ディープラーニング時代のデータの不当な有効性の再考」で言及しているデータセットは、ImageNet の 300 倍の大きさです。 物理的なコンピューティングパフォーマンス このような膨大な量のコンピューティングを前に、現在業界で一般的に使用されているコンピューティング ユニットのコンピューティング能力はどの程度でしょうか?
上記のデータ結果に基づくと、ディープラーニングの分野では、GPU トレーニング データ セットに必要な時間は CPU よりもはるかに短いことがわかります。これは、現在ディープラーニング トレーニングに GPU が使用されている重要な理由でもあります。 業界ソリューション これまでの計算から、計算に GPU を使用した場合でも、ImageNet を 1 回トレーニングするのに 4 日かかることがわかります。しかし、実験やパラメータの調整を行うアルゴリズムエンジニアにとって、このような数日間の時間のかかる待機は耐え難いものです。このため、業界ではディープラーニングのトレーニングを加速するためのさまざまなソリューションが提案されています。 異機種コンピューティングのための並列ソリューション データ並列処理 データ並列処理とは、各コンピューティング ユニットがモデルの完全なコピーを保持し、異なるデータを個別にトレーニングすることを意味します。1 回または複数回の反復処理の後、各コンピューティング ユニットのモデルは同期されます。これは最も一般的なディープラーニングのトレーニング方法であり、ロジックがシンプルでコードの実装が簡単なのが利点です。 モデルの並列処理 モデルの並列処理とは、各コンピューティング ユニットが同じレイヤー モデル データの異なる部分を保存し、同じデータをトレーニングすることを意味します。データ並列性と比較すると、ニューラル ネットワークのレイヤーをトレーニングした後、各コンピューティング ユニットを 1 回同期する必要があるため、同期通信はまれです。同期通信が頻繁に行われると、システムはハードウェアのコンピューティング能力を十分に活用できなくなります。ただし、ビジネス シナリオによっては、Softmax レイヤーで多数のカテゴリを分類する必要がある場合があり、その場合、Softmax レイヤーが大きすぎて単一のコンピューティング ユニットに格納できなくなります。この場合、モデルを複数の部分に分割し、異なるコンピューティング ユニットに格納する必要があります。モデルの並列処理は、NLU、推奨、金融などの分野で一般的です。 ストリーム並列処理 ストリーム並列処理とは、各コンピューティング ユニットが異なるレイヤーのモデル データを保存し、同じデータをトレーニングすることを意味します。上図に示すように、GPU1 はニューラル ネットワークの第 1 層の計算のみを担当し、GPU2 はニューラル ネットワークの第 2 層から第 5 層の計算のみを担当し、GPU3 は第 6 層の計算のみを担当します。ストリーミング並列処理の利点は、各コンピューティング ユニット間の通信と計算の重複にあります。適切に構成すれば、ハードウェア リソースを最大限に活用できます。欠点としては、モデルによっては各コンピューティングユニットの計算能力のバランスをとる必要があり、構成が悪ければ「ダム湖」が形成されやすいことです。上の図に示すように、GPU1 の計算量が少なすぎる一方で、GPU2 の計算量が多すぎるため、GPU1 と GPU2 の間で多数のミニバッチがブロックされる可能性が非常に高くなります。これは、オンライン環境でより一般的です。 ハイブリッド並列処理 ハイブリッド並列処理は、上記の並列方法を組み合わせたものです。たとえば、一部の画像認識タスクでは、最初の数層でデータ並列処理を使用し、最後の Softmax 層でモデル並列処理を使用する場合があります。 異機種コンピューティング向けハードウェア ソリューション
異機種コンピューティング向け通信ソリューション 上記のハードウェア ソリューションに基づいて、ResNet を例に挙げます。モデル サイズは 230M、単一画像の計算複雑度は 11 GFLPOS、ミニバッチ サイズは 128 と想定されます。ディープラーニングのトレーニングにおける各ハードウェア モジュールの消費時間は次のように計算できます。
上記のデータ結果に基づいて、PCI-E とネットワークの転送時間は GPU よりも桁違いに短いため、ネットワーク通信の同期にかかる時間は無視できるという結論を導き出せそうです。しかし、問題はそれほど単純ではありません。上記の例で消費される時間は、単一のモデルの消費時間のみです。ただし、8 つの GPU のクラスターでデータの並列処理を使用すると、同期が発生するたびに 8 つのモデルを送信する必要があり、その結果、データ送信時間は GPU の計算時間と「等しくなります」。この場合、GPU は各ミニバッチをトレーニングした後、長時間待機する必要があり (同期更新を使用)、多くのコンピューティング リソースが浪費されます。したがって、ネットワーク通信にも対応するソリューションが必要です。以下では、Nvidia NCCL の単一マシン上の複数の GPU の通信ソリューションを例に挙げます。複数のマシンと複数の GPU の通信ソリューションは実際には同様です。 上の図は、ハードウェアに 2 つの異なる通信システムを備えた 4 枚のカードを備えた単一のマシンを示しています。左側は、4 つの GPU がリングを形成する通常の PCI-E 通信を示しています。右側は NVLink 通信を示しており、各ペアが互いに接続されていることを意味します。 一般的な通信タイプを下図に示します。 ディープラーニングのトレーニングでは、ブロードキャストとリデュースの 2 つの主要な通信タイプがあります。ブロードキャストは、マスターが各 GPU に最新のモデルを配布するために使用されます。 Reduce は、各 GPU がミニバッチを計算した後、モデル更新値をマスターに集約するために使用されます。ブロードキャストを例にとると、最も単純な通信方法は、マスターが各 GPU にデータを送信することです。これでは、モデル 4 回の送信と同じ時間がかかり、通信時間が長すぎます。簡単な最適化方法を次の図に示します。 つまり、送信されるデータはいくつかのブロックに分割され、リレー方式で 1 つずつ渡されます。各 GPU は、最新のデータ ブロックを次の GPU カードに送信します。この伝送方法は、ハードウェアレベルでの通信構造を最大限に活用できるため、所要時間が大幅に短縮されます。同様に、Reduce の通信最適化も同様の方法で高速化できます。 美団のカスタマイズされたディープラーニングシステム 業界では、TensorFlow、MxNet などの一般的なトレーニング プラットフォームや、音声認識用の Kaldi などの分野固有のトレーニング プラットフォームなど、多くの有名なディープラーニング トレーニング プラットフォームがリリースされていますが、調査の結果、次の理由により、社内でディープラーニング システムを開発することにしました。
NLUオンラインシステム オンラインシステムのビジネス特性 NLU オンライン システムを設計する際には、NLU ビジネスのいくつかの特性を考慮しました。次のような特徴があることがわかりました。
変化するビジネス NLU タスクのアルゴリズム プロセスは多層化されており、ビジネスは頻繁に変化します。次の図に示すように: つまり、ビジネス要件が変化すると、NLU システムの初期アルゴリズム プロセスではクエリを 2 つのカテゴリに分割するだけで済みますが、後になって 3 つのカテゴリに分割する必要が生じる可能性が高くなります。 ホットアップデート ビジネスニーズに応じて、または何らかの特別な問題に緊急に対処するために、NLU オンライン システムは、アルゴリズム モデルを迅速に応答してホット更新する必要があることがよくあります。例えば、最近のホットワード「skr」は、ほぼ一夜にして突然人気が出ました。下記のWeibo投稿に示されているように、「skr」の正しい意味を正しく理解しないと、このWeibo投稿が何を表現しようとしているのかを正確に理解できない可能性があります。 ユーザーエクスペリエンスに影響を与えないようにするために、NLU システムのホットアップデートを直ちに実行し、新しいモデルを緊急にオンラインにする可能性があります。 データ駆動型自動反復クローズドループ オンライン システムの場合、上図に示すように自動反復クローズド ループを構築することで、ビジネス データをより有効に活用し、サービス品質を向上させることができます。 NLUオンラインシステムのコア設計 アルゴリズムフローの抽象化 オンライン システムのシリアルかつ変更可能なアルゴリズム フローに適応するために、次の図に示すように、オンライン システムのアルゴリズムを抽象化します。 つまり、各アルゴリズムは、いくつかのスロットとリソースに依存します。スロットとリソースが配置されると、対応するアルゴリズムがトリガーされて実行されます。アルゴリズムの実行は、まずアルゴリズム アダプターを通過して、スロットとリソース内のデータを適応させ、オペレーターの入力形式に変換します。次に、演算子はアルゴリズム自体を実行し、演算子を実行した後、アルゴリズム パーサーを通過します。アルゴリズム パーサーは主に、アルゴリズム実行の結果を解析し、対応するスロットをトリガーするために使用されます。たとえば、アルゴリズムの結果に応じて、上位 3 つの結果がトリガーされます。 複数のアルゴリズムが直列に接続され、次の結果が作成されます。 ホットアップデートプロセスの設計 上の図に示すように、アルゴリズムのホットアップデートプロセスを上記のように設計します。初期テスト状態は左上隅にあります。これは、複数のクエリが同じモデル データを使用していることを意味します。モデルの更新要求が発生すると、システムは新しいクエリをブロックします (右上隅にステータスが表示されます)。モデルが更新されると、新しいクエリは新しいモデルを使用し、古いクエリは引き続き古いモデルを使用します (右下隅のステータス)。最後に、古いモデルを使用したクエリが終了すると、古いモデルはメモリ(左下隅)から削除され、システムは初期状態に戻ります。 音響モデルトレーニングシステム これは、TensorFlow などの一般的なディープラーニング トレーニング プラットフォームには、特徴抽出などのビジネス関連のドメイン機能が不足しており、Kaldi の音響モデルのトレーニング プロセスが遅すぎるためです。そこで、Meituan は次のような特徴を持つ音響モデルトレーニングシステム「Mimir」を開発しました。
|
<<: AIと情報サービスが出会うとき:百度脳産業イノベーションフォーラムが成都であなたを待っています
近年、3D コンピューター ビジョンと人工知能はともに急速に進歩していますが、両者の効果的な組み合わ...
人類の歴史において、あらゆる主要な技術革命は人類自身と社会全体に影響を及ぼしてきました。同じことは、...
Python は機械学習にとって最も鋭い武器であると言えます。また、機械学習は Python の影...
中国はいつになったら、極めて強力な一般化能力を持つさまざまな知的存在を創造し、人類の真の助手となるこ...
[[284994]]データシャーディングまずは例を見てみましょう。多くの場合、キャッシュには Re...
Leifeng.com(公式アカウント:Leifeng.com)注:少し前、2020年世界インテリジ...
「誰がどれだけの H100 を受け取るのか、そしていつ H100 を受け取るのかは、シリコンバレーで...