Могу ли я использовать TensorFlow для распределения обучения на разнородных машинах?

У меня две машины: у машины 1 есть графические процессоры, а у машины 2 только ЦП. Я хочу знать, могут ли эти две машины использовать многопрофильное обучение в TensorFlow, то есть во время распределенного обучения machine1 использует графические процессоры, а machine2 использует CPU.

Версия Tensorflow - 2.1.0.


person maqy    schedule 18.03.2020    source источник


Ответы (2)


Вы можете использовать Multi-worker для обучения моделей с помощью TensorFlow на нескольких машинах. По умолчанию TensorFlow обучает модели на процессоре вашей системы, но если у вас есть графический процессор Nvidia, вы можете установить CUDA, что позволит вам обучать модели на графическом процессоре.

person Aaron Jones    schedule 18.03.2020
comment
Я хочу использовать две машины для распределенного обучения. У машины 1 есть графические процессоры и установлен CUDA / Cudnn, но у машины 2 есть только ЦП. На обеих машинах установлен Tensorflow2.1.0. Могу ли я использовать графические процессоры machine1 и CPU machine2 для распределенного обучения? - person maqy; 18.03.2020
comment
Лично я никогда не обучал модель на нескольких машинах, но, судя по тому, что я читал, должно быть возможно обучать модели на разных машинах, но при условии, что вы используете Multi-worker. Если у вас установлен CUDA на компьютере с графическим процессором, то, когда вы начнете обучение своей модели на этом компьютере, она должна автоматически перейти на ваш графический процессор. - person Aaron Jones; 18.03.2020
comment
Спасибо за ответ, я проведу несколько экспериментов для этой ситуации, и когда я получу какой-то результат, я обновлю этот вопрос. - person maqy; 18.03.2020

Ответ - нет. Когда я распространяю глубокое обучение, следовал этому руководству:

https://www.tensorflow.org/tutorials/distribute/multi_worker_with_keras

Произошли некоторые ошибки:

tensorflow.python.framework.errors_impl.InternalError: Коллективная операция CollectiveBcastSend: Broadcast (1) назначается устройству / заданию: worker / replica: 0 / task: 0 / device: GPU: 0 с типом GPU и group_key 1, но эта группа имеет тип CPU [Op: CollectiveBcastSend]

После того, как я установил machine1 для использования процессора по коду:

os.environ['CUDA_VISIBLE_DEVICES'] = '-1'

Обучение будет успешно выполняться с использованием ЦП обеих машин.

person maqy    schedule 20.03.2020