シェア | Meituanのディープラーニングシステムのエンジニアリング実践

シェア | Meituanのディープラーニングシステムのエンジニアリング実践

背景

ディープラーニングは、AI時代の中核技術として、さまざまなシナリオに適用されてきました。システム設計レベルでは、計算集約的な性質のため、エンジニアリングの実践における従来の機械学習アルゴリズムとの間には多くの違いがあります。この記事では、Meituan プラットフォームにディープラーニング技術を適用するプロセスにおける関連システム設計の経験をいくつか紹介します。

この記事では、まずいくつかのディープラーニング アルゴリズムの計算要件をリストし、次にこれらの計算要件を満たす業界で一般的なソリューションをいくつか紹介します。最後に、NLUと音声認識の2つの分野における関連システムの設計におけるMeituanプラットフォームの経験を紹介します。

ディープラーニングの計算コスト

モデル入力サイズパラメータサイズ失敗
アレックスネット 227×227 233MB 727 MFLOPS
カフェネット 224×224 233MB 724 MFLOPS
VGG-VD-16 224×224 528MB 16GFLOPS
VGG-VD-19 224×224 548MB 20GFLOPS
Googleネット 224×224 51MB 2 GFLOPS
ResNet-34 224×224 83MB 4 GFLOPS
ResNet-152 224×224 230MB 11 GFLOPS
SEネット 224×224 440MB 21 GFLOPS

データソース

上記の表は、ImageNet 画像認識における一般的なアルゴリズムのモデル サイズと、単一画像のワンパス トレーニングに必要な計算量を示しています。

2012 年にヒントン氏の学生アレックス・クリジェフスキー氏が AlexNet を提案し、ILSVRC 2012 チャンピオンシップで優勝して以来、ILSVRC コンテストの優勝者の精度はますます高くなっています。同時に、使用されるディープラーニングアルゴリズムはますます複雑になり、必要な計算量も増加しています。 AlexNet と比較すると、SENet では約 30 倍の計算が必要になります。 ImageNet には約 120 万枚の画像があることがわかっています。SENet を例にとると、100 エポックの完全なトレーニングを完了するには、2.52 * 10^18 の計算能力が必要になります。このような膨大な計算能力は、従来の機械学習アルゴリズムの範囲をはるかに超えています。言うまでもなく、Google が論文「ディープラーニング時代のデータの不当な有効性の再考」で言及しているデータセットは、ImageNet の 300 倍の大きさです。

物理的なコンピューティングパフォーマンス

このような膨大な量のコンピューティングを前に、現在業界で一般的に使用されているコンピューティング ユニットのコンピューティング能力はどの程度でしょうか?

  • CPU 物理コア: 一般的な浮動小数点演算能力は 10^10 FLOPS のオーダーです。 16 コアのサーバーの計算能力は約 200 GFLOPS です。実際の動作では、CPU はパフォーマンスの約 80%、つまり 160 GFLOPS の計算能力を使用できます。上記の SENet 実行を完了するには 182 日かかります。
  • NVIDIA GPGPU: 現在の V100 のピーク単精度浮動小数点性能は約 14 TFLOPS です。実際の動作では、ピーク性能の 50% である 7 TFLOPS が使用できると想定しており、4 日かかります。

上記のデータ結果に基づくと、ディープラーニングの分野では、GPU トレーニング データ セットに必要な時間は CPU よりもはるかに短いことがわかります。これは、現在ディープラーニング トレーニングに GPU が使用されている重要な理由でもあります。

業界ソリューション

これまでの計算から、計算に GPU を使用した場合でも、ImageNet を 1 回トレーニングするのに 4 日かかることがわかります。しかし、実験やパラメータの調整を行うアルゴリズムエンジニアにとって、このような数日間の時間のかかる待機は耐え難いものです。このため、業界ではディープラーニングのトレーニングを加速するためのさまざまなソリューションが提案されています。

異機種コンピューティングのための並列ソリューション

データ並列処理

