现在有许多关于 AI 的教程。比如如何进行目标检测、图像分类、NLP 以及构建聊天机器人等,不胜枚举。
我们提供的服务有:成都网站设计、网站建设、微信公众号开发、网站优化、网站认证、相山ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的相山网站制作公司
但当我查找如何正确扩展 AI 的内容时,却发现少得可怜。更令人惊讶的是,现有的极少数资源在反复强调相同的几点:
我对第二点更感兴趣,因为我已经开发好了一个模型,但令我惊讶的是,没有任何关于如何实现第二点的细节,而关于每个解决方案缺点的信息则更少。研究了几天并在 Crane.ai 上扩展 AI 之后,我整理了一些关于如何部署这些方法、这些方法的缺点以及如何在低级别优化 TensorFlow 模型的内容。
将模型打包到客户端——这种方法太糟了!
最常用的方法之一是用像 TensorFlow.js、TF Lite 或 TensorFlow Slim 这样的工具将 AI 打包到你所选择的客户端中。我不会详细介绍这些框架如何运行,但我会重点说明它们的缺点。
这些缺点使得在客户端上部署和维护大型神经网络几乎不可能,所以我们从扩展模型的备选项中排除这一项。
部署为云端点
图源:https://xkcd.com/908/
云是可以大规模部署模型的强大工具。你可以根据需要定制环境、容器化应用程序、立即水平扩展应用程序,同时提供足以和大公司媲美的 SLA 和运行时间。
对大部分 TensorFlow 模型来说,部署流程是相同的:
第一部分相对简单。「固化」图要用所有命名节点、权重、架构和检查点元数据创建一个 protobuf 二进制文件。这一步可以用多种工具实现,最常用的是 TF 自己的工具,它可以固化任何给定输出节点名字的图。
更多该技术相关信息以及实现参阅: https://www.tensorflow.org/guide/extend/model_files#freezing。
调整推断代码也不难。在大多数情况下,feed_dict 是不变的,主要区别在于添加了加载模型的代码,也许还有输出节点的规范。
容器化也很简单——只要在 Dockerfile 中设置环境即可。而当我们开始添加 API 层时,事情就会变得混乱。通常用这两种方法:
部署可以运行推断脚本的扩展容器。这些容器根据输入运行脚本,脚本启动一个会话并执行推断,再通过管道返回输出结果。这是很有问题的:对大多数云供应商而言添加一个可以操纵容器和管道进出的 API 层并不容易(例如,AWS 有 API 网关,但它并不像你期望的那么方便),而且这种方法是你可以采用的效率最低的方法。这里的问题是你在启动容器、分配硬件、启动会话以及推断时损失的宝贵时间。如果你让 stdin 开着并保持管道输出,那么你的脚本就会加速但是会失去可扩展性(现在你已经连接到容器的 STDIN,而它无法接受多个请求)。
部署运行 API 层的扩展容器。尽管在架构上相似,但由于以下几个原因,这种方法效率更高。将 API 层内置在容器中,可以缓解之前提出的大多数问题。虽然这需要更多资源,但它已经用了最少资源而且没有垂直扩展;它允许每个容器保持运行状态,而且由于这种情况下 API 是分散的,因此可以将特定的 stdin/stout 连接到主要的请求路由器上。这意味着省去了启动时间,可以在服务多个请求的同时维持速度并保证水平扩展。可以用负载平衡器集中容器,并用 Kubernetes 保证近乎 100% 的运行时间并管理集群。这种方式简单且有效。
部署集群!
通过容器集群分散 API 的主要缺点在于计算成本会相对较快地累积起来。不幸的是这在 AI 中是不可避免的,但有一些方法可以缓解这一问题。
使用任务队列。一般需要运行或大或小的推断任务(在我们的例子中是较大和较小、复杂和简单的图像)。对 UX 来说,使用堆队列(heap queue)可能更好,它会优先处理小一些的任务,所以要运行简单步骤的用户只要等这一步结束就行了,而不必等另一个用户的更大推断任务先完成。(也许你会想我在这里为什么不用水平扩展,你可以这么做但是会增加计算成本)。
在带有任务队列的专用 GPU 上训练模型。训练是一项长期、困难的任务,它需要大量可用的资源,而且模型在训练过程中无法使用。如果你要将每个交互返回到模型中进行训练,请考虑在单独的服务器或 GPU 上运行。一旦训练结束,你就可以将模型(在 AWS 中,你可以将模型 repo 集中在 S3 中)部署到容器中了。
结论
深思熟虑后,我们提出了一个大规模部署 AI 的高效工作流程:
使用这些技术,你就可以在成本最小、速度和效率最大的情况下大规模部署 AI。
本文名称:没人告诉你的大规模部署AI高效流程!
分享地址:http://www.shufengxianlan.com/qtweb/news46/56346.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联