我有一个SavedModel
和saved_model.pbtxt
和variables\
,这个仓库由以下仓库https://github.com/sthalles/deeplab_v3进行了预训练。我正在尝试通过Tensorflow-Serving服务此SavedModel
,并且它只能在多GPU机器中利用GPU:0。我从https://github.com/tensorflow/serving/issues/311了解到,使用tensorflow-serving将图加载到tensorflow,并且在单个GPU上训练了该模型。我尝试使用clear_devices=True
标志保存模型,但没有帮助,仍然在GPU:0上运行。
然后我尝试从https://www.tensorflow.org/guide/extend/model_files#device读取GraphDef
中的saved_model.pbtxt
,我知道分配给一个节点/操作的设备是在NodeDef
中定义的。
我的问题是,在此saved_model.pbtxt
中,仅为NodeDef
中的某些操作/节点分配了CPU device: "/device:CPU:0"
,而没有专门分配GPU。在GPU上执行的所有这些操作的device
中都没有NodeDef
标签。
我想知道将GPU操作的设备放置信息保存在SavedModel
中,并且可以在图形中更改设备信息吗?感谢您的帮助。
例如,在此saved_model.pbtxt
中,CPU操作被定义为:
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 {
}
}
}
}
}