前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谷歌投资“算法商店”创始人:打造AI操作系统(PPT)

谷歌投资“算法商店”创始人:打造AI操作系统(PPT)

作者头像
新智元
发布2018-03-27 16:32:26
8330
发布2018-03-27 16:32:26
举报
文章被收录于专栏:新智元新智元

【新智元导读】作为拿到谷歌 AI 初创公司风险基金首笔投资的项目(1050万美元),“算法商店”Algorithmia 的创始人兼 CEO 日前做了题为《为 AI 打造操作系统》的报告。

笔记本电脑上的操作系统同时运行几十个或者几百个进程。它会给每一个进程分配所需要的资源(RAM、CPU 和 IO)。它会将它们隔离在自己的虚拟空间中,将它们锁定到一组预定义的权限,允许它们进行通信,并允许用户安全地监视和控制它们。

操作系统会抽象出硬件层(写入闪存驱动器与写入硬盘驱动器相同),并且不关心用于编写这些应用程序的编程语言或技术堆栈——它只是顺利地统一地运行它们。

随着机器学习逐渐渗透到企业,许多公司很快就会发现自己在生产越来越多的模型,并且更快地剪辑。随着时间的推移,部署效率,资源规模,监测和审计将开始变得更加困难和昂贵。来自公司不同部门的数据科学家将各自拥有自己的一套首选技术(R,Python,Julia,Tensorflow,Caffe,deeplearning4j,H2O等),数据中心战略将从一个云转向混合。以一种类似云的方法运行、扩展、监管多样模型,负责地说,与操作系统很像,这就是我们想说的 。

在 Algorithmia.com 上,我们运行3,500多种算法(每种都有多个版本,最多可以获得40k +独特的REST API端点)。任何API端点都可以从一天一次到每秒1,000次以上的突发,具有完全无限制的体验。这些算法以我们今天支持的八种编程语言中的任何一种编写,可以基于CPU或GPU,可以在任何云端运行,可以读取和写入任何数据源(S3,Dropbox等),并以标准硬件 〜15ms。

我们将 Algorithmia.com 视为我们的AI操作系统版本,这篇文章将分享我们的一些想法。

目录

• 训练 VS 推理

• 无服务器 FTW

• Kernel 和 Shell

• Kernel #1 弹性伸缩

• Kernel #2 Runtime Abstraction

• Kernel #3 Cloud Abstraction

• 总结

训练VS推理

机器学习和深度学习由两个独特的阶段构成:训练和推理。前者关于搭建模型,后者是关于在产品中运行这些模型。

训练模型是一个非常依赖框架的迭代过程。一些机器学习工程师在GPU上使用Tensorflow,其他人在CPU上使用scikit-learn 。这类似于构建应用程序,其中应用程序开发人员有一个精心整合的开发工具链和库,不断编译和测试他们的代码。培训需要很长的计算周期(数小时到数天),通常是固定的负载输入(意味着你不需要从一台机器扩展到X机器以响应触发器),并且理想地是一个有状态的过程,数据科学家将需要反复保存训练进度,如神经网络检查点。

另一方面推理是将该模型规模扩展到多个用户。当同时运行多个模型时,每个模型都以不同的框架和语言编写,它类似于操作系统。操作系统将负责调度工作,共享资源和监视这些工作。 “工作”是一个推理事务,与训练的情况不同,需要一个短暂的计算周期(类似于SQL查询),弹性负载(机器需要与推理需求成比例地增加/减少),而且它是无状态的,其中先前事务的结果不会影响下一个事务的结果。

我们将重点放在推理方面。

无服务器 FTW

我们将为我们的操作系统使用无服务器计算,所以让我们花一点时间来解释为什么无服务器架构对于AI推理是有意义的。

正如我们在上一节中所解释的,机器学习推理需要一个短的计算突发。这意味着作为REST API服务的服务器将处于空闲状态。例如,当接收到请求时,要对图像进行分类,它会在短时间内突然出现CPU / GPU利用率,返回结果,然后恢复为空闲状态。此过程与数据库服务器相似,该服务器在接收到SQL查询之前是空闲的。

由于这个要求,AI推理是非常适合无服务器计算的。无服务器架构具有明显的扩展优势和经济优势。例如,假设您已经构建了一个名为“SeeFood”的应用程序,它可以将图像分为是热狗和不是热狗。您的APP会被虚拟化,现在位列图表上方。以下是您的日常应用使用情况:

“SeeFood”每日应用程序的使用情况。午餐时间非常受欢迎。

Y轴为“每秒呼叫”。 X轴是每天的时刻。

在这个虚拟的情况下,如果我们使用传统(固定规模)架构,那么我们每天要养40台机器。这是以下绿色突出显示的区域。使用标准的云定价,这可能需要我们约$ 648 * 40 =每月25,920美元。

传统架构 - 最大设计

40台机器24小时, $ 648 * 40 = $ 25,920每月

如果我们使用自动扩展架构(我们每小时添加或删除机器),那么我们每天平均需要支付19台机器。这是以下绿色突出显示的区域。总共$ 648 * 19 = $ 12,312每月。

自动扩展架构 - 本地最大设计

19台机器24小时。 $ 648 * 40 = $ 12,312每月

最后,如果我们使用无服务器架构,那么我们将在理论上支付我们使用的金额,而不是为空闲时间付费。这是下面图表中的蓝色区域。这个虚构场景中的成本是难以计算的 - 它平均降低到21个/秒,或者相当于6台机器。这是$ 648 * 6 = $ 3,888每月。

无服务器架构 - 最小设计

