@SumNeuron Извините, я не знаю, как это исправить

руководстве TensorFlow по использованиюГрафические процессоры есть часть об использовании нескольких графических процессоров «в режиме мульти-башни»:

...
for d in ['/device:GPU:2', '/device:GPU:3']:
  with tf.device(d): # <---- manual device placement
...

Видя это, можно испытать соблазн использовать этот стиль для обучения нескольких GPU вEstimator чтобы указать модели, что она может быть эффективно распределена по нескольким графическим процессорам.

Насколько мне известно, если ручное размещение устройства отсутствует, TensorFlow не имеет какой-либо формы оптимального сопоставления устройств (возможно, если у вас установлена ​​версия с графическим процессором и доступен графический процессор, используя его поверх центрального процессора). Итак, какой у вас есть другой выбор?

В любом случае, вы продолжаете тренировку своего оценщика и экспортируете его вSavedModel черезestimator.export_savedmodel(...) и хочу использовать этоSavedModel позже ... возможно, на другой машине, на которой может не быть столько графических процессоров, сколько на устройстве, на котором обучалась модель (или, может быть, нет графических процессоров)

поэтому, когда вы бежите

from tensorflow.contrib import predictor
predict_fn = predictor.from_saved_model(model_dir)

ты получаешь

Cannot assign a device for operation <OP-NAME>. Operation was 
explicitly assigned to <DEVICE-NAME> but available devices are 
[<AVAILABLE-DEVICE-0>,...]

СтаршеТАК. Почта предполагает, что смена устройства размещения была невозможна ... но, надеюсь, со временем все изменилось.

Таким образом, мой вопрос:

при загрузкеSavedModel Могу ли я изменить расположение устройства в соответствии с устройством, на котором оно загружено. Например. если я обучу модель с 6 графическими процессорами, а друг хочет запустить ее дома со своим электронным графическим процессором, могут ли они установить'/device:GPU:1' через'/device:GPU:5' в'/device:GPU:0'?

если1 не возможно, есть ли (безболезненный) способ для меня, в обычаеEstimator«smodel_fn, чтобы указать, как обобщенно распространять граф?

например

with tf.device('available-gpu-3')

гдеavailable-gpu-3 является третьим доступным графическим процессором, если имеется три или более графических процессора, в противном случае второй или первый доступный графический процессор, а если графического процессора нет, то это процессор

Это важно, потому что, если есть общая машина, с которой тренируется две модели, скажем, одна модель'/device:GPU:0' тогда другая модель обучается явно на графических процессорах 1 и 2 ... так что на другом компьютере с 2 графическими процессорами графический процессор 2 не будет доступен ....

Ответы на вопрос(1)

Ваш ответ на вопрос