モデルもオンライン授業を受講できますか? !サービス指向の蒸留トレーニング プログラムを 1 つの記事で理解する

モデルもオンライン授業を受講できますか? !サービス指向の蒸留トレーニング プログラムを 1 つの記事で理解する

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。

今年初めから、流行により、人が集まる機会を減らし、ウイルス拡散の可能性を減らすために、小中学校は徐々にオンライン授業を開始した。オンラインコースを受講することは、よく知られた学習方法になりました。

しかし、ディープラーニングの分野では、モデルのトレーニングをオンラインコースの形で行うこともできることをご存知でしたか? 驚かないでください、これは本当に存在するのです!本日は、LF AI Foundation の EDL プロジェクトが PaddlePaddle ディープラーニング プラットフォームに基づいて立ち上げた、サービス指向の蒸留トレーニング ソリューションについてお話します。

[[332089]]

蒸留トレーニングとは何ですか?

蒸留トレーニングについて話すとき、知識の蒸留について言及する必要があります。最近では、ディープラーニング モデルはますます大きくなり、ネットワーク層もますます深くなっています。多くのシナリオでは、モデルが大きく、レイヤーの数が多いほど、モデルの効果は向上します。ただし、推論速度、グラフィックス メモリ リソース、およびその他の要件の制限により、大規模なモデルは通常、直接展開できず、圧縮する必要があります。

現在主流の圧縮方法には、クロッピング、量子化、知識蒸留などがあります。知識蒸留の概念は、2015年に発表された論文「ニューラルネットワークにおける知識の蒸留」でHintonらが提唱したブラックテクノロジーです。複雑なモデル(教師)から別の軽量モデル(生徒)に知識を移すことでモデル圧縮を実現する、非常に古典的なモデル圧縮技術です。

実際のところ、いわゆる知識移転は、教師モデルを使用して生徒モデルをトレーニングするトレーニング プロセスとして理解できます。このトレーニング方法は蒸留トレーニングです。学生モデルをトレーニングして良好な結果が得られたら、その学生モデルを実際の展開に使用できます。

下の図に示すように、トレーニング ステップは 2 つのステップに分けられます。

  1. 教師モデルをトレーニングします。
  2. 生徒モデルをトレーニングします。つまり、教師モデルの知識を使用して生徒モデルをトレーニングします。

知識蒸留アーキテクチャ図

いわゆる教師モデルの知識とは、教師モデルの推論結果を指し、ソフト ラベルと呼びます。このソフト ラベルは、生徒ネットワークのトレーニング ターゲットとして使用されます。生徒の推論結果は、教師の推論結果にできるだけ近い必要があります。ソフト ラベルに対応するのは、実際のトレーニング データのラベルであるハード ラベルです。ハードラベルと比較すると、ソフトラベルにはより多くの情報が含まれています。

たとえば、ロバと馬を区別する分類タスクを実行する場合、ソフト ラベルはハード ラベルのように馬にインデックス値 1 を、他のカテゴリに 0 を与えることはありません。代わりに、ロバには確率値 (0.3 や 0.4 など) も提供されます。この利点は、ソフト ラベルに異なるカテゴリ間の類似性情報が含まれていることです。明らかに、ソフト ラベルでトレーニングされたモデルは、ハード ラベルのみでトレーニングされたモデルよりも多くの知識を学習し、より優れたものになります。

知識蒸留トレーニングの目的関数は、蒸留損失(教師のソフトラベルに対応)と生徒損失(ラベル付けされたハードラベルに対応)に重み付けすることによって取得できます。式は次のとおりです。ここで、p は学生モデルの推論結果、q は教師の推論結果、y はハード ラベルを表します。

サービス蒸留トレーニングとは何ですか?

蒸留トレーニングについてお話ししたので、本題に入り、サービス指向の蒸留トレーニングがどのようなものか見ていきましょう。蒸留トレーニングは、次の3つの方法に分けられます。

オフライン蒸留トレーニング

オフライン蒸留トレーニング方法は、講師が講義内容をビデオに録画し、それを学生に渡して自習させる方法と非常に似ています。学生は、コースビデオに基づいて自分で学習します。したがって、オフライン蒸留トレーニングでは、まず教師モデルを使用して推論を行い、その結果をディスクに保存し、次に学生モデルがディスクに保存されたサンプルと教師モデルの推論結果をトレーニング用のデータセットとして使用します。このトレーニング モードでは、学生モデルのトレーニングは従来のトレーニングと一致しており、方法は単純です。ただし、このトレーニング方法では、通常、データの拡張が必要であり、膨大なディスク領域を占有するため、アプリケーション環境には一定の制限が課せられます。

オフライン蒸留トレーニング

従来の蒸留トレーニング

