AI操作系统:构建AI操作系统【译】

这篇文章是Algorithmia首席执行官迭戈·奥本海默(Diego Oppenheimer)最近在2017年GeekWire技术云峰会上发表的题为“为AI构建操作系统”的演讲的摘要。您可以从这里收听原始谈话。为了更好地查看幻灯片,您可以从这里开始

AI操作系统:构建AI操作系统【译】

您的笔记本电脑上的操作系统正在同时运行数十个或数百个进程。它为每个进程提供所需的正确数量的资源(RAM,CPU,IO)。它将它们隔离在它们自己的虚拟地址空间中,将它们锁定为一组预定义的权限,允许它们进行相互通信,并允许您(即用户)安全地监视和控制它们。操作系统将硬件层抽象化(写入闪存驱动器与写入硬盘驱动器相同),它并不关心您用来编写这些应用程序的编程语言或技术堆栈,它可以平稳,平稳地运行它们始终如一。

随着机器学习渗透到企业中,公司很快就会发现自己正在以越来越快的速度生产越来越多的模型。随着时间的推移,部署效率,资源扩展,监视和审计将变得越来越困难,维护成本也越来越高。公司不同角落的数据科学家将各自拥有自己的一组首选技术堆栈(R,Python,Julia,TensorFlow,Caffe,deeplearning4j,H2O.ai等),数据中心战略将从一个云转移到混合云。以与云无关的方式运行,扩展和监视异构模型是类似于操作系统的责任,这就是我们要谈论的。

在Algorithmia,我们运行8,000多种算法(每个算法都有多个版本,最多可使用40k多个独特的REST API端点)。任何API端点都可以在任何地方被调用,从每天一次到每秒爆发1000次以上,完全没有开发者的经验。这些算法以我们今天支持的14种编程语言中的任何一种编写,可以基于CPU或GPU,可以在任何云上运行,可以对任何数据源(S3,Dropbox等)进行读写,并且延迟时间为在标准硬件上约为15ms。

我们将algorithmia.com视为AI的操作系统,并且本文将分享我们的一些想法。

训练与推理

机器学习和深度学习由两个不同的阶段组成:训练和推理。前者与构建模型有关,后者与在生产中运行模型有关。

AI操作系统:构建AI操作系统【译】

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

另一方面,推论是针对多个用户大规模运行该模型。当同时运行多个模型时,每个模型都以不同的框架和语言编写,这就是它类似于操作系统的时候。操作系统将负责安排作业,共享资源以及监视那些作业。“工作”是一种推理事务,与训练不同,它需要短的计算周期突发(类似于SQL查询),弹性负载(机器需要根据推理需求成比例增加/减少),并且无状态的,前一个交易的结果不会影响下一个交易的结果。

我们将专注于方程的推论侧。

无服务器FTW

我们将在我们的AI操作系统上使用无服务器计算,因此让我们花点时间来解释为什么无服务器架构对人工智能推理有意义。

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

由于这一要求,人工智能推理非常适合无服务器计算。无服务器架构具有明显的扩展优势和经济优势。例如,假设您构建了一个名为“ SeeFood”的应用程序,该应用程序将图像分为“热狗”和“非热狗”。您的应用程式风靡一时,现在排在最热门排行榜上。这是您日常应用使用情况的样子。

AI操作系统:构建AI操作系统【译】

“ SeeFood”每日应用使用情况。午餐时间很受欢迎。
Y轴为“每秒呼叫数”。X轴是“一天中的小时”。

在这种虚构的情况下,如果我们使用传统的(固定比例)体系结构,那么我们每天要购买40台机器。这是下面以绿色突出显示的区域。使用标准的云定价,这可能使我们每月花费约648美元* 40 = 25,920美元。

在这种虚构的情况下,如果我们使用传统的(固定比例)体系结构,那么我们每天要购买40台机器。这是下面以绿色突出显示的区域。使用标准的云定价,这可能使我们每月花费约648美元* 40 = 25,920美元。

 

传统架构–
24小时最多可容纳40台机器的设计。$ 648 * 40 =每月$ 25,920

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

AI操作系统:构建AI操作系统【译】

传统架构–
24小时最多可容纳40台机器的设计。$ 648 * 40 =每月$ 25,920

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

AI操作系统:构建AI操作系统【译】

自动缩放架构–
24小时本地最多19台计算机的设计。$ 648 * 40 =每月$ 12,312

最后,如果我们使用无服务器架构,那么(理论上)我们将完全按照所用的数量付费,而不是为空闲时间付费。这是下表中的所有蓝色区域。在这种虚构的方案中,成本很难计算–平均下来为21个呼叫/秒,或相当于6台计算机。那就是$ 648 * 6 =每月$ 3,888。

AI操作系统:构建AI操作系统【译】

无服务器架构–最低
平均设计 每秒21个呼叫,或相当于6台机器。$ 648 * 6 =每月$ 3,888

在这种(虚拟的)场景中,我们的云计算成本从〜2.6万美元增加到〜4000美元。除了其他优势(例如更简单的开发(功能封装为原子服务),更低的延迟(与边缘计算一起使用)和滚动部署功能)外,这是使用无服务器计算的重要原因。

从头开始构建无服务器架构并不是一件特别困难的事,特别是随着最近devop的发展。Kubernetes和Docker之类的项目将极大地简化功能即服务架构的分发,扩展和修复需求。

AI操作系统:构建AI操作系统【译】

FaaS体系结构示例
将API调用路由到API服务器,然后路由到预热的Docker容器。
容器会及时加载并执行代码。

在此阶段,我们拥有无服务器架构的赌注。构建它并在那里停止等同于使用AWS Lambda。但是,要使我们的系统对AI工作流程更有价值,我们需要满足其他要求,例如GPU内存管理,可组合性,云抽象,检测和版本控制等。