7.1 搭建 TensorFlow 服务开发环境
7.1.1 Docker镜像
TensorFlow服务是用于构建允许用户在产品中使用我们提供的模型的服务器的工具。在开发过程中,使用该工具的方法有两种:手工安装所有的依赖项和工具,并从源码开始构建;或利用Docker镜像。这里准备使用后者,因为它更容易、更干净,同时允许在其他不同于Linux的环境中进行开发。
如果不了解Docker镜像,不妨将其想象为一个轻量级的虚拟机镜像,但它在运行时不需要以在其中运行完整的操作系统为代价。如果尚未安装Docker,请在开发机中安装它,具体的安装步骤可参考https://docs.docker.com/engine/installation/。
为了使用Docker镜像,还可利用笔者提供的文件https://github.com/tensorflow/serving/blob/master/tensorflow_serving/tools/docker/Dockerfile.devel,它是一个用于在本地创建镜像的配置文件。要使用该文件,可使用下列命令:
请注意,执行上述命令后,下载所有的依赖项可能需要一段较长的时间。
上述命令执行完毕后,为了使用该镜像运行容器,可输入下列命令:
该命令执行后会将你的home目录加载到容器的/mnt/home路径中,并允许在其中的一个终端下工作。这是非常有用的,因为你可使用自己偏好的IDE或编辑器直接编辑代码,同时在运行构建工具时仅使用该容器。它还会开放端口9999,使你可从自己的主机中访问它,并供以后将要构建的服务器使用。
键入exit命令可退出该容器终端,使其停止运行,也可利用上述命令在需要的时候启动它。
7.1.2 Bazel工作区
由于TensorFlow服务程序是用C++编写的,因此在构建时应使用Google的Bazel构建工具。我们将从最近创建的容器内部运行Bazel。
Bazel在代码级管理着第三方依赖项,而且只要它们也需要用Bazel构建,Bazel便会自动下载和构建它们。为了定义我们的项目将支持哪些第三方依赖项,必须在项目库的根目录下定义一个WORKSPACE文件。
我们需要的依赖项是TensorFlow服务库。在我们的例子中,TensorFlow模型库包含了Inception模型的代码。
不幸的是,在撰写本书时,TensorFlow服务尚不支持作为Git库通过Bazel直接引用,因此必须在项目中将它作为一个Git的子模块包含进去:
下面利用WORKSPACE文件中的local_repository规则将第三方依赖项定义为在本地存储的文件。此外,还需利用从项目中导入的tf_workspace规则对TensorFlow的依赖项初始化:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论