Нужен ли нам набор данных в каждом работнике при использовании ParameterServerStrategy?

#python #tensorflow #distributed-computing #distributed #mlops

Вопрос:

В учебном коде ParameterServerTraining из API tensorflow приведен следующий фрагмент кода в model.fit разделе

 def dataset_fn(input_context):
  global_batch_size = 64
  batch_size = input_context.get_per_replica_batch_size(global_batch_size)

  x = tf.random.uniform((10, 10))
  y = tf.random.uniform((10,))

  dataset = tf.data.Dataset.from_tensor_slices((x, y)).shuffle(10).repeat()
  dataset = dataset.shard(
      input_context.num_input_pipelines,
      input_context.input_pipeline_id)
  dataset = dataset.batch(batch_size)
  dataset = dataset.prefetch(2)

  return dataset

dc = tf.keras.utils.experimental.DatasetCreator(dataset_fn)
 

и еще говорят, что

The code in dataset_fn will be invoked on the input device, which is usually the CPU, on each of the worker machines.

Означает ли это, что набор данных должен находиться в одном и том же хранилище каждого рабочего сервера (скажем, сервер параметров и рабочий сервер-разные машины)?

Или есть ли какой-либо способ, которым сервер параметров на одной машине может отправлять данные для обучения работникам без того, чтобы рабочие машины напрямую хранили набор данных здесь, в ParameterServerStrategy, который я не понимаю?

Комментарии:

1. (если у кого-то есть такие же сомнения) При дальнейшем изучении я обнаружил, что мы можем запустить координатора на 1 сервере, где присутствует сервер параметров, и мы можем запустить рабочих и параметры ps с помощью tf.distribute. Сервер(), который принимает вызовы на сокращение или обучающие вызовы от координатора. проверьте эту ссылку tensorflow.org/api_docs/python/tf/distribute/Server

Ответ №1:

Отвечаю здесь на благо сообщества.

Из раздела комментариев:

(если у кого-то есть такие же сомнения) При дальнейшем изучении я обнаружил, что мы можем запустить координатора на 1 сервере , где присутствует сервер параметров, и мы можем запустить использование рабочих и параметров ps tf.distribute.Server() , что требует сокращения вызовов или обучающих вызовов от координатора. проверьте эту ссылку tensorflow.org/api_docs/python/tf/distribute/Server