当前位置: 首页 > news >正文

海外建站平台wordpress 聘用

海外建站平台,wordpress 聘用,12306网站服务时间,龙华网站建设网站设计公司介绍 将机器学习#xff08;ML#xff09;模型应用于生产环境已成为一个火热的的话题,许多框架提供了旨在解决此问题的不同解决方案。为解决这一问题#xff0c;谷歌发布了TensorFlow#xff08;TF#xff09;服务#xff0c;以期待解决将ML模型部署到生产中的问题。 本… 介绍 将机器学习ML模型应用于生产环境已成为一个火热的的话题,许多框架提供了旨在解决此问题的不同解决方案。为解决这一问题谷歌发布了TensorFlowTF服务以期待解决将ML模型部署到生产中的问题。 本文提供了一个关于服务于预先训练的卷积语义分割网络的实践教程。阅读本文后你将能够使用TF服务来部署和向TF训练的深度CNN发出请求等操作。另外本文将概述TF服务的API及其工作原理。如果你想学习本教程并在计算机上运行示例请完整了解本文。但是如果你只想了解TensorFlow服务你可以专注于前两部分。 TensorFlow服务库-概述 首先我们需要花一些时间来了解TF Serving如何处理ML模型的整个生命周期。在这里我们将介绍TF服务的主要构建块本部分的目标是提供TF服务API的介绍。如需深入了解请访问TF服务文档页面。 TensorFlow服务由一些抽象组成这些抽象类用于不同任务的API其中最重要的是ServableLoaderSource和Manager让我们来看看他们之间是如何互动的 简单来说当TF Serving识别磁盘上的模型时Source组件就开始工作啦整个服务生命周期也算开始了Source组件负责识别应加载的新模型。实际上它会密切关注文件系统以确定新模型版本何时到达磁盘。当它看到新版本模型时它会为该特定版本的模型创建一个Loader。 总之Loader几乎了解模型的所有内容包括如何加载以及如何估计模型所需的资源例如请求的RAM和GPU内存。Loader还有一个指向磁盘上模型的指针以及用于加载它的所有必要的元数据。但是有一个问题加载器不允许加载模型。创建Loader后Source会将其作为Aspired Version发送给Manager。 收到模型的Aspired Version后Manager继续执行服务过程。这里有两种可能性一个是推送第一个模型版本进行部署在这种情况下Manager将确保所需的资源可用完成后Manager会授予Loader加载模型的权限第二是我们推出现有模型的新版本在这种情况下管理员必须先咨询版本策略插件然后再继续操作版本策略确定如何进行加载新模型版本的过程。 具体来说在第一种情况下我们可以确保我们的系统始终可用于传入客户的请求。此时我们同时加载了两个模型版本只有在加载完成后Manager才会卸载旧版本并且可以安全地在模型之间切换。另一方面如果我们想通过不使用额外缓冲区来节省资源我们可以选择保留数据。最后当客户端请求模型的handle时管理器返回Servable的handle。 在接下来的部分中我们将介绍如何使用TF服务提供卷积神经网络CNN。 导出服务模型 为TensorFlow构建的ML模型提供服务的第一步是确保它的格式正确为此TensorFlow提供了SavedModel类。 SavedModel是TensorFlow模型的通用序列化格式如果你熟悉TF则可以使用TensorFlow Saver来保留模型的变量。 TensorFlow Saver提供了将模型的检查点文件保存到磁盘或从磁盘恢复的功能。实际上SavedModel包装了TensorFlow Saver它是导出TF模型进行服务的标准方式。 SavedModel object有一些很好的功能。首先它允许你将多个元图保存到单个SavedModel对象换句话说它允许我们为不同的任务提供不同的图表。例如假设你刚刚完成了模型的训练。在大多数情况下要执行推理你的图表不需要某些特定于训练的操作。这些操作可能包括优化器的变量学习速率调度张量额外的预处理操作等。此外你可能希望为移动部署提供量化版本的图形。 在此环境中SavedModel允许你使用不同的配置保存图形。在我们的例子中我们有三个不同的图形和相应的标签如“训练”、“推理”和“移动”。此外这三个图形为了提升内存效率还共享相同的变量集。 就在不久前如果我们想在移动设备上部署TF模型时我们需要知道输入和输出张量的名称以便向模型提供数据或从模型获取数据。这需要强制程序员在图的所有张量中搜索他们所需的张量。如果张量没有正确命名那么任务可能非常繁琐。 为了简化操作SavedModel提供对SignatureDefs的支持SignatureDefs定义了TensorFlow支持的计算的签名。它确定了计算图的正确输入和输出张量也就是说使用这些签名你可以指定用于输入和输出的确切节点。要使用其内置的服务APITF Serving要求模型包含一个或多个SignatureDefs。 要创建此类签名我们需要提供输入输出和所需方法名称的定义输入和输出表示从字符串到TensorInfo对象的映射。在这里我们定义了默认张量用于向图表输入数据和从图表接收数据。 目前有三种服务API分类预测和回归。每个签名定义都与特定的RPC API相匹配Classification SegnatureDef用于Classify RPC APIPredict SegnatureDef用于Predict RPC API等等依此类推。 对于分类签名必须有输入张量接收数据和两个可能的输出张量中的至少一个类或分数。Regression SignatureDef只需要一个张量用于输入另一个用于输出。最后Predict signature允许动态数量的输入和输出张量。此外SavedModel支持数据存储以用于ops初始化依赖于外部文件的情况它还具有在创建SavedModel之前清除设备的机制。 现在让我们看看我们如何在实践中做到这一点。 设置环境 在开始之前我们需要从Github克隆此TensorFlow DeepLab-v3。DeepLab是谷歌最好的语义分割ConvNet网络可以将图像作为输入并输出类似掩模的图像该图像将某些对象与背景分开。 该版本的DeepLab在Pascal VOC分段数据集上进行了训练因此它可以分割和识别多达20个类。如果你想了解有关语义分段和DeepLab-v3的更多信息请查看深入深度卷积语义分段网络和Deeplab_V3。 与服务相关的所有文件都存在于./deeplab_v3/serving/。在那里你会发现两个重要的文件deeplab_saved_model.py和deeplab_client.ipynb。 在进一步研究之前请务必下载Deeplab-v3预训练模型。前往上面的GitHub存储库单击checkpoints链接你应该有一个名为tboard_logs /的文件夹其中包含16645 /文件夹。 现在我们需要创建两个Python虚拟环境一个用于Python 3另一个用于Python 2请确保安装必要的依赖项。你可以在serving_requirements.txt和client_requirements.txt文件中找到它们。 你可能很好奇为什么需要两个Python env因为我们的模型DeepLab-v3是在Python 3下开发的而TensorFlow Serving Python API仅针对Python 2发布。因此要导出模型并运行TF服务我们使用Python 3 env 。 请注意你可以使用bazel中的Serving API放弃Python 2 env。有关更多详细信息请参阅TF服务实例。完成这一步后让我们从真正重要的事情开始吧。 实例教程 TensorFlow提供了一个易于使用的高级实用程序类使用SavedModel类名为SavedModelBuilder。SavedModelBuilder类提供了保存多个元图关联变量和数据的功能。让我们来看一个如何导出Deep Segmentation CNN模型进行服务的运行示例。 如上所述要导出模型我们使用啦SavedModelBuilder类。它将生成SavedModel协议缓冲区文件以及模型的变量和资源。 让我们剖析一下代码 # Create SavedModelBuilder class # defines where the model will be exported export_path_base FLAGS.export_model_dir export_path os.path.join(tf.compat.as_bytes(export_path_base),tf.compat.as_bytes(str(FLAGS.model_version))) print(Exporting trained model to, export_path) builder tf.saved_model.builder.SavedModelBuilder(export_path) SavedModelBuilder接收作为输入保存模型数据的目录。这里export_path变量是为了连接export_path_base和model_version。因此不同的模型版本将保存在export_path_base文件夹内的单独目录中。 假设我们在生产中有我们模型的基础版本但我们想要部署它的新版本。因为我们已经提高了模型的准确性并希望为我们的客户提供这个新版本。要导出同一模型的不同版本我们只需将FLAGS.model_version设置为更高的整数值即可。然后将在export_path_base文件夹中创建一个不同的文件夹保存我们模型的新版本。 现在我们需要指定模型的输入和输出Tensors。为此我们使用SignatureDefs签名定义了我们要导出的模型类型。它提供了从字符串逻辑Tensor名称到TensorInfo对象的映射。我们的想法是客户端可以引用签名定义的逻辑名称而不是引用输入/输出的实际张量名称。 为了服务语义分段CNN我们将创建一个预测签名。请注意build_signature_def函数采用输入和输出张量的映射以及所需的API。 SignatureDef需要指定输入输出和方法名称我们期望输入有三个值一图像另外两个张量指定其尺寸高度和宽度。对于输出我们只定义了一个结果-分段输出掩码。 # Creates the TensorInfo protobuf objects that encapsulates the input/output tensors tensor_info_input tf.saved_model.utils.build_tensor_info(input_tensor) tensor_info_height tf.saved_model.utils.build_tensor_info(image_height_tensor) tensor_info_width tf.saved_model.utils.build_tensor_info(image_width_tensor)# output tensor info tensor_info_output tf.saved_model.utils.build_tensor_info(predictions_tf)# Defines the DeepLab signatures, uses the TF Predict API # It receives an image and its dimensions and output the segmentation mask prediction_signature (tf.saved_model.signature_def_utils.build_signature_def(inputs{images: tensor_info_input, height: tensor_info_height, width: tensor_info_width},outputs{segmentation_map: tensor_info_output},method_nametf.saved_model.signature_constants.PREDICT_METHOD_NAME)) 请注意字符串‘image‘height‘width和‘segmentation_map不是张量。相反它们是引用实际张量input_tensorimage_height_tensor和image_width_tensor的逻辑名称。因此它们可以是你喜欢的任何唯一字符串。此外SignatureDefs中的映射与TensorInfo protobuf对象有关而与实际张量无关。要创建TensorInfo对象我们使用实用程序函数tf.saved_model.utils.build_tensor_infotensor。 现在我们调用add_meta_graph_and_variables函数来构建SavedModel协议缓冲区对象然后我们运行save方法它会将模型的快照保存到包含模型变量和资源的磁盘。 builder.add_meta_graph_and_variables(sess, [tf.saved_model.tag_constants.SERVING],signature_def_map{predict_images:prediction_signature,})# export the model builder.save(as_textTrue) print(Done exporting!) 现在我们可以运行deeplab_saved_model.py来导出我们的模型。 如果一切顺利你将看到文件夹./serving/versions/1请注意“1”表示模型的当前版本。在每个版本子目录中你将看到以下文件 ·saved_model.pb或saved_model.pbtxt这是序列化的SavedModel文件。它包括模型的一个或多个图形定义以及签名定义。 ·变量该文件夹包含图形的序列化变量。 现在我们已准备好启动我们的模型服务器。为此请运行 $ tensorflow_model_server --port9000 --model_namedeeplab --model_base_pathfull/path/to/serving/versions/ 该model_base_path指的是输出模型保存另外我们不在路径中指定版本文件夹模型版本控制由TF服务处理。 生成客户端请求 客户端代码非常简单看一下deeplab_client.ipynb。首先我们读取要发送到服务器的图像并将其转换为正确的格式。接下来我们创建一个gRPC存根存根允许我们调用远程服务器的方法。为此我们将实例化prediction_service_pb2模块的beta_create_PredictionService_stub类。此时存根保持调用远程过程的必要逻辑就像它们是本地的一样。 现在我们需要创建和设置请求对象。由于我们的服务器实现了TensorFlow Predict API因此我们需要解析Predict请求。要发出Predict请求首先我们从predict_pb2模块中实例化PredictRequest类。我们还需要指定model_spec.name和model_spec.signature_name参数。该名称参数是当我们推出的服务器定义的“模型名称”的说法而signature_name是指分配给逻辑名称signature_def_map的参数add_meta_graph函数。 # create the RPC stub channel implementations.insecure_channel(host, int(port)) stub prediction_service_pb2.beta_create_PredictionService_stub(channel)# create the request object and set the name and signature_name params request predict_pb2.PredictRequest() request.model_spec.name deeplab request.model_spec.signature_name predict_images# fill in the request object with the necessary data request.inputs[images].CopyFrom(tf.contrib.util.make_tensor_proto(image.astype(dtypenp.float32), shape[1, height, width, 3]))request.inputs[height].CopyFrom(tf.contrib.util.make_tensor_proto(height, shape[1])) request.inputs[width].CopyFrom(tf.contrib.util.make_tensor_proto(width, shape[1]))接下来我们必须提供服务器签名中定义的输入数据。请记住在服务器中我们定义了一个Predict API来预期图像以及两个标量图像的高度和宽度。为了将输入数据提供给请求对象TensorFlow提供了实用程序tf.make_tensor_proto此方法是从Pythonnumpy创建的TensorProto对象我们可以使用它将图像及其尺寸提供给请求对象。 看起来我们已经准备好调用服务器了。为此我们调用Predict方法使用存根并将请求对象作为参数传递。gRPC支持同步和异步调用。因此如果你在处理请求时想要做一些工作我们可以调用Predict.future而不是Predict。 # sync requests result_future stub.Predict(request, 30.)# For async requests # result_future stub.Predict.future(request, 10.) # Do some work... # result_future result_future.result() 现在我们可以获取并享受结果。 原文链接 本文为云栖社区原创内容未经允许不得转载。
http://www.pierceye.com/news/496931/

