同步操作将从 OpenDocCN/apachecn-dl-zh 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
在本章中,我们将学习如何在各种平台上部署经过训练的模型,以实现最大吞吐量和最小延迟。 我们将了解 GPU 和 CPU 等各种硬件的性能。 我们将遵循在 Amazon Web Services,Google Cloud Platform 等平台以及 Android,iOS 和 Tegra 等移动平台上部署 TensorFlow 的步骤。
我们将在本章介绍以下主题:
性能对于深度学习模型的训练和部署都很重要。 由于大数据或大模型架构,训练通常需要更多时间。 结果模型可能更大,因此在 RAM 受限的移动设备中使用时会出现问题。 更多的计算时间导致更多的基础架构成本。 推理时间在视频应用中至关重要。 由于前面提到了性能的重要性,因此在本节中,我们将研究提高性能的技术。 降低模型复杂度是一个简单的选择,但会导致精度降低。 在这里,我们将重点介绍一些方法,这些方法可以提高性能,而准确率却没有明显的下降。 在下一节中,我们将讨论量化选项。
深度学习模型的权重具有 32 位浮点值。 当权重量化为 8 位时,精度下降很小,因此在部署中不会注意到。 结果权重的精度似乎对深度学习模型的精度性能影响较小。 这个想法对深度学习很有趣,并且在模型大小变得至关重要时很有用。 通过用 8 位值替换 32 位浮点值,可以显着减小模型大小并提高推理速度。 实现模型量化时有很多选择。 权重可以存储在 8 位中,但推理操作可以以 32 位浮点值执行。 架构的每个组件在量化大小上的行为可能有所不同,因此,取决于层,可以选择 32 或 16 或 8 位值。
量化工作有多种原因。 通常,深度学习模型经过训练可以解决图像中的噪声,因此可以被认为是健壮的。 推理计算可以具有冗余信息,并且可以由于量化而去除冗余信息。
最新的 CPU 和 RAM 硬件已针对浮点计算进行了调整,因此在此类硬件中量化效果可能不太明显。 随着为此目的引入越来越多的硬件,这种情况正在改变。 在 GPU 中,由于内存和速度现已适应较低的精确浮点运算,因此它们在内存和速度上存在明显差异。 还有其他特殊硬件可用于运行不太精确的浮动操作。
霍华德(Howard)和其他人引入了一种称为 MobileNets 的新型模型,可用于移动和嵌入式应用。 MobileNets 可以用于不同的应用,例如对象检测,地标识别,人脸属性,细粒度分类,如下所示:
转载自霍华德等人
MobileNets 通过用深度(b)和点向卷积(c)替换标准卷积过滤器(a)和点卷积(c)来减少模型的大小和计算量,如下所示:
转载自霍华德等人
批量归一化和激活层被添加到深度和点积卷积中,如下所示:
转载自霍华德等人
有两个参数会影响模型的选择:
转载自霍华德等人
转载自霍华德等人
MobileNets 已显示,可以在移动和嵌入式设备上使用的精度有所降低的情况下,可以减少模型的计算和尺寸。 在霍华德等人的文章中可以看到模型与精度之间的确切权衡。
必须将这些模型部署在云中以用于多个应用。 我们将为此目的寻找主要的云服务提供商。
Amazon Web Services(AWS)将支持扩展到基于 TensorFlow 的模型的开发和部署。 在 Amazon 上注册 AWS,然后选择 Amazon 机器映像(AMI)之一。 AMI 是安装了所有必需软件的计算机的映像。 您不必担心安装包。 AWS 提供了深度学习 AMI(DLAMI),以简化训练和部署深度学习模型。 有几种选择。 在这里,我们将使用 Conda,因为它带有运行 TensorFlow 所需的几个包。 Python 有两个选项:版本 2 和版本 3。以下代码将在 CUDA 8 的 Python 3 上使用 Keras 2 激活 TensorFlow:
source activate tensorflow_p36
以下代码将在 CUDA 8 的 Python 2 上使用 Keras 2 激活 TensorFlow:
source activate tensorflow_p27
您可以访问这里了解更多详细信息和教程。
还可以通过执行以下给定的步骤来启动虚拟机(VM):
安装和执行步骤可以遵循第 1 章,“入门”。
Google Cloud Platform(GCP)是 Google 提供的云平台,具有与 AWS 类似的功能。 通过执行以下步骤,可以使用一个简单的虚拟机来训练诸如 AWS 之类的模型:
CREATE INSTANCE
按钮,以创建所需的实例:使用该外壳,您可以安装 TensorFlow 并可以训练或部署模型。 有许多选项可从虚拟机的配置中选择。 根据成本和时间的权衡,可以选择配置。
GCP 具有云机器学习引擎,可在使用 TensorFlow 时为我们提供帮助。 GCP 的三个组件可以一起用于构建训练和部署基础架构:
可以在这个页面上找到使用云机器学习引擎建立自定义图像分类模型的出色教程。
TensorFlow 模型也可以部署在移动设备中。 移动设备包括智能手机,无人机,家用机器人等。 数十亿智能手机可以具有可以使用深度学习的计算机视觉应用。 可以拍照并搜索,流化带有标记场景的视频等。 在移动设备中进行部署意味着深度学习模型存在于设备上,并且推断发生在设备上。 设备上部署的模型有助于解决隐私问题。 在以下主题中,我们将讨论如何在各种移动平台上部署它们。
Jetson TX2 是由 NVIDIA 提供的嵌入式设备,专门用于高效 AI 计算。 Jetson TX2 轻巧,紧凑,因此适合在无人机,公共场所等中部署。 它还附带预装的 TensorRT,这是 TensorFlow 的运行时。 您可以购买 Jetson 并在安装 TensorFlow 之前快速安装 Ubuntu,CUDA,CUDNN。 克隆这个页面,然后在命令提示符下输入以下命令。
./installPrerequisites.sh
./cloneTensorFlow.sh
./setTensorFlowEV.sh
./buildTensorFlow.sh
./packageTensorFlow.sh
pip install $HOME/tensorflow-1.0.1-cp27-cp27mu-linux_aarch64.whl
借助这些步骤,我们可以在 Jetson TX2 中安装 TensorFlow。
任何 Android 应用都可以使用 TensorFlow,其构建细节可以在这个页面中找到。 关于此的官方示例可以在这个页面中找到。 假设读者具有 Android 编程经验,则在 Android 设备中实现 Tensorflow 的步骤如下:
.pb
文件。.so
和.jar
。gradle
文件以启用库加载。苹果使用 CoreML 框架将机器学习集成到 iPhone 应用中。 Apple 提供了可以直接集成到应用中的标准模型列表。 您可以使用 TensorFlow 训练自定义深度学习模型并将其在 iPhone 中使用。 为了部署自定义模型,您必须在 CoreML 框架模型中隐藏 TensorFlow。 谷歌发布了 tf-coreml,用于将 TensorFlow 模型转换为 CoreML 模型。 可以使用以下代码安装 TFcoreML:
pip install -U tfcoreml
可以使用以下代码导出模型:
import tfcoreml as tf_converter
tf_converter.convert(tf_model_path='tf_model_path.pb',
mlmodel_path='mlmodel_path.mlmodel',
output_feature_names=['softmax:0'],
input_name_shape_dict={'input:0': [1, 227, 227, 3]})
iPhone 可以使用导出的模型进行预测。
在本章中,我们了解了如何在各种平台和设备上部署经过训练的深度学习模型。 我们已经介绍了为这些平台获得最佳性能的步骤和准则。 我们已经看到了 MobileNets 的优势,它以很小的精度权衡来减少推理时间。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。