序文 大規模なデータセットでトレーニングされた最新のニューラル ネットワーク アーキテクチャは、画像認識や自然言語処理から不正検出や推奨システムまで、さまざまな領域にわたって優れた結果を達成できます。しかし、これらのニューラル ネットワーク モデルのトレーニングには、大量の浮動小数点計算能力が必要です。近年、GPU ハードウェアの計算能力とトレーニング方法が大幅に進歩したにもかかわらず、単一のマシン上でネットワークをトレーニングするために必要な時間は、依然として非現実的に長いのが実情です。したがって、ニューラル ネットワーク トレーニング システムの浮動小数点計算機能を向上させるには、分散 GPU 環境を使用する必要があります。 TensorFlow 分散トレーニング TensorFlow はデータフローパラダイムを採用し、ノードとエッジの有向グラフを使用して計算を表します。 TensorFlow では、ユーザーはこのようなシンボリック計算グラフを静的に宣言し、書き換えとパーティショニングを使用してそれらをマシンに分散して分散実行する必要があります。 TensorFlow での分散機械学習トレーニングでは、図に示すパラメータ サーバー アプローチが使用されます。 クラスター、ジョブ、タスク TensorFlow の分散トレーニングに関して、主な概念としては Cluster、Job、Task があり、それらの関係は次のとおりです。
TensorFlow 分散コンピューティング モード グラフ内モード グラフモードでは、モデルの計算グラフのさまざまな部分が異なるマシンで実行されます。コンピューティングは、複数の GPU を備えた単一のマシンから、複数の GPU を備えた複数のマシンに拡張されましたが、データの分散は依然として 1 つのノード上にあります。この構成は簡単です。複数のマシンと複数の GPU のコンピューティング ノードは、結合操作を実行し、タスクを受け入れるために外部へのネットワーク インターフェイスを提供するだけで済みます。トレーニング データの分散は依然として 1 つのノード上にあります。トレーニング データを異なるマシンに分散すると、同時トレーニングの速度に影響します。このモードは、大規模なデータのトレーニングには推奨されません。 グラフ間モード Between-graph モードでは、データが並列化され、各マシンはまったく同じ計算グラフを使用します。トレーニング パラメータはパラメータ サーバーに保存されます。データを配布する必要はありません。データは各コンピューティング ノードに分散されます。各コンピューティングノードは独自に計算を行い、更新するパラメータをパラメータサーバーに通知して更新します。このモードではトレーニング データの配布は不要であるため、データ量が TB レベルの場合に多くの時間を節約できます。現在主流の分散トレーニングモードは主に Between-graph です。 パラメータ更新方法 同期更新 並列計算に使用される各ノードは、独自のバッチを計算した後、勾配値を取得し、その勾配値を PS パラメータ サービス マシンに送信し、PS がモデル パラメータを更新するのを待機します。 PS パラメータ サーバーは、一定数のコンピューティング ノードの勾配を収集した後、平均勾配を計算し、PS パラメータ サーバー上のパラメータを更新し、各ワーカー ノードにパラメータをプッシュします。 非同期更新 PS パラメータ サーバーは、他のマシンを待たずに、1 台のマシンの勾配値を受信するとすぐにパラメータを直接更新します。この反復方法は、マシン A が PS パラメータ サーバーでパラメータを計算して更新するときに、マシン B が前回の反復からの古いパラメータ値をまだ使用している可能性があるため、比較的不安定です。 分散トレーニング手順 1. コマンドラインパラメータを解析して、クラスタ情報 ps_hosts と worker_hosts、および現在のノードのロール情報 job_name と task_index を取得します。 2. 現在のタスクノードのサーバーを作成する
3. 現在のノードがパラメータ サーバーの場合は、server.join() を呼び出して無限に待機します。ワーカーの場合は次のステップを実行する
4. 次に、トレーニングするモデルを構築します
5. モデルのトレーニングプロセスを管理するための tf.train.Supervisor を作成する
UAI Train 分散トレーニング展開 UCloud AI トレーニング サービス (UCloud AI Train) は、AI トレーニング タスク用の大規模分散コンピューティング プラットフォームです。高性能 GPU コンピューティング ノードに基づくワンストップ管理 AI トレーニング タスク サービスを提供します。 AI トレーニング タスクを送信した後、ユーザーはコンピューティング ノードのスケジュール設定、トレーニング環境の準備、データのアップロードとダウンロード、災害復旧について心配する必要がなくなります。 現在、UAI Train プラットフォームは、TensorFlow および MXNet フレームワークの分散トレーニングをサポートしています。 PS コードと Worker コードは同じコード エントリに実装する必要があります。実行中、PS と Worker は同じ Docker コンテナ イメージと同じ Python コード エントリを使用して実行され、システムは PS と Worker の env 環境パラメータを自動的に生成します。 TensorFlow 分散トレーニングは PS-Worker 分散形式を使用し、分散トレーニングを実行するための Python インターフェースを提供します。 UCloud AI Train 分散トレーニングは、パラメータ サーバーとワーカー サーバーのハイブリッド展開方式を採用しており、すべてのコンピューティング ノードは GPU 物理クラウド ホストで構成されています。 PS は計算に CPU のみを使用しますが、ワーカー サーバーは計算に GPU と CPU の両方を使用します。 PSとWorkerの比率は1:1です。 データストレージ 分散トレーニングで使用される入力データと出力データは、異なるデータ ソースから取得される場合があります。現在、UAI Train はデータ ストレージとして UFS のみをサポートしています。 入力データの保存 入力データ ソースとして UFS ネットワーク ディスクを指定します。トレーニング プロセス中、UAI Train プラットフォームは、対応する UFS データを、トレーニングが実行される Worker コンテナの /data/data ディレクトリにマップします。システムは、ip:/xxx/data/imagenet/tf → /data/data/ のように、実行されたコンテナにデータを自動的にマッピングします。 出力データの保存 出力データ ソースとして UFS ネットワーク ディスクを指定します。トレーニング プロセス中、UAI Train プラットフォームは、対応する UFS データを各 PS コンテナーと Worker コンテナーの /data/output ディレクトリにマッピングしてトレーニングを実行し、同じデータに共有形式でアクセスします。同時に、トレーニング プロセス中に、他のクラウド ホストを通じてトレーニングによって保存されたモデル チェックポイントにリアルタイムでアクセスできます。 ケーススタディ: CIFAR-10 による画像認識 CIFAR-10 は機械学習における一般的な画像認識データセットです。データセットには 60,000 枚のカラー画像が含まれており、10 のカテゴリに分かれており、各カテゴリには 6,000 枚の画像が含まれています。トレーニング用に 50,000 枚、テスト用に 10,000 枚の画像があります。 http://groups.csail.mit.edu/vision/TinyImages/ トレーニングコードを調整する UAI プラットフォームでトレーニングするには、まずソース コードをダウンロードし、cifar10_main.py に次の変更を加えます。 1. 関連するパラメータを追加します: --data_dir、--output_dir、--work_dir、--log_dir、--num_gpus。 UAI Train プラットフォームはこれらのパラメータを自動的に生成します。 2. コードに UAI パラメータを追加します。入力フォルダーを構成するには data_dir を使用し、出力フォルダーを構成するには output_dir を使用します。 具体的なケースコードは https://github.com/ucloud/uai-sdk/tree/master/examples/tensorflow/train/cifar から入手できます。 UAI Trainプラットフォームでトレーニングを実行する 1. https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator の指示に従って CIFAR-10 tfrecords を生成します。 2. UAI-SDK が提供する tf_tools.py を使用して、CIFAR-10 サンプルの Docker イメージを生成します。 3. Docker イメージが UHub にアップロードされ、UAI Train プラットフォームで実行されていることを確認します。
UAIプラットフォームでの分散トレーニング CIFAR-10 サンプル コードでは tf.estimator.Estimator API が使用されており、分散環境と分散環境構成だけで直接分散トレーニングを行うことができます。この構成は tf.estimator.Estimator API の標準である必要があります。つまり、TF_CONFIG 構成を定義します。
UAI Train プラットフォームの分散トレーニング機能は、TensorFlow 分散トレーニング用の GPU クラスター環境を自動生成し、各トレーニング ノードの TF_CONFIG を自動生成することができます。したがって、UAI Train プラットフォームで CIFAR-10 の分散トレーニングを実行することは、単一マシンのトレーニングと同じです。入力/出力の UFS アドレスを指定して、次の命令を実行するだけです。
要約する UAI Train TensorFlow の分散トレーニング環境は、データ交換にデフォルトの grpc プロトコルを使用する TensorFlow の分散トレーニング システムの実装に基づいています。 PS と Worker はハイブリッド方式で展開されます。 PS は純粋な CPU コンピューティングを使用し、Worker は GPU + CPU コンピューティングを使用します。 UAI Train プラットフォームでは分散コンピューティングを非常に便利に実行できるため、効率が向上し、トレーニング時間が短縮されます。最後に、この記事では、CIFAR-10 ケースを使用して、UAI Train プラットフォームでのトレーニングに必要な変更を分析し、UAI Train プラットフォームで分散トレーニングを実行します。 |
>>: ハイパーコンバージェンスが後半に突入:クラウドコンピューティングのソフトウェアとハードウェアの統合配信
bluevm(通称Blue)は長い間大きなイベントもなく、価格も基本的に通常レベルを保っています。ホ...
将来のクラウド データ管理戦略に関しては、精度が注目すべき点です。 Komprise の COO、社...
vps.net は、uk2 グループに所属する有名な VPS クラウド プロバイダーです。現在、世界...
実際、すべてのオンラインマーケティングは動的です。たとえば、最も一般的なQQグループマーケティングと...
最近、多くの SEO 愛好家がグループ内で「なぜ私の Baidu の重みは昨日 3 だったのに、今日...
arkecx はインドに 2 つのデータセンターを持ち、デフォルトの最小帯域幅 1Gbps でインド...
数日前、ウェブマスターのウェブサイトを閲覧していたところ、1日に6000元を稼いだと堂々と自慢してい...
Hostcat は buyvm.net から、8 月にプロモーションされた特別版 VPS が 9 月...
SEO の考え方については誰もが知っていますが、実際に優れた SEO の考え方を持っている人は多くあ...
一昨日はオリジナルコンテンツの絶望についてお話ししましたが、今日は引き続き、オリジナルコンテンツの特...
host1plus.com の 4 月の定期プロモーション クーポン コードが公開されました。VPS...
今日のウェブサイト市場はますます飽和状態になりつつあります。さまざまなウェブサイトが次々と登場します...
キーワードを基に、ユーザーの行動や言語に合わせて網羅的なキーワードを最適化する必要があります。キーワ...
現在、消費者部門の接続された IoT デバイスの数は産業部門のそれを上回っていますが、業界固有のニー...
ウェブサイト運営者、特に中小企業やウェブマスターはウェブサイトのランキングを毎日チェックしており、少...