データ並列処理とは、各コンピューティング ユニットがモデルの完全なコピーを保持し、異なるデータを個別にトレーニングすることを意味します。1 回または複数回の反復処理の後、各コンピューティング ユニットのモデルは同期されます。これは最も一般的なディープラーニングのトレーニング方法であり、ロジックがシンプルでコードの実装が簡単なのが利点です。

モデルの並列処理

モデルの並列処理とは、各コンピューティング ユニットが同じレイヤー モデル データの異なる部分を保存し、同じデータをトレーニングすることを意味します。データ並列性と比較すると、ニューラル ネットワークのレイヤーをトレーニングした後、各コンピューティング ユニットを 1 回同期する必要があるため、同期通信はまれです。同期通信が頻繁に行われると、システムはハードウェアのコンピューティング能力を十分に活用できなくなります。ただし、ビジネス シナリオによっては、Softmax レイヤーで多数のカテゴリを分類する必要がある場合があり、その場合、Softmax レイヤーが大きすぎて単一のコンピューティング ユニットに格納できなくなります。この場合、モデルを複数の部分に分割し、異なるコンピューティング ユニットに格納する必要があります。モデルの並列処理は、NLU、推奨、金融などの分野で一般的です。

ストリーム並列処理

ストリーム並列処理とは、各コンピューティング ユニットが異なるレイヤーのモデル データを保存し、同じデータをトレーニングすることを意味します。上図に示すように、GPU1 はニューラル ネットワークの第 1 層の計算のみを担当し、GPU2 はニューラル ネットワークの第 2 層から第 5 層の計算のみを担当し、GPU3 は第 6 層の計算のみを担当します。ストリーミング並列処理の利点は、各コンピューティング ユニット間の通信と計算の重複にあります。適切に構成すれば、ハードウェア リソースを最大限に活用できます。欠点としては、モデルによっては各コンピューティングユニットの計算能力のバランスをとる必要があり、構成が悪ければ「ダム湖」が形成されやすいことです。上の図に示すように、GPU1 の計算量が少なすぎる一方で、GPU2 の計算量が多すぎるため、GPU1 と GPU2 の間で多数のミニバッチがブロックされる可能性が非常に高くなります。これは、オンライン環境でより一般的です。

ハイブリッド並列処理

ハイブリッド並列処理は、上記の並列方法を組み合わせたものです。たとえば、一部の画像認識タスクでは、最初の数層でデータ並列処理を使用し、最後の Softmax 層でモデル並列処理を使用する場合があります。

異機種コンピューティング向けハードウェア ソリューション

  • 単一マシンおよび単一カード: GPU コンピューティング カードがホストにインストールされます。パーソナルコンピュータによく見られます。
  • 複数のカードを持つ単一のマシン: 複数の GPU コンピューティング カードが 1 つのホストにインストールされます。一般的な例としては、4 枚のカードが入ったマシン 1 台、8 枚のカードが入ったマシン 1 台、さらには 10 枚のカードが入ったマシン 1 台などがあります。ほとんどの企業がこのハードウェア ソリューションを採用しています。
  • 複数のマシンと複数のカード: 複数の GPU コンピューティング カードが複数のホストにインストールされます。企業内のコンピューティング クラスターでよく使用される Infiniband は、通常、複数のマシン間で高速ネットワーク通信を実現するために使用されます。
  • カスタマイズ: これは Google の TPU ソリューションに似ています。 「大企業」ではよく見られます。

異機種コンピューティング向け通信ソリューション

上記のハードウェア ソリューションに基づいて、ResNet を例に挙げます。モデル サイズは 230M、単一画像の計算複雑度は 11 GFLPOS、ミニバッチ サイズは 128 と想定されます。ディープラーニングのトレーニングにおける各ハードウェア モジュールの消費時間は次のように計算できます。

  • GPU: V100 の場合、6 TFLOPS と仮定すると、ミニバッチに必要な理論上の時間は 0.23 秒です。
  • PCI-E: 一般的な PCI-E 3.0 * 16、速度は 10 GB/秒、モデルの送信に必要な理論上の時間は 0.023 秒です。
  • ネットワーク: 10 GB/秒の高速ネットワークを想定すると、モデルの送信に必要な理論上の時間は 0.023 秒です。
  • ディスク: 通常のディスク。読み取り速度は 200M/s と想定します。ミニバッチに必要な画像の読み取りには 0.094 秒かかります。

