Ошибка tf.python.keras.utils.multi_gpu_model при инициализации - PullRequest
0 голосов
/ 30 января 2019

Я использую Python 3 с тензорным потоком и конфигурацией с несколькими GPU, я пытаюсь использовать следующий пример , чтобы запустить модель с несколькими GPU, я создаю модель, Все хорошо, компилируем, выполняем и обучаем, ноКогда я пытаюсь добавить это до компиляции модели:

from tensorflow.python.keras.utils import multi_gpu_model
model = multi_gpu_model(model, gpus=2, cpu_merge=False)

я получаю эту ошибку

TypeError: аргумент int () должен быть строкой или числом, а не 'TensorShape'

Примечание. Я использую tf с нетерпением eval

Я нашел this , ссылаясь на использование keras.utils.multi_gpu_model вместо tf.python.keras.utils.multi_gpu_model Но когда я делаю это, я получаю эту ошибку вместо:

Что мне здесь не хватает?

строка 217, в multi_gpu_model с tf.device (x.device): AttributeError: у объекта 'DeferredTensor' нет атрибута 'device'

код для модели

model = Sequential()
model.add(Flatten(input_shape=(128, 128, 3)))
model.add(Dense(100, activation="sigmoid"))
model.add(Dense(100, activation="sigmoid"))

обновление: это может быть проблема с идентификатором GPU?когда я пытаюсь создать multi_gpu_model без указания числа gpus со следующим кодом:

model = multi_gpu_model(model)

я получаю следующую ошибку:

ValueError: Для вызова multi_gpu_model с помощью gpus=3, мы ожидаем, что будут доступны следующие устройства: ['/ cpu: 0', '/ gpu: 0', '/ gpu: 1', '/ gpu: 2'].Однако эта машина имеет только: ['/ cpu: 0', '/ xla_cpu: 0', '/ xla_gpu: 0', '/ gpu: 0', '/ gpu: 1'].Попробуйте уменьшить gpus

У меня только 2 gpus, они подключены к портам pci # 1 и 2 (я не могу это изменить, у меня недостаточно места на плате для подключенияих на порт 0), имеет ли смысл то, что при указании 2 графических процессоров tf попытается получить графический процессор 0 и графический процессор 1?Могу ли я указать иначе?

Спасибо

1 Ответ

0 голосов
/ 01 июля 2019

Я столкнулся с той же ошибкой, я решил ее, изменив os.environ[CUDA_VISIBLE_DEVICES]='1, 3' на os.environ[CUDA_VISIBLE_DEVICES]="1, 3" Если вы уже сделали это, вы можете проверить с помощью этого чрезвычайно простого кода: НЕ забывайте менять устройство GPU на ваше.

from keras.utils import multi_gpu_model
from keras import Input, Model
from keras.layers import Conv2D
import os
#if you have gpu 1,3 avaliable
os.environ["CUDA_VISIBLE_DEVICES"]="1,3"
x = Input((64,64,3))
out = Conv2D(64,(3,3),padding='same')(x)
model = Model(x,out)
#model = deeplabv3_nopadding.Deeplabv3()
model = multi_gpu_model(model,gpus=2)

, который будет выводить:

Используя бэкэнд TensorFlow.2019-07-01 09: 40: 25.971722: I tenorflow / core / platform / cpu_feature_guard.cc: 141] Ваш ЦП поддерживает инструкции, которые этот двоичный файл TensorFlow не был скомпилирован для использования: SSE4.1 SSE4.2 AVX AVX2 FMA 2019-07-01 09: 40: 26.277398: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1432] Найдено устройство 0 со свойствами: name: TITAN Xp major: 6 вспомогательных: 1 memoryClockRate (GHz): 1.582 pciBusID: 0000: 03: 00.0 totalMemory: 11.90GiB freeMemory: 11.74GiB 2019-07-01 09: 40: 26.586391: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1432] Найдено устройство 1 со свойствами: имя: TITAN Xp Major: 6 минорных: 1 memoryClockRate (GHz): 1.582 pciBusID: 0000: 83: 00.0 totalMemory: 11.90GiB freeMemory: 11.74GiB 2019-07-01 09: 40: 26.586477: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1511] Добавлениевидимые устройства GPU: 0, 1 2019-07-01 09: 40: 27.377910: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 982] Соединение устройств StreamExecutor с прочностью 1 край матрицы: 2019-07-01 09:40: 27.377970: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 988] 0 1 2019-07-01 09: 40: 27.377977: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1001] 0: NN 2019-07-01 09:40:27.377981: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1001] 1: NN 2019-07-01 09: 40: 27.378592: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1115] создано устройство TensorFlow (/ job: localhost / replica: 0 / task: 0 / device: GPU: 0 с 11355 МБ памяти) -> физический GPU (устройство: 0, имя: TITAN Xp, идентификатор шины pci: 0000: 03: 00.0, возможность вычисления:6.1) 2019-07-01 09: 40: 27.382844: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1115] Создано устройство TensorFlow (/ job: localhost / replica: 0 / task: 0 / device: GPU: 1с памятью 11355 МБ) -> физический графический процессор (устройство: 1, имя: TITAN Xp, идентификатор шины pci: 0000: 83: 00.0, вычислительные возможности: 6.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...