従来の蒸留トレーニングでは、教師モデルと生徒モデルを同じネットワークに配置し、教師モデルのパラメータを固定してフォワードトレーニングのみを実行し、生徒モデルは通常どおりバックプロパゲーショントレーニングを実行します。これは現在主流となっている蒸留研修方法でもあります。これは、教師と生徒が教室にいて、教師が話し、生徒が聞くという現実世界の従来の教授法と非常によく似ています。しかし、このトレーニング方法では、教師モデル自体に大きなスペースが必要になるだけでなく、教師と生徒が 1 対 1 のバインディング関係にあるため、生徒モデルのトレーニングは教師モデルに完全に依存します。生徒モデルは、教師モデルが推論結果のバッチを出力するまで待ってからトレーニングする必要があり、教師モデルは生徒がバッチのトレーニングを完了するまで待ってから次のバッチの推論を開始する必要があり、全体的なトレーニング速度に一定の影響を与えます。

サービス指向の蒸留トレーニング

Serving Distillation Training は、EDL (Elastic Deep Learning) をベースにしたトレーニング ソリューションです。 EDL は、人工知能とビッグデータ ディープラーニングを担当する Linux Foundation (LF) 傘下の財団である LF AI が育成している重要なプロジェクトの 1 つです。現在、クラウド コンピューティング リソースの開発が急速に進み、ディープラーニング モデルのトレーニングと推論に弾力性のあるリソースを使用することが一般的になり、EDL プロジェクトが誕生しました。 EDL プロジェクトにより、クラウド上でのディープラーニング モデルのトレーニングと推論がより簡単かつ効率的になります。サービス指向蒸留トレーニングプログラムは、EDLプロジェクトがBaiduのPaddlePaddleオープンソースディープラーニングプラットフォームと組み合わせて開始した新しいトレーニングプログラムであり、権威ある起源を持つと言えます。

従来の蒸留トレーニングと比較して、サービス指向の蒸留トレーニングでは、教師モデルと生徒モデルが分離されています。教師モデルはオンライン推論サービスとして展開され、生徒モデルはクライアントとして、インターネット経由で教師モデルにサンプルをリアルタイムに送信して、トレーニングの推論結果を取得します。これは、モデルにオンライン授業を受けさせるようなものです。では、モデルがオンライン授業を受けられるようにすることで、ユーザーにはどのようなメリットがもたらされるのでしょうか?下を見てみよう!

サービス蒸留研修

サービス指向の蒸留トレーニングの価値

従来の蒸留トレーニング モデルと比較して、サービス指向の蒸留トレーニングは、ユーザーに次のような利点をもたらします。

  1. ビデオメモリリソースを節約します。学生モデルと教師モデルが分離されているため、サービス指向の蒸留トレーニングでは異種リソースを使用できます。つまり、学生モデルと教師モデルを異なるデバイスに展開できます。これまではビデオメモリのサイズの関係で単一の GPU カードに展開することが困難だった蒸留ネットワークを、この方法で異なるカードに展開できるようになりました。
  2. トレーニング速度を向上させます。ビデオメモリリソースが節約されるため、より大きなバッチサイズで学生モデルをトレーニングできます。同時に、学生モデルと教師モデルは異種パイプラインであるため、学生モデルはトレーニング前に教師モデルの推論が完了するまで待つ必要がありません。上記の2つの理由を組み合わせることで、トレーニング速度を大幅に向上できます。
  3. 研修リソースの利用率を向上します。実際のアプリケーションでは、教師モデルをオンラインの弾性推定カード クラスターに展開し、オンライン推定カードがアイドル状態のときにその計算能力リソースを使用して、蒸留タスクにおける教師モデル側のスループットを向上させることができます。同時に、Teacher モデルは柔軟にスケジュールできるため、ピーク時にオンライン インスタンスが優先されることによるタスクの失敗を心配する必要はありません。これは、教師のトレーニング カードのリソース要件をオンライン GPU カードに転送することと同じです。v100 などのオフライン トレーニング リソースが限られている場合は、オンライン カードを使用してトレーニングを高速化し、貴重なトレーニング リソースを節約します。さらに、オフライン クラスターでは、スケジューリング戦略と組み合わせて、Teacher モデルをクラスターの断片化されたリソース、または k40 などの使用率の低いリソースに展開し、クラスターのアイドル状態および断片化されたリソースを最大限に活用することもできます。
  4. トレーニング効率を向上します。ユーザーは、スループット パフォーマンスに基づいて教師と生徒の比率を柔軟に設定できます。つまり、1:1 の個別指導モデルを維持するのではなく、複数の教師が複数の生徒を指導できるため、トレーニングの出力が最大化されます。