上記のデータ結果に基づいて、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 などの分野固有のトレーニング プラットフォームなど、多くの有名なディープラーニング トレーニング プラットフォームがリリースされていますが、調査の結果、次の理由により、社内でディープラーニング システムを開発することにしました。

  • 一般的なトレーニング プラットフォームには、ドメイン固有の機能が欠けています。音声認識における特徴抽出モジュールやアルゴリズムなど。
  • 一般的なトレーニング プラットフォームは、通常、データフロー グラフに基づいて計算グラフ内の各演算子をモデル化するため、粒度が非常に小さく、多くのユニットをスケジュールする必要があり、タスクのスケジュール設定が複雑になります。
  • Kaldi などのドメイン固有のトレーニング プラットフォームでは、ニューラル ネットワークをトレーニングする際のパフォーマンスが不十分です。
  • オンライン ビジネスには多くの特殊性があります。TensorFlow をトレーニング プラットフォームとして使用する場合、オンライン ビジネスのシナリオには適していません。

NLUオンラインシステム

オンラインシステムのビジネス特性

NLU オンライン システムを設計する際には、NLU ビジネスのいくつかの特性を考慮しました。次のような特徴があることがわかりました。

  • ビジネスやテクノロジーが変化すると、アルゴリズムのプロセスも変化することがよくあります。
  • アルゴリズムプロセスは、ディープラーニングアルゴリズムだけでなく、直列に接続された複数のアルゴリズムで構成されています。単語分割などのアルゴリズムは DL アルゴリズムではありません。
  • 緊急の問題に迅速に対応するには、モデルを頻繁に更新する必要があります。
  • さらに重要なことは、「データ駆動型」の自動反復クローズドループを構築したいと考えています。

変化するビジネス

NLU タスクのアルゴリズム プロセスは多層化されており、ビジネスは頻繁に変化します。次の図に示すように:

つまり、ビジネス要件が変化すると、NLU システムの初期アルゴリズム プロセスではクエリを 2 つのカテゴリに分割するだけで済みますが、後になって 3 つのカテゴリに分割する必要が生じる可能性が高くなります。

ホットアップデート

ビジネスニーズに応じて、または何らかの特別な問題に緊急に対処するために、NLU オンライン システムは、アルゴリズム モデルを迅速に応答してホット更新する必要があることがよくあります。例えば、最近のホットワード「skr」は、ほぼ一夜にして突然人気が出ました。下記のWeibo投稿に示されているように、「skr」の正しい意味を正しく理解しないと、このWeibo投稿が何を表現しようとしているのかを正確に理解できない可能性があります。

ユーザーエクスペリエンスに影響を与えないようにするために、NLU システムのホットアップデートを直ちに実行し、新しいモデルを緊急にオンラインにする可能性があります。

データ駆動型自動反復クローズドループ

オンライン システムの場合、上図に示すように自動反復クローズド ループを構築することで、ビジネス データをより有効に活用し、サービス品質を向上させることができます。

NLUオンラインシステムのコア設計

アルゴリズムフローの抽象化

オンライン システムのシリアルかつ変更可能なアルゴリズム フローに適応するために、次の図に示すように、オンライン システムのアルゴリズムを抽象化します。

つまり、各アルゴリズムは、いくつかのスロットとリソースに依存します。スロットとリソースが配置されると、対応するアルゴリズムがトリガーされて実行されます。アルゴリズムの実行は、まずアルゴリズム アダプターを通過して、スロットとリソース内のデータを適応させ、オペレーターの入力形式に変換します。次に、演算子はアルゴリズム自体を実行し、演算子を実行した後、アルゴリズム パーサーを通過します。アルゴリズム パーサーは主に、アルゴリズム実行の結果を解析し、対応するスロットをトリガーするために使用されます。たとえば、アルゴリズムの結果に応じて、上位 3 つの結果がトリガーされます。

