Как вы можете программировать в библиотеке keras (или тензорном потоке), чтобы разделить обучение на несколько графических процессоров? Допустим, вы находитесь в экземпляре Amazon ec2 с 8 графическими процессорами, и вы хотели бы использовать их все для ускорения обучения, но ваш код предназначен только для одного процессора или графического процессора.
python
deep-learning
tensorflow
keras
gpu
Гектор Бландин
источник
источник
Ответы:
Из часто задаваемых вопросов Keras:
https://keras.io/getting-started/faq/#how-can-i-run-a-keras-model-on-multiple-gpus
Ниже приведен скопированный код для включения «параллелизма данных». Т.е. каждый из ваших графических процессоров обрабатывает разные подмножества ваших данных независимо.
Обратите внимание, что это, по-видимому, действительно только для бэкэнда Tensorflow на момент написания.
Обновление (февраль 2018 г.) :
Теперь Keras принимает автоматический выбор gpu с помощью multi_gpu_model, поэтому вам больше не нужно жестко кодировать число gpus. Подробности в этом запросе на извлечение . Другими словами, это включает код, который выглядит следующим образом:
Но чтобы быть более явным , вы можете придерживаться чего-то вроде:
Бонус :
Чтобы проверить, действительно ли вы используете все свои графические процессоры, в частности NVIDIA, вы можете контролировать свое использование в терминале, используя:
Ссылки:
источник
multi_gpu_model(model, gpus=None)
в случае, когда есть только 1 GPU? Было бы здорово, если бы он автоматически адаптировался к числу доступных графических процессоров.TensorFlow с использованием графических процессоров
Вот пример кода о том, как используется, поэтому для каждой задачи указывается список с устройствами / устройствами:
TF будет использовать GPU по умолчанию для вычислений, даже если это для CPU (если присутствует поддерживаемый GPU). так что вы можете просто сделать цикл for: "for d в ['/ gpu: 1', '/ gpu: 2', '/ gpu: 3' ... '/ gpu: 8',]:" и в «tf.device (d)» должен включать все ресурсы вашего экземпляра GPU. Таким образом, tf.device () будет фактически использоваться.
Масштабирование обучения модели Keras до нескольких графических процессоров
Для Keras используется Mxnet, а не args.num_gpus , где num_gpus - список необходимых графических процессоров.
Вдобавок ко всему, Uber с открытым исходным кодом Horovod недавно, и я думаю, это здорово:
Хоровод
источник
В принципе, вы можете взять пример следующего примера. Все, что вам нужно, это указать значения потребления процессора и графического процессора после импорта кера.
После этого вам подойдет модель.
Наконец, вы можете уменьшить значения потребления, а не работу в верхних пределах.
источник