浏览了200多种机器学习工具后,我学到了什么?最近大家越来越关注MLOps,尤其是涉及到的各种工具。在这篇文章中,芯哥统计了200多个机器学习相关的工具,回顾了整个领域的发展和现状,列举了机器学习开发的难点,特别是与传统软件开发的区别,最后专门讨论了影响该领域的开源。最近,我决定彻底调查我能找到的每一个AI/ML工具,以便更好地了解机器学习领域工具的整体情况。整个过程参考的资源包括:FullStackDeepLearningLFAIFoundationlandscapeAIDataLandscape各种媒体、陌生人、风险投资家选择的AI创业公司名单)过滤掉app-only的公司后(比如那些使用机器学习提供服务的公司)业务分析),未在积极开发中的工具,以及没有人使用的工具,我们剩下202个工具。完整列表如下:https://docs.google.com/spreadsheets/d/1OV0cMh2lmXMU9bK8qv1Kk0oWdc_Odmu2K5sOULS9hHQ/edit?usp=sharing如果有你认为应该包含但没有包含的工具,请务必添加在评论区!免责声明:此工具列表是在19年11月创建的,现在情况肯定不同;一些科技公司提供了一套多得无法一一列举的工具,例如AmazonWebServices,它提供超过165种功能齐全的服务;还有很多不太知名的初创公司,我可能不知道,有的甚至没听说就倒闭了。概述我认为机器学习的生产过程可以概括为4个主要步骤:项目创建数据管道建模和培训上线服务根据工具服务于上述哪些过程,我对工具进行了分类。我没有包括项目创建部分,因为这一步需要项目管理工具,而不是机器学习工具。分类有时并不简单,因为某些工具可能涉及多个步骤。而这些工具模棱两可的描述也让人一头雾水:“我们推动数据科学的极限”、“将人工智能项目转化为现实世界的商业成果”、“让数据像空气一样自由流动”,以及我个人最喜欢的。皮克的一句话:“Weliveabovedatascienceandbreatheindatascience”。对于涵盖流程中多个步骤的工具,我按其最著名的功能对它们进行分类。有些工具具有多个类别中熟悉的功能,因此我将它们都放在“一体机”类别中。我还添加了“基础设施”类别,以包括提供基础设施来训练和存储模型的公司,其中大部分是“云”提供商。总体发展历程为此,我记录了每个工具推出的年份。对于开源项目,我看第一次提交时间来确定项目何时公开。对于公司,我会在Crunchbase网站上查找它成立的年份。然后,我随时间绘制了每个类别中工具的数量。历年积累的工具数量图:左上角的图例是集成、数据管道、基础设施、建模和训练、服务提供。正如预期的那样,数据显示该领域在2012年才开始快速发展,恰逢深度学习重新受到关注。在AlexNet之前(12年前)到11年间,该领域主要由建模和训练工具主导。一些框架仍然很流行(例如scikit-learn),或者影响了当前的框架(例如Theano)。12年前创建并存活至今的工具,有的已经上市(Cloudera、Datadog、Alteryx),有的已经被收购(图八),有的已经成为圈内非常火爆的开源项目(Spark、Flink、卡夫卡)。发展时期(2012年到2015年),随着机器学习圈开始“硬喂数据”,机器学习已经成为数据主导的领域。在查看每个类别中每年推出的工具数量时尤其如此。2015年,57%(82个中的47个)是数据管道工具。每年推出的每个类别中的工具数量。左上角的图例是集成、服务提供、基础设施、数据管道、建模和培训。在产业化时期(2016年至今),虽然单纯的研究很重要,但大多数企业承担不起成本,除非研究能在短期内带来商业应用。随着机器学习研究、数据和现成模型变得更容易获得,更多的人和组织将希望直接找到应用场景,这增加了对机器学习产业化工具的需求。2016年,谷歌宣布使用神经机器翻译来改进谷歌翻译服务,这是深度学习在现实中的首批重要应用之一。从那时起,我们开发了各种工具来帮助机器学习应用程序在线部署。总体发展状况虽然AI领域的创业公司很多,但大部分都是面向应用的(提供业务分析或客户支持等应用),而不是面向工具的(创造工具帮助其他公司开发应用)。或者用风险投资的术语来说,大多数创业公司都是垂直人工智能(VerticalAI)。在2019年福布斯“50家AI创业公司”榜单中,只有7家是工具公司。应用程序卖得更好,因为你可以直接去一家公司说,“我们可以自动化你一半的客户支持业务”。相比之下,虽然工具的销售时间会更长,但它们的影响会更大,因为你关注的不是单独和孤立的应用程序,而是整个生态系统的一部分。对于某一类应用,多个供应商可以共存;但对于生态的一部分,通常只有少数工具可以生存。这次经过大量查找,我也只找到了200个左右的AI工具,相对于传统软件工程工具的数量来说,是非常少的。例如,如果你想测试传统的Python应用程序,你可以在2分钟内在Google上找到至少20个工具。如果你想测试一个机器学习模型,那也可能找不到。机器学习开发的问题许多传统的软件工程工具可用于开发或部署机器学习应用程序。但也有许多问题是机器学习应用程序特有的,因此需要专门的工具。在传统的软件工程中,编写代码是最难的部分。但是在机器学习中,写代码只是整体的一小部分。开发一种能够显着改进实际任务的新模型不仅困难,而且成本高昂。因此,大多数公司不会专注于开发模型,而是使用现成的模型,比如“BERT大法解决一切”。对于机器学习,通常拥有最多/最好数据的应用程序是最好的。因此,大多数公司并没有那么专注于改进深度学习算法,而是专注于提高数据质量。由于数据变化迅速,机器学习应用程序还需要更快的开发和部署周期。在许多情况下,您可能不得不每晚部署一个新模型。模型尺寸也是一个问题。预训练的大型BERT模型有340M参数,占用1.35GB空间。即使可以安装在手机等移动终端上,但是对于很多应用场景来说也是没有意义的,因为推断的时间太长了。例如,如果输入法提示输入下一个字符的时间比你直接输入的时间长,那么相应的自动补全模型就没有意义了。Git使用逐行比较来进行版本管理,这对大多数传统程序来说效果很好。但它不适合对数据集或模型进行版本控制。Pandas适用于传统数据帧上的大多数操作,但它不能在GPU上运行。基于行的数据格式(例如CSV)非常适合使用少量数据的应用程序。但是如果你的样本包含很多特征,而你只想使用其中的一个子集,那么基于行的数据格式仍然需要先加载所有的特征。PARQUET和OCR等分栏文件格式已针对处理这种情况进行了优化。机器学习应用开发面临的一些问题:监控:如何知道你的数据分布发生了变化,然后重新训练模型?示例:Dessa由AlexNet的AlexKrizhevsky支持,于2020年2月被Square收购。数据标记:如何快速标记新数据或为新模型重新标记现有数据?例如:SnorkelCI/CD测试:您如何运行测试以确保您的模型在更改后仍按预期运行?你不能每次都花几天时间重新训练直到收敛。例如:阿尔戈。部署:如何打包部署新模型或替换现有模型?例如:OctoML。模型压缩:如何压缩模型以适配终端设备?例如:Xnor.ai是一家从AllenInstitute分拆出来的初创公司,专注于模型压缩。2018年5月,该公司以6200万美元的估值筹集了1460万美元。2020年1月,苹果以约2亿美元的价格收购了它,并关闭了其网站。推理优化:如何加快模型的推理时间?通过结合几个操作?通过降低模型精度?较小的模型使推理更快。例如:TensorRT。边缘设备:专门设计的硬件,使机器学习算法能够以更低的成本更快地运行。例如:珊瑚SOM。隐私:我们如何在保护用户隐私的同时使用用户数据来训练模型?工艺如何才能达到欧盟的要求《通用数据保护条例》?例如:PySyft。在下图中,横坐标是这些工具试图解决的主要问题,纵坐标是针对特定问题的工具数量。可以看出,很大一部分集中在数据管道:数据管理、数据标签、数据库/查询、数据处理、数据生成。此类工具可能旨在发展成为一个一体化平台。因为数据处理是项目中资源最密集的阶段,一旦你让人们把数据放在你的平台上,你就会很想用这些数据来想出一些预训练的模型什么的。大多数用于建模和训练的工具都是框架。深度学习框架的竞争现在已经基本尘埃落定,主要是PyTorch和TensorFlow框架,但也有基于这两个框架的更高级框架,用于特定任务,例如自然语言处理(NLP)、自然语言理解(NLU)和多模态问题.还有用于分布式训练的框架。而谷歌最近推出的新框架JAX,每一个痛恨TensorFlow的谷歌党都在吹嘘它。还有单独的实验跟踪工具,流行的框架都有自己的实验跟踪功能。超参数调优非常重要,因此有几个工具专注于它,但似乎没有一个被广泛接受——因为超参数调优的瓶颈不在设置上,而在调优过程中所需的计算能力上。有待解决的最令人兴奋的问题是部署和服务。缺乏服务解决方案的原因之一是研究人员和产品工程师之间缺乏沟通。在有能力进行AI研究的公司(一般是大公司),研究团队和部署团队是分开的,两个团队只通过各种带字母“p”的经理进行沟通:产品经理、项目经理(projectmanagers),和项目经理(programmanagers)。小公司的员工可以看到全栈的情况,但是受制于迫在眉睫的产品需求,他们几乎没有时间去做。只有少数初创公司设法填补了这一空白,这些公司通常由有前途的研究人员创办,并有足够的资金聘请熟练的工程师,准备在AI工具市场分一杯羹。开源和开源内核在我查看的202个工具中,有109个是开源的。即使是那些不是开源的,通常也有配套的开源工具。开源蓬勃发展有几个原因。原因之一是所有开源支持者多年来一直在谈论的事情:透明、协作、灵活性,这似乎是道德规范。客户可能不愿意在没有看到源代码的情况下使用新工具。否则,一旦工具停止运行(这在初创公司中经常发生),代码将不得不重写。当然,开源软件并不意味着非盈利和免费,它的维护是非常耗时和昂贵的。据传TensorFlow团队接近1000人。公司在提供开源工具时必须考虑他们的业务目标,例如,使用他们的开源工具的人越多,就会有越多的人理解他们,信任他们的技术,因此购买他们的付费工具或想加入他们的团队。例如,谷歌希望推广它的工具,让每个人都能使用它的云服务。Nvidia维护着cuDF(以及之前的dask),因此可以出售更多的GPU。Databricks在销售其数据分析平台的同时免费提供MLflow。就在最近,Netflix组建了专门的机器学习团队,发布了他们的Metaflow框架,这让他们得以进入机器学习领域并广纳贤才。Explosion提供SpaCy免费,Prodigy收费。HuggingFace免费提供变形金刚,但我还不知道他们是怎么赚钱的(哈哈哈,良心企业)。由于开源软件已成为常态,初创公司可能很难找到行之有效的商业模式。因为任何一家公司成立之后,都要和现有的开源工具竞争。如果你遵循开放核心的商业模式,你必须决定哪些功能放在开源版本中,哪些放在付费版本中,不要太难看;或者弄清楚如何让免费用户开始付费。结语关于AI泡沫是否会破灭的讨论一直很多。今天人工智能投资的很大一部分是在自动驾驶汽车上。由于全自动驾驶距离商业化还很遥远,有人猜测投资者将对AI行业彻底失望。再加上现在谷歌已经停止招聘机器学习研究人员,而优步已经解雇了其人工智能团队的一半研究人员。两家公司的决定都是在COVID-19之前做出的。有传言称,由于参加机器学习课程的人数众多,该领域的技术人员将会饱和。现在还是进入机器学习的好时机吗?我相信围绕人工智能的炒作是真实的,是时候冷静下来了。但我不认为机器学习领域会消失。虽然有能力做机器学习研究的公司可能越来越少,但需要各种工具将机器学习融入行业的公司还是很需要的。如果一定要在工程师和机器学习专家之间做出选择,我建议你选择工程师。好的工程师更容易掌握机器学习知识,但机器学习专家要成为好的工程师就难多了。如果你成为一名工程师并为机器学习领域开发出伟大的工具,我也会永远感激你!相关报道:https://huyenchip.com/2020/06/22/mlops.html【本文为栏目组织大数据文摘原文翻译,微信公众号“大数据文摘(id:BigDataDigest)”】点此查看该作者更多好文