サービング蒸留トレーニングの有効性を検証するために、通常のトレーニング、従来の蒸留トレーニング、サービング蒸留トレーニングを使用して、ImageNet データセットで ResNet50_vd モデルをトレーニングしました。

精度の面では、通常のトレーニングと比較して、蒸留トレーニングにより ResNet50_vd モデルの精度が 2% 近く向上することがわかります。サービス指向の蒸留トレーニングと従来の蒸留トレーニングの精度は同等です。もちろん、このモデルの蒸留精度はこれよりもはるかに優れています。知識蒸留の精度を向上させるためのヒントについては、次のアドレスを参照してください。

https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/distillation/index.html

速度の面では、通常のトレーニングと比較して、従来の蒸留トレーニングは、教師モデルが計算能力の大部分を占めるため、計算能力の大部分を占めます。そのため、同じトレーニングリソースでは、トレーニング速度は通常のトレーニングの35.9%にすぎません。サービス指向の蒸留トレーニングでは、追加のオンライン P4 弾性リソースを使用するため、教師のトレーニング カードのリソース要件が弾性カードに転送されます。そのため、通常のトレーニングと比較して、82.8% のトレーニング効率が維持され、従来の蒸留トレーニングよりも 2.3 倍高速になります。

教師リソースの数を増やし続けると、理論的には EDL サービスベースの蒸留トレーニングの速度は通常のトレーニングと同等になります。もちろん、従来の蒸留トレーニングは、より多くのリソースを使用すればさらに加速できますが、これにより、より貴重な v100 トレーニング リソースが消費されることになります。

サービス指向の蒸留トレーニングがそれほど強力である場合、それはどのように実現されるのでしょうか?具体的な実装を見てみましょう。

サービス指向の蒸留トレーニングの実施

具体的な実装の観点から見ると、サービス指向蒸留トレーニングは、教師モデルをサーバーとして、生徒モデルをクライアントとして展開するため、サービスと呼ばれます。次の図に示すように、このソリューションは、Teacher モデルをオンラインのフォールト トレラントなエラスティック サービスとして展開し、Student モデル側では DistillReader を使用して Student モデルと Teacher モデル間の通信をカプセル化し、Teacher サービスにアクセスするというものです。次に、DistillReader とフォールト トレラントなエラスティック サービスとは何かを見てみましょう。

サービス指向蒸留トレーニングアーキテクチャ図

ディスティルリーダー

DistillReader は、Student モデルに代わって Teacher モデルと通信するために使用され、それによって Student モデルのトレーニングに使用できるデータ リーダーを生成します。次の図に示すように、Student モデルはトレーニング サンプルとラベルをトレーニング リーダーに渡し、DistillReader はトレーニング リーダーからトレーニング サンプルを読み取って Teacher モデルに送信し、推論結果を取得します。推論結果は元のトレーニング リーダー内のデータとともにカプセル化され、推論結果を含む新しいリーダーが Student モデルに返されるため、TEACHER モデルの推論と STUDENT モデルのトレーニングをパイプライン化して並列化できます。

DistillReader 機能図

耐障害性と回復力のあるサービス

フォールト トレラントなエラスティック サービスの実装アーキテクチャを下図に示します。まず、Paddle Serving を通じて複数の Teacher モデルをサービスとしてデプロイし、Redis データベースにサービスを登録します。Student モデルはクライアントとして機能し、サービス ディスカバリから必要な Teacher サービスを照会します。サービス ディスカバリは Redis データベースを照会し、特定の負荷分散戦略に従ってクライアントが必要とする Teacher リストを返します。Teacher が変更されるたびに、クライアントは最新の Teacher リストをリアルタイムで取得し、再利用された Teacher リソースへの接続によるタスクの失敗を心配することなく、Teacher に接続して蒸留トレーニングを行うことができます。

エラスティックスケーリングサービスアーキテクチャ図

下図は、サービス指向の蒸留トレーニング操作のフローチャートです。図では、STUDENTモデルがTEACHERモデルにサンプルを送信して推論結果を取得し、TEACHERモデルのサービス側は任意にサンプルを追加および削除し、柔軟に調整できることがわかります。

サービス指向蒸留研修フローチャート

実装計画がわかったので、サービス蒸留トレーニングをどのように活用すればよいでしょうか?以下、操作例を通して簡単に紹介します。

サービス指向の蒸留トレーニング実習

画像分類モデルをトレーニングすることで、サービング蒸留トレーニングを使用する方法を示します。これは単なるデモンストレーションなので、ここではスタンドアロン環境を使用します。つまり、サーバーとクライアントは同じサーバーにデプロイされ、サーバーの IP アドレスは 127.0.0.1 です。異なるデバイスに展開する場合は、コード内の IP アドレスを変更するだけです。

