У меня есть SavedModel
с saved_model.pbtxt
и variables\
, который был предварительно обучен на одном графическом процессоре из этого репо: https://github.com/sthalles/deeplab_v3. Я пытаюсь обслуживать это SavedModel
с тензорным обслуживанием и он может использовать только GPU: 0 на машине с несколькими GPU. Из https://github.com/tensorflow/serving/issues/311 я узнал, что обслуживание с тензорным потоком загружает график с тензорным потоком, и эта модель обучалась на одном графическом процессоре. Я пытался сохранить модель с флагом clear_devices=True
, но без помощи, все еще работал на GPU: 0.
Затем я пытаюсь прочитать GraphDef
в saved_model.pbtxt
, из https://www.tensorflow.org/guide/extend/model_files#device Я знаю, что устройство, назначенное одному узлу / операции, определено в NodeDef
.
Моя проблема заключается в том, что в этом saved_model.pbtxt
для некоторых операций / узлов в NodeDef
был назначен только ЦП как device: "/device:CPU:0"
, в то время как графический процессор не был специально назначен. Все эти операции, выполняемые на GPU, не имеют тега device
в своих NodeDef
.
Интересно, где информация о размещении устройства для операций с графическим процессором была сохранена в SavedModel
и можно ли изменить информацию об устройстве в виде графика? Спасибо за вашу помощь.
Например, в этом saved_model.pbtxt
операция ЦП была определена как:
node {
name: "save/RestoreV2/tensor_names"
op: "Const"
device: "/device:CPU:0"
...
}
Операция вычисления была:
node {
name: "resnet_v2_50/block1/unit_1/bottleneck_v2/conv2/kernel/Regularizer/l2_regularizer"
op: "Mul"
input: "resnet_v2_50/block1/unit_1/bottleneck_v2/conv2/kernel/Regularizer/l2_regularizer/scale"
input: "resnet_v2_50/block1/unit_1/bottleneck_v2/conv2/kernel/Regularizer/l2_regularizer/L2Loss"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@resnet_v2_50/block1/unit_1/bottleneck_v2/conv2/weights"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
}