你开发了一个R/Python/Java模型。它工作得很好。进而?首先,您的CEO需要了解机器学习并知道数据是新的石油。数据仓库团队的某个人刚刚提交了他的1PBTeradata系统的预算,CIO听说FB正在使用Hadoop来驱动商品存储服务,而且超级便宜。这掀起了一场血腥风暴,你被分配到一个数据优先的创新团队。所以你雇佣了一个数据科学家团队,突然间每个人都兴奋起来,想要从你那里得到一点数字魔法来谷歌化他们的业务。但是你的数据科学家没有基础设施来花时间建立项目进度表来执行程序,所以投资回报并不乐观,每个人都责怪你没有关注他们的业务损益(P&L)投入足够核心技术。-VishNandlall在PB级共享、重用和运行模型不是数据科学家工作流程的一部分。这种低效率在企业环境中更为明显,在企业环境中,数据科学家需要在每一步都与IT协作,从而导致混乱(如果不是不可能)的持续部署流程和低可重用性。而这个痛点会随着公司的不同角落开始“谷歌化(Googlify)他们的业务”而滚雪球。为了满足这种需求,数据科学与机器学习平台(DataScience&MachineLearningPlatform)应运而生。作为基础层,其之上是三个内部利益相关者的协作:产品数据科学家、中央数据科学家和IT基础架构。图1:数据科学平台服务于三个利益相关者:产品、中心和基础设施图1中所示的系统对于越来越依赖机器学习的大型复杂企业来说是必不可少的。在这篇博文中,我们将讨论以下问题:谁需要数据科学和机器学习平台(DS&ML)?DataScience&MachineLearningPlatform(数据科学与机器学习平台)是什么?您如何区分不同的平台?平台示例1.您需要数据科学平台吗?它不适合所有人。对于只有一个或两个用例的小型团队,最好围绕共享和扩展(或使用私有托管解决方案)即兴创作您自己的解决方案。但是,如果您是一个拥有许多内部客户的集中式团队,您可能会遇到以下几种症状:症状#1您正在拆分代码库您的数据科学家构建了一个模型(比如基于R和Python),想要嵌入它在产品中,在网络或移动应用程序中使用它。而你的后端功能是你用Java或.NET构建了基础设施,现在你必须用他们选择的技术堆栈从头开始重写这个架构。因此,您有两个代码库需要调整和同步。随着构建的模型数量的增加,这种低效率会成倍增加。症状#2无论是小到预处理功能还是大到成熟的训练模型,您都在重新发明轮子。你的团队产出的越多,就越有可能在现任和前任成员之间进行系统性的工作复制,尤其是项目。症状#3你很难雇到最优秀的人才你公司的每个角落都在产生数据科学或机器学习的想法以脱颖而出,但你只有少数真正优秀的专家,他们只能一次接受一项挑战时间。你应该雇用更多的人,但数据科学家和机器学习天才非常罕见,他们中最优秀的人的收入与NFL顶级四分卫一样多。症状#4您的云账单堆积如山(P2太多!)您在Web服务器后端部署了一个模型。在深度学习领域,您可能需要一台配备现成GPU的机器,例如AWSEC2(或AzureN系列VM)上的P2实例。为每个生产深度学习模型运行这些机器可能很昂贵,特别是对于棘手的工作负载或难以预测的模式。2.什么是数据科学与机器学习平台?除了训练,它与一切都相关。数据科学和机器学习平台(DataScience&MachineLearningPlatform)关注的是训练阶段后模型的生命周期。这包括:注册模型,展示它们如何从一个版本演变为两个版本,将它们集中起来以便其他用户可以找到它们,并将它们变成可以嵌入任何数据流的独立工件。1.库与注册中心scikit-learn和SparkMLlib之类的东西存储了一组独特的算法。这是一个图书馆。数据科学和机器学习平台是一个注册表。它包括来自不同来源的算法的多个实现,并且每个算法都有自己的版本(或系列),这些版本(或系列)同样可发现和访问。注册用户可以轻松找到并比较算法不同实现的输出。2.Trainingvs.Inference数据科学家会使用合适的工具来解决相应的问题。有时这些工具是机器学习算法库(scikit-learn)和Keras的组合,或者是Caffe和Tensorflow的组合,或者是用R语言编写的H2O脚本。平台不要求使用艺术工具,但能够注册和操作这些模型,而与模型的训练和实施方式无关。3.手动与自动部署将模型部署到生产环境的方法有很多种,最终结果始终是RESTAPI。不同的部署路径会带来很多风险,包括API接口设计不一致、认证登录不一致、开发资源逐渐枯竭等。平台应该能够以最少的步骤自动完成,通过一致的API和授权提供模型,并减少DevOps的执行压力。3.如何区分不同的数据科学和机器学习平台?表面上看,所有数据科学平台都是相似的,但细节中隐藏着魔鬼。以下是一些可比较的数据点:1.支持的语言R和Python是绝大多数数据科学和机器学习项目的标准。Java是紧随其后的第二选择,因为有像deeplearning4j和H2O的POJO模型提取器这样的库。C++在科学计算或HPC环境中特别有用。其他执行时间是可选的,具体取决于您的用例和您的非数据科学同事使用的主要技术堆栈,例如NodeJS/Ruby/.NET等。2.CPU与GPU(深度学习)随着该领域的成熟和随着模型规模的增长,深度学习在数据科学和机器学习中将变得越来越重要。TensorFlow虽然流行,但并不总是向后兼容,Caffe需要特定的编译器标志,而cuDNN只是为您的GPU集群增加了一层管理复杂性。完全容器化和生产化异构模型(在代码、节点权重、框架和底层驱动方面),并在GPU架构上运行它们对于没有强制性要求的平台来说是非常不同的。3.单版本控制与多版本控制版本控制是指进化模型系列并获得对每个版本的独立访问的能力。对模型进行版本控制后,数据科学家可以测试模型如何随时间变化。单一版本架构只会为模型(当前稳定版本)公开一个RESTAPI端点,并且只有作者才能通过他们的控制面板在不同模型之间“切换”。多版本架构为除了“稳定”版本之外的每个先前版本公开了一个RESTAPI端点,使它们同时可用,从而消除了向后兼容的困难,并允许后端工程师运行部分推出或实时A/B测试.4.垂直与水平缩放仅将模型作为RESTAPI提供是不够的。垂直扩展是在更大的机器上部署你的模型。横向扩展是在多台机器上部署你的模型。AlgorithmiaEnterprise进行的Serverless扩展是基于需求的垂直扩展。这里的需求指的是将模型封装到一个专用的容器中,实时沿着计算集群部署容器,执行完成后淘汰。释放资源。无服务器计算在扩展性和经济性方面带来了好处。5.单租户与多租户当您共享硬件资源时,处理敏感或机密模型可能具有挑战性。单租户平台将在相同资源(机器实例、虚拟内存等)上运行所有生产模型。多租户平台将模型部署为虚拟隔离系统(每个模型有不同的容器或虚拟机),可能提供额外的安全措施(例如防火墙规则和审计跟踪)。6.固定数据源与备用数据源数据科学家可能需要在来自S3的模型上运行离线数据,而后端工程师同时通过HDFS在同一模型上运行生产数据。固定数据源平台需要模型作者安装两个数据连接器:HDFS和S3。备选数据源只需要作者安装一个通用的数据连接器,它可以作为多个数据源的适配器,也是一种让面向未来的模型兼容未来出现的任何数据源的方式。4.数据科学和机器学习平台的例子这绝不是一个详尽的清单。AlgorithmiaEnterprise:http://algorithmia.com/enterpriseDomino数据实验室:http://dominodatalab.com/yHat:https://www.yhat.com/Dataiku:https://www.dataiku.com/ClouderaWorkbench:https://www.cloudera.com/products/data-science-and-engineering/data-science-workbench.htmlAlteryx:http://www.alteryx.com/RapidMiner:https://rapidminer.com/本文由Algorithmia的AhmadAlNaimi撰写。【本文为栏目组织《机器之心》微信公众号《机器之心(id:almosthuman2014)》原文翻译】点击此处查看作者更多好文