複数のアルゴリズムが直列に接続され、次の結果が作成されます。

ホットアップデートプロセスの設計

上の図に示すように、アルゴリズムのホットアップデートプロセスを上記のように設計します。初期テスト状態は左上隅にあります。これは、複数のクエリが同じモデル データを使用していることを意味します。モデルの更新要求が発生すると、システムは新しいクエリをブロックします (右上隅にステータスが表示されます)。モデルが更新されると、新しいクエリは新しいモデルを使用し、古いクエリは引き続き古いモデルを使用します (右下隅のステータス)。最後に、古いモデルを使用したクエリが終了すると、古いモデルはメモリ(左下隅)から削除され、システムは初期状態に戻ります。

音響モデルトレーニングシステム

これは、TensorFlow などの一般的なディープラーニング トレーニング プラットフォームには、特徴抽出などのビジネス関連のドメイン機能が不足しており、Kaldi の音響モデルのトレーニング プロセスが遅すぎるためです。そこで、Meituan は次のような特徴を持つ音響モデルトレーニングシステム「Mimir」を開発しました。

  • TensorFlow よりも粒度の粗いモデリング ユニットを使用すると、タスクのスケジュールと最適化がよりシンプルかつ便利で簡単になります。
  • データ並列ソリューションを使用すると、複数の GPU を搭載した単一のマシンでほぼ線形の加速を実現できます。 (同期更新戦略では、4カード加速比は3.8に達します)
  • Kaldi の独自のトレーニング アルゴリズムがいくつか移植されました。
  • スピードはカルディの6~7倍。 (800 時間のトレーニング データ、単一マシンと単一 GPU の条件下で、Kaldi は 6 ~ 7 日かかりますが、Mimir は 20 時間しかかかりません)
  • 業務面では、Kaldiの特徴抽出などの関連モジュールを移植しました。

<<:  AIと情報サービスが出会うとき:百度脳産業イノベーションフォーラムが成都であなたを待っています

>>:  CNNが画像の特徴を自動的に抽出できる理由

ブログ    
ブログ    

推薦する

NVIDIA は、わずか 5 行のコードで画像を 3D モデルに変換する 3D ディープラーニング ツール Kaolin をリリースしました。

近年、3D コンピューター ビジョンと人工知能はともに急速に進歩していますが、両者の効果的な組み合わ...

...

脳とコンピュータをつなぐ技術が実現!未来の人類社会はどうなる?

人類の歴史において、あらゆる主要な技術革命は人類自身と社会全体に影響を及ぼしてきました。同じことは、...

...

...

2021 年の Python 機械学習ライブラリ トップ 10

Python は機械学習にとって最も鋭い武器であると言えます。また、機械学習は Python の影...

...

12の性能項目で1位を獲得、GPT-4に最も近い中国最大級のモデルが登場!いよいよ本格的に営業開始です!

中国はいつになったら、極めて強力な一般化能力を持つさまざまな知的存在を創造し、人類の真の助手となるこ...

...

面接でコンシステントハッシュアルゴリズムについて再度質問されました。この答えは面接官を即死させるでしょう!

[[284994]]データシャーディングまずは例を見てみましょう。多くの場合、キャッシュには Re...

中国工程院院士の李軍氏:単一車両知能には5つの大きな問題があり、自動運転には新たな技術的ルートが必要

Leifeng.com(公式アカウント:Leifeng.com)注:少し前、2020年世界インテリジ...

...

...

GPT-5 が誕生しました。50,000 個の H100 が必要です。世界のH100総需要は43万個、Nvidia GPUは品薄の嵐に

「誰がどれだけの H100 を受け取るのか、そしていつ H100 を受け取るのかは、シリコンバレーで...

...