Tensorflow Serving部署推荐模型
1、找到当前模型中定义的variables,并在此定义一个saver用于保存模型参数
def saveVariables(self):
variables_dict = {
}
variables_dict[self.user_embedding.op.name] = self.user_embedding
variables_dict[self.item_embedding.op.name] = self.item_embedding
for v in self.reduce_dimension_layer.variables:
variables_dict[v.op.name] = v
self.saver = tf.train.Saver(variables_dict)
在模型的输入和输出的地方,尽量自行定义name,这样在之后的部署的时候会方便很多!
self.item_input = tf.placeholder("int32", [None, 1],name="gat_iteminput")
self.user_input = tf.placeholder("int32", [None, 1],name="gat_userinput")
...
self.prediction = tf.sigmoid(tf.reduce_sum(self.predict_vector, 1, keepdims=True),name="gat_predict")
2、在需要保存模型参数的地方调用save方法,一般建议在模型取到最高指标处保存模型
#此处的saver为上面模型中定义的saver
#sess即为session;weights_save_path为自定义的文件路径;global_step表示当前为第几次epoch
model.saver.save(sess, weights_save_path + '/weights', global_step=epoch)
3、最终会保存为如下图所示的文件

110、111、112、119、127是最近5次模型指标最高的5次记录,可以根据自己需要选择最高的记录,也可以在self.saver = tf.train.Saver(variables_dict)这里指定好保存的次数,例如保留最多两次:self.saver = tf.train.Saver(variables_dict,max_to_keep=2)
此处训练中,我得到的最高指标epoch为127,所以我使用127的weights

因为tensorflow serving需要saved_model的格式,所以我们需要将ckpt的格式转成savedModel格式,转换的代码如下:
import tensorflow as tf
#两个参数都是文件夹的名称,一个是ckpt文件所在文件夹,一个是之后导出的文件夹
def restore_and_save(input_checkpoint, export_path):
checkpoint_file = tf.train.latest_checkpoint(input_checkpoint)
graph = tf.Graph()
with graph.as_default():
session_conf = tf.ConfigProto(allow_soft_placement=True, log_device_placement=False)
sess = tf.Session(config=session_conf)
with sess.as_default():
# 载入保存好的meta graph,恢复图中变量,通过SavedModelBuilder保存可部署的模型
saver = tf.train.import_meta_gr

本文详细介绍了如何使用TensorFlow Serving部署推荐模型,包括模型保存、转换为saved_model格式、Dockerfile配置及docker镜像构建。重点讲解了模型参数的保存、模型转换以及docker容器的创建,以实现模型的线上服务。同时提供了模型接口的定义和测试方法。
最低0.47元/天 解锁文章
1468

被折叠的 条评论
为什么被折叠?



