Какой способ перейти к распределенному обучению при тензорном потоке? - PullRequest
0 голосов
/ 23 сентября 2019

Я вижу множество различных методов на многих веб-сайтах и ​​руководствах Tensorflow, чтобы приступить к реализации примера распределенного обучения, но не могу очистить свой разум от них.Позвольте мне быть простым и ясным: у меня есть модель, созданная под keras, я настроил TF_CONFIG, чтобы иметь шефа, работника, ps и сервер оценщика, и я предполагаю, что приведенный ниже код должен выполнять эту работу:

runConfig = tf.estimator.RunConfig(
        session_config=config,
        model_dir=log_dir,
        save_summary_steps=1,
        save_checkpoints_steps=train_steps
        )
estimator = tf.keras.estimator.model_to_estimator(model, model_dir=log_dir, config=runConfig)
train_spec = tf.estimator.TrainSpec(input_fn=lambda: read_datasets(...), max_steps=epochs*train_steps)
eval_spec = tf.estimator.EvalSpec(input_fn=lambda: read_datasets(...), steps=None)
tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)

И тогда я вижу графики производительности и значения на Tensorboard.Я предполагаю, что код для всех серверов точно такой же, за исключением части TF_CONFIG, и для размещения в общей папке требуется только одна копия обучающих данных, а один общий каталог настроен для сохранения параметров модели и контрольных точек, а также главногособирается синхронизировать все при разделении данных между работниками и сохранении модели и сводок.

Здесь есть кое-что, что мне не совсем ясно: я хочу оценить обученную модель на тестовых данных, и яПредположим, что я могу просто выполнить приведенную ниже команду, чтобы получить оценку потерь и точности в объекте словаря:

eval_dic = estimator.evaluate(input_fn=lambda: read_datasets(...), steps=test_steps)

Но этот код выполняется всеми службами (работником, начальником и оценщиком), которые я используюне думаю, что должно быть.Кроме того, результат, который я получаю, просто нулевой.

Кроме того, я вижу страницы о стратегии распределения и ее влиянии на керас и оценщики, которые меня сильно смущают.Мне действительно нужны все эти стратегические вещи, или достаточно вышеприведенного кода?Что насчет input_fn?Я предполагал, что начальник заботится о разделении данных, но в документации по тензорному потоку (https://www.tensorflow.org/guide/distribute_strategy) говорится о различных вещах для реализации keras и оценщика, а мое приложение представляет собой модель keras, инкапсулированную в оценщик! Что мне делать?

...