平均 21次调用/秒,或相当于6台机器。 $ 648 * 6 =每月$ 3,888

在这个(虚构的)情况下,我们的云计算成本从$ 26k到$ 4k。除了更简单的开发(功能封装为原子服务),降低延迟(与边缘计算一起使用)以及滚动部署功能等其他优点之外,这也是使用无服务器计算的重要原因。

从零开始建立一个无服务器架构并不是一件特别困难的事情,特别是近期的进步。像Kubernetes和Docker这样的项目将大大简化功能即服务体系结构的分布、扩展和恢复需求。

Kernels and Shells

和由 Kernel、Shell 和 Service 构成的操作系统类似,我们的操作系统也包括这些组件。

Shell 是用户与之互动的部分,如网站或API端点。Service 是我们操作系统的可插拔组件,如认证和报告。最后一层,Kernel 是真正定义我们操作系统的部分。下面将重点关注。

我们的 Kernel 由三个主要组件组成:弹性伸缩(elastic scaling),runtime abstraction 和cloud abstraction。我们来详细探讨这些组件。

Kernel #1 智能弹性伸缩

如果我们知道算法#A总是会调用算法#B,我们如何利用这些知识?这就是应需 scaling up 的智能部分。

可组合性是机器学习和数据科学世界中非常普遍的模式。数据处理流程通常由预处理、处理和后处理阶段组成。在这种情况下,处理流程是流程上不同功能的组合。在 ensemble 中也发现了这种组合性,数据科学家运行不同的模型,然后综合最终得分。

举个例子:“SeeFood”拍摄了一张水果或蔬菜的照片,然后给出水果或蔬菜的名称。相比于为所有食物和蔬菜建立一个单一的分类器,通常将其分解为三个分类器,像这样:

在这种情况下,我们知道顶端的模型(“水果或蔬菜分类器”)将始终调用“水果分类器”或“蔬菜分类器”。如何利用这一点?一种方法是对所有资源进行测量,跟踪每个模型消耗的CPU水平、内存水平和IO水平。我们的 orchestrator 可以设计为在堆栈这些任务时使用此信息,从而减少网络或增加服务器利用率(为单个服务器适配更多的模型)。

Kernel#2 Runtime Abstraction

我们的 Kernel 的第二个组件是 runtime abstraction。在机器学习和数据科学工作流中,通常我们用某个堆栈(比如说R,GPU 上的 TensorFlow)构建一个分类器,并且在不同的堆栈上(也许是Python,CPU 上的scikit-learn)运行预处理或相邻模型。

我们的操作系统必须抽象出这些细节,并实现功能和模型之间的无缝互操作性。为此,我们使用RESTAPI ,并使用JSON或等效的通用数据表征来交换数据。如果数据太大,我们将URI传递给数据源,而不是JSONblob。

Kernel#3 Cloud Abstraction

如今我们不期望程序员是devops。我们甚至不期望数据科学家理解不同云供应商的所有复杂细节。处理不同的数据源是这种抽象的一个很好的例子。

想象一下,数据科学家创建了一个分类图像模型。该模型的消费者可能有三种不同的角色:(a)后端制作工程师可能正在使用S3;(b)数据科学家可能使用Hadoop;(3)不同组织中的BI用户可能正在使用Dropbox。要求该模型的作者为每一个源构建一个数据连接器(并保留它,以备未来新数据源之需)会分散他们工作的注意力。而我们的操作系统可以提供读写不同数据源的 DataAdapter API。

以上代码分别显示了不带 abstraction 和带有 abstraction的数据读取

在第一个块中,没有存储抽象需要我们为每个数据源(在这种情况下为S3)编写一个连接器,并在我们的模型中进行硬编码。在第二个块中,我们使用DataAdapter API,它接收到数据源的URI,并自动注入正确的数据连接器。那些URI可以指向S3,Azure Blob,HDFS,Dropbox 或其他任何东西。

总结

到目前为止,我们的操作系统是自动伸缩、可组合、自动优化且与云无关的。监控您的数百或数千种模型也是至关重要的任务。不过它还在做另外一件事:可见性。

可见性是发现以下各方创建的模型和功能的能力:

  • 操作系统的第一方用户(您的同事)
  • 第三方供应商(学术界、开源、独立开发商)

操作系统不是产品,而是平台。从打孔卡片到机器语言到汇编语言,操作系统慢慢地爬上了抽象的梯子。抽象,是关于如何将事物看成是模块化组件,鼓励重用,并使得高级工作流更易于访问。这就是为什么最新一波的操作系统(如 iOS 和 Android)都附带了内置的 AppStore。

出于同样的原因,我们的操作系统必须重视可见性和可重用性。这就是为什么我们创建了CODEX,我们 AI 的首选操作系统,以及 Algorithmia.com,算法和模型的应用程序商店。我们帮助公司提高其算法的可见性,同时让这些公司(和独立开发人员)通过 Algorithmia.com 访问最佳的第三方算法。

编译来源:https://blog.algorithmia.com/wp-content/uploads/2017/07/geekwire-os-for-ai.pdf

PPT 下载:https://blog.algorithmia.com/wp-content/uploads/2017/07/geekwire-os-for-ai.pdf

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
弹性伸缩
弹性伸缩(Auto Scaling,AS)为您提供高效管理计算资源的策略。您可设定时间周期性地执行管理策略或创建实时监控策略,来管理 CVM 实例数量,并完成对实例的环境部署,保证业务平稳顺利运行。在需求高峰时,弹性伸缩自动增加 CVM 实例数量,以保证性能不受影响;当需求较低时,则会减少 CVM 实例数量以降低成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档