環境の準備

イメージを取得するには、以下のコマンドを実行してください。このイメージは CUDA9.0 環境で、EDL、PaddlePaddle コア フレームワーク、Padde Serving、およびその他の関連する依存関係が事前にインストールされています。

  1. docker pull hub.baidubce.com/paddle-edl/paddle_edl:latest-cuda9.0-cudnn7
  2. nvidia-docker 実行 -name paddle_edl hub.baidubce.com/paddle-edl/paddle_edl:latest-cuda9.0-cudnn7 / bin /bash

教師モデルを開始する

GPU カード 1 で Teacher サービスを開始するには、次のコマンドを実行してください。Teacher モデルは画像分類モデル ResNeXt101_32x16d_wsl、サービス ポート番号は 9898、メモリ最適化機能は有効になっています。

  1. cd example/distill/resnet
  2. wget --no-check-certificate https://paddle-edl.bj.bcebos.com/distill_teacher_model/ResNeXt101_32x16d_wsl_model.tar.gz
  3. tar -zxf ResNeXt101_32x16d_wsl_model.tar.gz
  4. python -m paddle_serving_server_gpu.serve \
  5. --model ResNeXt101_32x16d_wsl_model \
  6. --mem_optim 真 \
  7. --ポート9898 \
  8. --gpu_ids 1

学生モデルのトレーニングを開始する

GPU カード 0 で学生モデルを起動するには、次のコマンドを実行してください。起動される学生モデルは ResNet50_vd です。

  1. python -m paddle.distributed.launch --selected_gpus 0 \
  2. ./train_with_fleet.py \
  3. --model=ResNet50_vd \
  4. --data_dir=./ImageNet \
  5. --use_distill_service=True \
  6. --distill_teachers= 127.0.0.1 : 9898

train_with_fleet.py はトレーニングを開始するためのスクリプトです。ユーザーはこれに蒸留トレーニング関連のコードを追加する必要があります。スクリプトの変更方法を知りたい場合は、次のアドレスを参照してください。

https://github.com/elasticdeeplearning/edl/blob/develop/example/distill/README.md

<<:  人工知能のシンギュラリティに関する考察: 超知能 AI の倫理的問題は無視できない

>>:  ImageNetに匹敵するこのデータセットは、MITによって腹立たしい理由で緊急に削除されました。

ブログ    
ブログ    

推薦する

...

なぜほとんどの人工知能は「人工的な知的障害」のように見えるのでしょうか?

[[431114]]当時流行した「インターネット+」を覚えている人はいるだろうか...「衣食住交通...

ディープラーニング最適化アルゴリズムがどのように機能するかを知りたいですか?クリックしてください!急いで

ディープラーニングは高度に反復的なプロセスです。最適な組み合わせを決定するには、ハイパーパラメータの...

ハードウェアクラッキングに耐えられるハッシュアルゴリズムにはどのようなものがありますか?

序文ブルートフォース クラッキング ツール hashcat を使用したことがある人なら誰でも、このソ...

...

...

Google: より多くのデータはより優れたアルゴリズムに勝ります!

Google が発表した新しい研究論文では、音声検索や YouTube 動画へのテキスト説明やタグ...

独学で機械学習エンジニアを目指す人のための 10 の戒律

コードを書くのは少し憂鬱になるので、色に囲まれる必要があります自己規律や自己学習という言葉を軽く受け...

...

GPT-4+物理エンジンは拡散モデルをサポートし、現実的で一貫性のある合理的なビデオを生成します。

拡散モデルの出現により、テキスト生成ビデオ技術の開発が促進されましたが、このような方法は通常、計算コ...

可視性プラットフォームがセキュリティ オペレーション センター (SOC) にとって重要な理由は何ですか?

ディスプレイ ソリューションは、今日のセキュリティ オペレーション センター (SOC) で必要な複...

Moka、業界初となるAIネイティブHR SaaS製品「Moka Eva」をリリース、AGI時代を見据えた準備万端

2023年6月28日、Mokaは北京で2023年夏の新製品発表会を開催した。 Moka CEOのLi...

ロボットは「痛みを恐れ」始めており、人間の介入なしに「自分自身を癒す」こともできる。

[[348121]]私の印象では、ロボットは火や剣を恐れていないようです。彼らには痛覚はなく、単な...

スマートカーの時代において、あなたの安全とプライバシーを誰が保証するのでしょうか?

電気スマートカーの発展により、自動車はもはや独立した機械的なハードウェアボックスではなく、センシング...

求人検索サイトIndeedの統計:AI採用は減速、求職者の関心は低下

6月末、わが国各省市で大学入試結果が次々と発表される中、学生の専攻選択は統計的な傾向に新たな波を起こ...