首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TensorFlow 分布式环境(1) --- 总体架构

一个 TensorFlow 集群包含一个或者多个 TensorFlow 服务端,一个集群一般会专注于一个相对高层的目标,比如用多台机器并行地训练一个神经网络。...Task:一个 Task 会完成一个具体任务,一般会关联到某个 TensorFlow 服务端的处理过程。...session_handle 表示,此 session_handle 会传递给 Client。...调用 builder.BuildAndStart 启动GRPC 通信服务器 grpc::Server,当启动之后,GrpcServer 依然是 New 状态,没有提供对外服务,需要状态机转换到 Started...."); default: LOG(FATAL); } } 2.6 等待终止服务 启动之后,需要让这几个线程做 Join 操作,因此主线程会挂起直至这两个线程终止,这样可以持久地对外提供

55610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《Scikit-Learn、Keras与TensorFlow机器学习实用指南(第二版)》第19章 规模化训练和部署TensorFlow模型

    TensorFlow模型服务化 训练好TensorFlow模型之后,就可以在Python代码中使用了:如果是tf.keras模型,调用predict()模型就成。...可以使用任何技术做微服务(例如,使用Flask),但有了TF Serving,为什么还要重复造轮子呢?...如果找到新版本,会自动过渡:默认的,会用上一个模型回复挂起的请求,用新版本模型处理新请求。挂起请求都答复后,前一模型版本就不加载了。...要这么做,在引入TensorFlow后,可以调用tf.config.set_soft_device_placement(True):安置请求失败时,TensorFlow会返回默认的安置规则(即,如果有GPU...为什么使用gRPC API而不是REST API,查询TF Serving模型? 在移动和嵌入设备上运行,TFLite减小模型的大小有什么方法? 什么是伪量化训练,有什么用?

    6.7K20

    gRPC 简介并实战——文末附源码

    介绍 gRPC 是一个高性能的开源 RPC 框架,最初由 Google 开发。 RPC 是什么?在客户端应用里可以像调用本地方法对象一样直接调用另一台不同机器上的服务端应用的方法。...创建客户端应用程序,使用生成的 stub 进行 RPC 调用服务端方法。 整个流程如图所示,并描述了不同语言的系统远程调用的方式: ?...有多种方法可以触发此功能。...相反,它将第二个参数称为 StreamObserver,它是 响应观察者,是服务器调用其响应的回调。正如最开始提到的那样,客户端将获得进行阻塞调用或非阻塞调用(流式)的选项。...最后,我们需要调用 "onCompleted()" 来指定我们已完成对这次 RPC 的处理,否则连接将挂起,客户端将等待更多信息进来。

    1.6K20

    为什么我们更喜欢 gRPC 进行微服务开发?

    为什么我们更喜欢 gRPC 进行微服务开发?有许多关于介绍 gRPC 主题的博客文章,我们可以轻松地搜索和探索它。今天,我不会详细介绍,而只是谈谈它带来的突出优势,这也是我们想要使用它的动力。...在为微服务模型选择了合适的框架之后,我们继续讨论今天博客文章的重要部分,即如何解决优雅关闭服务的问题。为什么正常关闭服务很重要?...防止数据损坏突然终止服务可能会导致事务不完整,从而可能导致数据损坏。正常关机可确保正在进行的进程正确完成,从而保持数据的完整性。避免资源泄漏如果在突然关闭期间未能释放获取的资源,可能会导致资源泄漏。...这可能会占用本应用于其他任务(如管理服务连接、数据库连接等)的资源,从而影响系统的整体性能。保持通信完整性微服务通常依赖于无缝通信。突然关闭可能会使连接挂起,从而中断服务之间的信息流。...注册函数:处理用户注册 gRPC 请求。在 gRPC 和核心服务格式之间进行转换。构建运行器最后,此主函数启动 gRPC 服务器,并使用 AddShutdownHook 函数进行正常关闭。// .

    2.6K21

    tensorflow学习笔记(十九):分布式Tensorflow

    最近在学习怎么分布式Tensorflow训练深度学习模型,看官网教程看的云里雾里,最终结合着其它资料,终于对分布式Tensorflow有了些初步了解. gRPC (google remote procedure...call) 分布式Tensorflow底层的通信是gRPC gRPC首先是一个RPC,即远程过程调用,通俗的解释是:假设你在本机上执行一段代码num=add(a,b),它调用了一个过程 call,...然后返回了一个值num,你感觉这段代码只是在本机上执行的, 但实际情况是,本机上的add方法是将参数打包发送给服务器,然后服务器运行服务器端的add方法,返回的结果再将数据打包返回给客户端....为什么Job是Task的集合呢?...,服务器就会关闭.为了是我们的ps_server能够一直处于监听状态,我们需要使用server.join().这时,进程就会block在这里.至于为什么ps_server刚创建就join呢:原因是因为下面的代码会将参数指定给

    46330

    CNN+BLSTM+CTC的验证码识别从训练到部署

    最新更新(2019/01/21):如果对于DLL调用感兴趣或是其他语言的TensorFlow API感兴趣的移步以下两个项目: https://github.com/kerlomz/captcha_library_c...3)如果需要更新一个已经服务中的模型,只需修改新版的模型yaml配置文件的版本号高于原模型的版本号,按先放pb后放yaml的顺序,服务便会自动发现新版的模型并加载使用,旧的模型将因版本低于新版模型不会被调用...、Sanic的性能在Windows平台都大打折扣,gRPC是Google开源的RPC服务,有较为优越的性能。...3.4 调用/测试 1..../captcha/v1 | application/json | JSON | POST |请求参数和返回格式同上 4. gRPC服务:需要安装依赖,grpcio、grpcio_tools和对应的grpc.proto

    99110

    TensorFlow实战:验证码识别

    最新更新(2019/01/21): 如果对于DLL调用感兴趣或是其他语言的TensorFlow API感兴趣的移步以下两个项目: 1. https://github.com/kerlomz/captchalibraryc...3)如果需要更新一个已经服务中的模型,只需修改新版的模型yaml配置文件的版本号高于原模型的版本号,按先放pb后放yaml的顺序,服务便会自动发现新版的模型并加载使用,旧的模型将因版本低于新版模型不会被调用...平台下都是通过python3 xxx_server.py启动对应的服务,注意,Tornado、Flask、Sanic的性能在Windows平台都大打折扣,gRPC是Google开源的RPC服务,有较为优越的性能...3.4 调用/测试 1....4. gRPC服务: 需要安装依赖,grpcio、grpcio_tools和对应的grpc.proto文件,可以直接从项目中的示例代码demo.py中提取。

    3.6K21

    面向机器智能的TensorFlow实践:产品环境中模型的部署

    搭建TensorFlow服务开发环境 Docker镜像 TensorFlow服务是用于构建允许用户在产品中使用我们提供的模型的服务器的工具。...TensorFlow服务使用gRPC协议(gRPC是一种基于HTTP/2的二进制协议)。它支持用于创建服务器和自动生成客户端存根的各种语言。...实现推断服务器 为实现ClassificationService::Service,需要加载导出模型并对其调用推断方法。...客户端应用 由于gRPC是基于HTTP/2的,将来可能会直接从浏览器调用基于gRPC的服务,但除非主流的浏览器支持所需的HTTP/2特性,且谷歌发布浏览器端的JavaScript gRPC客户端程序,从...--python_out=. -- grpc_python_out=. classification_service.proto 它将生成包含了用于调用服务的stub的classification_service_pb2

    2.2K60

    grpc官方文档实验与翻译(python

    tensorflow分布式与tensorflow serving底层通信都是是用的grpc,所以就看了一下grpc的基本用法(python版) 首先是环境的安装,先要更新pip到version8或者以上...greeter_client.py,为了更好的观察,我在运行server.时加了&让它后台运行 $ python greeter_server.py & $ python greeter_client.py 这时候窗口会输出...然后使用jobs查看一下服务端的进程ID,再使用kill ID直接带走服务端进程,准备写一个自己定义的服务了 首先需要修改proro文件来定义服务,主要是添加了SayHelloAgain syntax...% request.name) 现在再更改一下客户端的调用接口,添加调用和输出的代码 response = stub.SayHelloAgain(helloworld_pb2.HelloRequest...(name='you')) print("Greeter client received: " + response.message) 完成后再运行服务端和客户端,来个截图收工,有空再试着使用tensorflow

    1K20

    怎样用英伟达TensorRT优化TensorFlow Serving的性能?谷歌工程师一文详解

    量子位经授权转载,如下~ TensorFlow Serving 是用于机器学习模型的高性能灵活服务系统,而 NVIDIA TensorRT 是实现高性能深度学习推理的平台,通过将二者相结合,用户便可获得更高性能...TensorFlow Serving 1.13 现已实现这种集成,TensorFlow 2.0 很快也会进行集成。 ?...在这里,我们运行 GPU Docker 图像(请查看 此处 了解相关说明),以借助 GPU 提供并测试此模型: $ docker pull tensorflow/serving:latest-gpu $...此 docker run 命令会启动 TensorFlow Serving 服务器,以提供 /tmp/resnet 中已下载的 SavedModel,并在主机中开放 REST API 端口 8501。...resnet_client.py 会发送一些图像给服务器,并返回服务器所作的预测。现在让我们终止 TensorFlow Serving 容器的运行,以释放所占用的 GPU 资源。

    3.4K40

    TensorFlow 分布式之 MirroredStrategy 分发计算

    ,fn 在每个副本中会被调用一次以生成 Tensorflow 图,然后被重新用于新输入的执行。...Eager Service Eager 服务定义了一个 TensorFlow 服务,其代表一个远程 Eager 执行器(Eager executor),会在一组本地设备上(eagerly)执行操作。...注意:即使客户端生成的上下文应该是独立的,但低级别的tensorflow执行引擎不是,所以它们可能会共享一些数据(例如,设备的ResourceMgr)。...在远端,Eager 服务定义了一个 TensorFlow 服务,它会在远端建立远端上下文,会把 Context 分发的计算在本地设备上执行操作。 如何分发计算?如何在远端运行训练代码?...如果希望运行计算图,本地会进入 EagerClusterFunctionLibraryRuntime 的 Run 方法,然后 RunComponentFunctionAsync 会调用 RPC(发送 RunComponentFunctionRequest

    58420

    Go进阶训练营 – 微服务概览与治理三:gRPC & 服务发现

    应用启动完毕后,设置gRPC服务状态设置为健康。 外挂的辅助脚本检测到应用健康,进行注册到注册中心。 为什么不是应用自己去注册? 剥离注册功能,下沉到辅助脚本里。...为什么不直接使用k8s的探针来检测应用健康? 因为k8s 1.23以前不支持检测gRPC服务,只能发送http请求,或者是检测TCP端口的连通性。...而使用gRPC的服务发现这个场景下,一致性是可以弱一点的,带来的影响是:1、消费者没能拿到新注册的提供者地址,那就等一会呗。...2、消费者拿到已注销的提供者地址,由于做了gRPC健康检查,并不会去调用该服务,会选择存活的服务。...长轮询:客户端发送请求拉取数据,如果此时服务端没有产生的数据,就不暂时不响应,等有数据或者达到超时时间(例如30秒),再响应。也就是这个请求会挂起。有效减少轮询场景下的请求数量。

    1.8K10

    实战:CNN+BLSTM+CTC的验证码识别从训练到部署 | 技术头条

    如果对于DLL调用感兴趣或是其他语言的TensorFlow API感兴趣的移步以下两个项目: https://github.com/kerlomz/captcha_library_c https://github.com...下载好安装包 注意下载runfile类型的安装包,deb安装会自动安装默认驱动,极有可能导致登陆循环。...、Sanic的性能在Windows平台都大打折扣,gRPC是Google开源的RPC服务,有较为优越的性能。...3.4 调用/测试 1. Flask服务: ? 具体参数: ? 请求为JSON格式,形如:{"image": "base64编码后的图像二进制流"} 返回结果: ?...请求参数和返回格式同上 4. gRPC服务: 需要安装依赖,grpcio、grpcio_tools和对应的grpc.proto文件,可以直接从项目中的示例代码demo.py中提取。

    1.1K50

    tensorflow踩坑合集2. TF Serving & gRPC 踩坑

    这一章我们借着之前的NER的模型聊聊tensorflow serving,以及gRPC调用要注意的点。...这主要是因为tensorflow模型启动存在懒加载的逻辑,部分组件只在请求后才被触发运行,所以我们会观察到第一次(前几次)请求的latency会显著的高。.../serving:1.14.0 gRPC client Demo 这里我们以上面tf.Example的serving请求格式,看下如何用gRPC请求服务。...官方文档:grpc/fork_support gRPC并不是fork safe的,如果在fork之前创建channel,可能会碰到deadlock或者报错,取决于你用的gRPC版本。。。...grpc客户端默认是长链接,避免了链接建立和销毁的开销,但需要keep-alive机制来保证客户端到服务端的链接持续有效。

    2.7K30

    深度学习Tensorflow生产环境部署(下·模型部署篇)

    前一篇讲过环境的部署篇,这一次就讲讲从代码角度如何导出pb模型,如何进行服务调用。...cpu版本的可以直接拉取tensorflow/serving,docker会自动拉取latest版本: docker pull tensorflow/serving 如果想要指定tensorflow的版本...这一部分就直接基于手写体识别的例子,展示一下如何从tensorflow训练代码导出模型,又如何通过grpc服务进行模型的调用。 训练和导出: #!...""" # predict_images就是服务调用的方法 # serving_default是没有输入签名时,使用的方法 builder.add_meta_graph_and_variables...然后基于grpc部署服务: docker run -p 8500:8500 --mount type=bind,source=/Users/xingoo/PycharmProjects/ml-in-action

    1.8K21

    Python验证码识别 | 源码+通用模型

    3.3 部署 真的很有必要认真的介绍一下部署项目,比起训练,这个部署项目倾注了笔者更多的心血,为什么呢?...(具体调用方法可点击上面链接有对应的文档介绍) 编译版:https://github.com/kerlomz/captcha_platform/releases,使用编译版无需安装Python和TensorFlow...(用SDK调用时,两者置于同一目录下) 2) 如果需要卸载一个正在服务的模型,只需要在model中删除该模型的yaml配置文件,在graph中删除对应的pb模型即可。...3) 如果需要更新一个已经服务中的模型,只需修改新版的模型yaml配置文件的版本号高于原模型的版本号,按先放pb后放yaml的顺序,服务便会自动发现新版的模型并加载使用,旧的模型将因版本低于新版模型不会被调用...的性能在Windows平台都大打折扣,gRPC是Google开源的RPC服务,有较为优越的性能。

    6.1K2118
    领券