zoukankan      html  css  js  c++  java
  • Tensorflow Serving

    TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用。更加让人眼前一亮的是,它支持模型热更新与自动模型版本管理。这意味着一旦部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练。

    export_path_base = sys.argv[-1]#导出的目录
    export_path = os.path.join(
          compat.as_bytes(export_path_base),
          compat.as_bytes(str(FLAGS.model_version)))#model_version明确了保存的模型的版本
    print 'Exporting trained model to', export_path
    builder = tf.saved_model.builder.SavedModelBuilder(export_path)#如果目录不存在的话,将会创建目录
    builder.add_meta_graph_and_variables(#此方法导入graph的信息以及变量
          sess, [tag_constants.SERVING],#标签名可以自定义,在之后载入模型的时候,需要根据这个标签名去查找对应的MetaGraphDef,找不到就会报RuntimeError。标签也可以选用系统定义好的参数,如tf.saved_model.tag_constants.SERVING与tf.saved_model.tag_constants.TRAINING。
          signature_def_map={
               'predict_images':
                   prediction_signature,
               signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
                   classification_signature,
          },
          legacy_init_op=legacy_init_op)
    builder.save()

    sess是Tensorflow session含有被导出的被训练的模型。

    tags是标签化的模型,使用预定义的SavedModel tag constants.

    signature_def_map user-supplied key: tensorflow::SignatureDef 明确了什么类型的模型被导出,什么类型的input/output tensors 被绑定,在inference的时候。

    使用signature_def_utils.build_signature_def()去建立predict_signature 和classification_signature.

    tf.saved_model.utils.build_tensor_info
    tf.saved_model.signature_def_utils.build_signature_def

    使用tf.saved_model.loader.load方法可以载入模型。

    关于SignatureDef我的理解是,它定义了一些协议,对我们所需的信息进行封装,我们根据这套协议来获取信息,从而实现创建与使用模型的解耦。

    下载完Tensorflow Serving,编译的命令:

    bazel build -c opt //tensorflow_serving/model_servers:tensorflow_model_server

    模型服务化,后边为保存模型的目录
    bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=9000 --model_name=mnist --model_base_path=/models/mnist_model/
     
  • 相关阅读:
    让VC6.0编译出来的程序支持XP样式或XP风格
    table+js实现网站左侧列表下拉隐藏
    图片或文件保存到数据库
    C#使用Cookie方法
    oracle实现今年数据 去年同期和增长百分比
    检索COM类工厂中CLSID为{000209FF-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005
    oracle&&Sqlserver获取表名列名主键及数据类型
    sql中将null转换为空
    sql 游标
    oracle 提示口令失效解决方法
  • 原文地址:https://www.cnblogs.com/qniguoym/p/7919406.html
Copyright © 2011-2022 走看看