分散トレーニングは、モデルトレーニングプロセスを複数の計算ノードに分割する手法です。 この手法は、モデルトレーニングを高速化し、大量のデータを処理し、システムの安定性とリソース使用率を向上させるために、ディープラーニングおよび大規模な機械学習タスクで使用されます。 このトピックでは、分散トレーニングにStarServerフレームワークを使用する方法について説明します。
StarServerは、ネイティブTensorFlowのSend/RecvセマンティクスをPull/Pushセマンティクスに変更し、ロックフリーのグラフ実行を有効にすることで、サブグラフの同時実行の効率を向上させます。 PAI-TensorFlowは、一般的なビジネスシナリオでネイティブTensorFlowを複数回上回ります。 たとえば、PAI-TensorFlowは、ワーカーの数が3,000場合、ほぼ線形のスケーラビリティを実現できます。
警告
GPUアクセラレーションサーバーは段階的に廃止されます。 CPUサーバーで実行されるTensorFlowタスクを送信できます。 モデルトレーニングにGPU高速化インスタンスを使用する場合は、Deep Learning Containers (DLC) に移動してジョブを送信します。 詳細については、「トレーニングジョブの送信」をご参照ください。
サンプルコード
分散トレーニングにStarServerを使用するには、tf.train.Server関数の引数にprotocol="star_server" を追加します。
cluster = tf.train.ClusterSpec({"ps": ps_hosts, "worker": worker_hosts})
server = tf.train.Server(cluster,
job_name=FLAGS.job_name,
task_index=FLAGS.task_index,
protocol="star_server")