机器学习PAI easy rec导出的模型执行tf.graph_util.convert_variables_to_constants、optimize_for_inference_lib.optimize_for_inference进行部署优化。大佬们,有研究过的吗?
import tensorflow as tf
model = tf.saved_model.load(
'/data_path/model_esmm_describecargo_v2/m1/1688940978/',
)
在进行模型部署优化时,确实可以使用tf.graph_util.convert_variables_to_constants
和optimize_for_inference_lib.optimize_for_inference
等 TensorFlow 提供的工具和函数。这些工具可以帮助你优化模型以提高推理速度、减少模型大小等。
下面是一个简单的示例代码,展示了如何使用这些工具来对模型进行部署优化:
import tensorflow as tf
from tensorflow.python.framework import graph_util
from tensorflow.python.tools import optimize_for_inference_lib
# 加载模型
model = tf.saved_model.load('/data_path/model_esmm_describecargo_v2/m1/1688940978/')
# 将变量转换为常量
def convert_variables_to_constants(sess, input_graph_def, output_node_names):
frozen_graph_def = graph_util.convert_variables_to_constants(
sess,
input_graph_def,
output_node_names.split(",")
)
return frozen_graph_def
# 进行推理优化
def optimize_for_inference(frozen_graph_def, input_node_names, output_node_names):
optimized_graph_def = optimize_for_inference_lib.optimize_for_inference(
frozen_graph_def,
input_node_names.split(","),
output_node_names.split(","),
tf.float32.as_datatype_enum
)
return optimized_graph_def
# 获取计算图的定义
graph_def = model.signatures['serving_default'].graph.as_graph_def()
# 将变量转换为常量
frozen_graph_def = convert_variables_to_constants(model, graph_def, "output_node_names")
# 进行推理优化
optimized_graph_def = optimize_for_inference(frozen_graph_def, "input_node_names", "output_node_names")
# 保存部署优化后的模型
with tf.io.gfile.GFile('/data_path/exported_model_optimized.pb', 'wb') as f:
f.write(optimized_graph_def.SerializeToString())
需要注意的是,您需要将代码中的input_node_names
和output_node_names
替换为您实际模型中的输入节点和输出节点的名称。
这段代码加载了模型,然后使用convert_variables_to_constants
函数将变量转换为常量,最后使用optimize_for_inference
函数对模型进行推理优化。优化后的模型可以通过SerializeToString()
方法序列化,并保存到文件中。
在tf2中,model = tf.saved_model.load(saved_model_path) 可以直接load saved model ;不需要frozen graph,此回答整理自钉群“【EasyRec】推荐算法交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。