相关文章:

  • 电商网站产品模块食品包装设计说明范文
  • WordPress的站内地图看网站的浏览器
  • 国外服装购物网站大全网站域名地址查询
  • 莆田专业网站建设公司价格九一制作厂网站app
  • 外贸网站怎么做会吸引眼球wordpress 律师事务所模板
  • 如何用代码制作网站最便宜网站建设
  • 苏州优化网站公司做编程网站有哪些内容
  • 山东省住房和城乡建设网站创建一个网站多少钱
  • 在北京做网站制作一个月多少钱个人电脑可以做网站服务器
  • 正规网站建设找哪家好做经营网站怎么赚钱吗
  • 网站备案需要的资料做网站怎么开发客户
  • 怎么做网站作业贵阳网站推广优化公司
  • 峨眉山有做网站的电话开发类似wordpress
  • 俄语网站建设wordpress 系统安装教程
  • 定制建站网站建设上海门户网站的亮点
  • 访问网站的原理大学生网站开发工作室总结
  • 某学校网站建设方案论文沛县网站制作
  • 网站的在线支付怎么做用别人的二级域名做网站
  • 做宣传册从哪个网站找素材吉林省吉林市是几线城市
  • 互助盘网站怎么做的北京做兼职网站有哪些
  • jsp 网站开发教程多语言外贸网站建设
  • 免费销售网站模板下载安装济南网站制作推广
  • 青岛专业网站制作设计vs2008网站开发
  • 电子商务网站功能介绍0基础做网站用什么语言
  • 企业展示网站建设wordpress 优酷免广告
  • 濮阳做网站引导企业做网站
  • 卧龙区网站建设找做牙工作上哪个网站
  • 做网站的会计分录广州公司注册需要什么条件
  • 小米4路由器可以做网站嘛服务类网站建设服务公司
  • 电子商务网站建设规划书实例注册微信公众平台