miahhrgbfcyur 2018-07-16
简介
TensorFlow* 是一款领先的深度学习和机器学习框架。截至 2017 年 5 月,该框架集成了面向英特尔® 至强® 处理器和英特尔® 至强融核™ 处理器的多项优化。本文是教程系列的第三部分,旨在提供相关信息帮助开发人员通过 GitHub* 存储库中可用的资源构建、安装和探索使用在英特尔® 架构上优化的 TensorFlow*。
本系列的第一篇教程在英特尔® 架构上构建和安装 TensorFlow* 展示了如何通过 GitHub* 存储库中的可用资源构建和安装在英特尔® 架构上优化的 TensorFlow。
本系列的第二篇教程在英特尔® 架构上构建和安装 TensorFlow Serving 介绍了如何构建和安装 TensorFlow Serving — 专为生产环境设计的高性能机器学习服务系统。
在本教程中,我们将训练和保存 TensorFlow 模型,构建 TensorFlow 模型服务器,并通过客户端应用测试该服务器。本教程基于 TensorFlow 网站提供的教程 面向 ML 新手的 MNIST 和 服务 TensorFlow 模型。建议大家在完全了解如何训练和保存 TensorFlow 模型之间,查看这些教程。
训练和保存 MNIST 模型
根据维基百科介绍,MNIST (Modified National Institute of Standards and Technology) 数据库包含 60,000 张训练图像和 10,000 张测试图像,用于机器学习领域的训练与测试。因为 MNIST 数据库相对比较简单,因此经常被用作演示机器学习框架的基础数据集。
首先打开终端,使用以下命令:
cd ~/serving
bazel build //tensorflow_serving/example:mnist_saved_model
rm -rf /tmp/mnist_model
bazel-bin/tensorflow_serving/example/mnist_saved_model /tmp/mnist_model
故障排除:编写时,TensorFlow Serving 存储库识别了一个记录为 “NotFoundError in mnist_export example #421” 的错误。如果使用上述命令后遇到该错误,可尝试以下解决方法:
由于运行 mnist_saved_model 时我们省略了 training_iterations 和 model_version command-line 参数,因此它们分别默认为 1000 和 1。因为我们为导出目录传递了 /tmp/mnist_model,因此训练的模型保存在 /tmp/mnist_model/1中。
根据 TensorFlow 教程文档中的解释,“1” 版子目录包含以下文件:
故障排除:在部分实例中可能会遇到脚本运行下载的培训文件被破坏的问题。 该错误在 GitHub 上定义为 "Not a gzipped file #170"。如有必要,可通过 /tmp 目录中的以下命令,手动下载这些文件:
wget http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
构建和启动 TensorFlow 模型服务器
使用以下命令,构建 TensorFlow 模型服务器:
bazel build //tensorflow_serving/model_servers:tensorflow_model_server
使用以下命令,启动 TensorFlow 模型服务器:
bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=9000 --model_name=mnist --model_base_path=/tmp/mnist_model/ &
测试 TensorFlow 模型服务器
最后一条命令开始在终端中运行 ModelServer。为了使用安装 TensorFlow Serving 中的 mnist_client 实用程序测试服务器,输入 /serving 目录中的以下命令:
bazel build //tensorflow_serving/example:mnist_client
bazel-bin/tensorflow_serving/example/mnist_client --num_tests=1000 --server=localhost:9000
如果一切运行良好,将出现如下图 1 所示的结果。
图 1.TensorFlow 客户端测试结果。
故障排除:GitHub 上有一个定义为 “gRPC doesn't respect the no_proxy environment variable” 的错误,会导致客户端应用运行时出现 “Endpoint read failed” 错误。使用 env 命令查看是否设置了 http_proxy 环境变量。如果设置了,可通过以下命令暂时不设置:
unset http_proxy
总结
在本系列教程中,我们介绍了如何构建 TensorFlow 机器学习框架和 TensorFlow Serving — 专为生产环境设计的高性能机器学习服务系统。训练和保存基于 MNIST 数据集的简单模型,然后使用 TensorFlow 模型服务器部署该模型。最后,使用 GitHub 存储库中的 mnist_client 示例演示客户端应用如何运用 TensorFlow 模型服务器执行机器学习参考。
如欲了解更多有关该主题的信息,请访问TensorFlow 网站,它是了解该框架的主要资料来源。文章 TensorFlow 基于现代英特尔® 架构的优化 介绍了具体的图形优化、性能试验,以及借助 CPU 优化构建和安装 TensorFlow 的详细信息。