我从观察200个机器学习工具中学到了什么

2020-06-24 06:32:41

为了更好地了解机器学习生产可用的工具,我决定查找我能找到的每一个AI/ML工具。我使用的资源包括:

在过滤掉应用程序公司(例如,使用ML提供业务分析的公司)、没有积极开发的工具和没有人使用的工具之后,我得到了202个工具。请查看完整列表。请告诉我是否有您认为我应该包括但还不在列表中的工具!

这份榜单是在2019年11月做出的,最近6个月市场肯定发生了变化。

有些科技公司就是有一套太大的工具,我无法一一列举。例如,亚马逊网络服务提供超过165项功能齐全的服务。

有很多我不知道的隐形初创公司,还有很多在我听说它们之前就已经死了。

I.概述II.随时间推移的景观III.景观不发达IV.MLOPS面临的问题V.开放源码和开放核心VI.结论。

我根据工具支持的工作流的哪个步骤对工具进行分类。我不包括项目设置,因为它需要项目管理工具,而不是ML工具。这并不总是直截了当的,因为一个工具可能对多个步骤有帮助。他们模棱两可的描述并没有让事情变得更容易:“我们突破了数据科学的极限”,“将人工智能项目转化为现实世界的商业成果”,“允许数据自由移动,就像你呼吸的空气一样”,还有我个人最喜欢的:“我们活着,呼吸着数据科学”。

我将涵盖管道中多个步骤的工具归入它们最出名的类别。如果它们属于多个类别,我会将它们归入一体化类别。我还包括基础架构类别,以包括为培训和存储提供基础架构的公司。其中大多数是云提供商。

我跟踪了每个工具发布的年份。如果这是一个开放源码项目,我查看了第一次提交,以了解该项目何时开始公开亮相。如果是一家公司,我会看看它在Crunchbase上成立的那一年。然后,我绘制了一段时间内每个类别中的工具数量。

不出所料,这一数据显示,随着人们对深度学习重新产生兴趣,这一空间在2012年才开始爆炸式增长。

直到2011年,这一领域一直由建模和培训工具主导,有些框架要么仍然非常流行(例如SCRICIT-LEARN),要么对当前的框架产生了影响(Theano)。一些从2012年前开始并存活到今天的ML工具要么已经上市(Cloudera、Datadog、Alteryx),要么被收购(图8),要么成为社区积极开发的流行开源项目(Spark、Flink、Kafka)。

随着机器学习社区采用“让我们向它扔数据”的方法,ML空间变成了数据空间。当我们查看每个类别每年启动的工具数量时,这一点就更加清楚了。2015年,57%(82个工具中有47个)是数据管道工具。

虽然追求纯粹的研究很重要,但大多数公司负担不起,除非它能带来短期的商业应用。随着ML研究、数据和现成模型变得更容易访问,会有更多的人和组织想要为它们找到应用程序,这就增加了对帮助实现机器学习的工具的需求。

2016年,谷歌宣布使用神经机器翻译来改进谷歌翻译,这标志着深度学习在现实世界中的首批重大应用之一。从那时起,已经开发了许多工具来帮助服务ML应用程序。

虽然有很多人工智能初创公司,但大多数是应用程序初创公司(提供业务分析或客户支持等应用程序),而不是工具型初创公司(创建工具来帮助其他公司构建自己的应用程序)。或者用风投的话说,大多数初创公司都是垂直的人工智能。在2019年福布斯50家AI初创公司中,只有7家公司是工装公司。

应用程序更容易销售,因为您可以去找一家公司说:“我们可以自动化您一半的客户支持工作。”工具需要更长的时间才能销售,但可能会产生更大的影响,因为您的目标不是单个应用程序,而是生态系统的一部分。许多公司可以共存提供相同的应用程序,但是对于流程的一部分,通常可以选择几个工具共存。

经过广泛的搜索,我只能找到大约200个AI工具,与传统软件工程工具的数量相比,这是微不足道的。如果您想测试传统的Python应用程序开发,您可以在Google搜索的2分钟内找到至少20个工具。如果您想要测试机器学习模型,那就没有了。

许多传统的软件工程工具可以用来开发和服务机器学习应用程序。然而,许多挑战是ML应用程序独有的,需要它们自己的工具。

在传统的SWE中,编码是最困难的部分,而在ML中,编码只是战斗的一小部分。开发一种能够在实际任务中提供显著性能改进的新模型是非常困难且非常昂贵的。大多数公司不会专注于开发ML模型,而会使用现成的模型,例如,“如果你想要,就在上面加一个BERT。”

对于ML,用最多/最好的数据开发的应用程序获胜。大多数公司不会专注于改进深度学习算法,而是专注于改善数据。由于数据可以快速更改,因此ML应用程序需要更快的开发和部署周期。在许多情况下,您可能不得不每晚部署一个新模型。

ML算法的大小也是一个问题。预先训练的大型BERT模型有340M个参数,为1.35 GB。即使它可以安装在消费设备(例如您的手机)上,Bert在新样本上运行推理所需的时间也使其对许多现实世界的应用程序毫无用处。例如,如果建议下一个字符的时间比您键入的时间长,则自动完成模型是无用的。

Git通过逐行比较差异来进行版本控制,因此适用于大多数传统的软件工程程序。但是,它不适合版本化数据集或模型检查点。熊猫适用于大多数传统的数据帧操作,但不适用于GPU。

CSV等基于行的数据格式适用于使用较少数据的应用程序。但是,如果您的示例具有许多功能,并且您只想使用其中的一部分,则使用基于行的数据格式仍需要加载所有功能。柱状文件格式(如镶嵌和OCR)针对该用例进行了优化。

监控:如何知道您的数据分布发生了变化,您需要重新培训您的模型?例如:Dessa,由AlexNet的Alex Krizhevsky支持,并于2020年2月被Square收购。

数据标注:如何为新模型快速标注新数据或重新标注现有数据?例如:浮潜。

CI/CD测试:如何运行测试以确保您的模型在每次更改后仍能按预期工作,因为您不能花费数天时间等待它进行培训和收敛?示例:Argo。

部署:如何打包和部署新模型或替换现有模型?示例:OctML。

模型压缩:如何压缩ML模型以适应消费类设备?例如,从艾伦研究所(Allen Institute)剥离出来专注于模型压缩的初创公司Xnor.ai在2018年5月以6200万美元的估值筹集了1460万美元。2020年1月,苹果以约2亿美元的价格收购了它,并关闭了其网站。

推理优化:如何加快模型的推理时间?我们能把行动融合在一起吗?我们可以使用较低的精度吗?将模型变小可能会使其推理速度更快。示例:TensorRT。

隐私:如何使用用户数据来训练您的模特,同时保护他们的隐私?如何使您的流程符合GDPR?示例:PySyft。

很大一部分集中在数据管道上:数据管理、标记、数据库/查询、数据处理、数据生成。数据管道工具的目标也可能是成为一体化平台。因为数据处理是项目中最耗费资源的阶段,一旦您让人们将他们的数据放到您的平台上,为他们提供两个预先构建/预先培训的模型是很有诱惑力的。

建模和培训的工具大多是框架。深度学习框架的竞争冷却下来,主要是PyTorch和TensorFlow之间的竞争,以及围绕这两个特定任务系列(如NLP、NLU和多模态问题)的高级框架之间的竞争。有用于分布式培训的框架。还有一个来自谷歌的新框架,每个讨厌TensorFlow的谷歌人都对此赞不绝口:JAX。

有独立的实验跟踪工具,流行的框架也有自己的内置实验跟踪功能。超参数调优很重要,发现几个关注它的人并不令人惊讶,但似乎没有一个人流行起来,因为超参数调优的瓶颈不是设置,而是运行它所需的计算能力。

尚未解决的最令人振奋的问题是部署和服务空间。缺乏服务解决方案的原因之一是研究人员和生产工程师之间缺乏沟通。在有能力从事人工智能研究的公司(如大公司),研究团队与部署团队是分开的,这两个团队只通过p-Manager进行沟通:产品经理、项目经理、项目经理。小公司的员工可以看到整个堆栈,它们受到直接产品需求的制约。只有少数初创公司,通常是那些由有足够资金聘请有成就的工程师的有成就的研究人员创立的公司,成功地弥合了这一差距。这些初创公司准备在人工智能工具市场占据很大份额。

我看过的202个工具中有109个是开放源码软件。即使不是开源的工具通常也伴随着开源工具。

使用开放源码软件有几个原因。一个原因是所有支持开放源码软件的人多年来一直在谈论的原因:透明度、协作性、灵活性,而且这似乎是道德上应该做的事情。客户可能不想在看不到源代码的情况下使用新工具。否则,如果该工具被关闭-这在初创公司中经常发生-他们将不得不重写代码。

开放源码软件既不是非盈利性的,也不是免费的。OSS维护既耗时又昂贵。有传言称,TensorFlow团队的规模接近1000人。公司在提供OSS工具时不会考虑业务目标,例如,如果更多的人使用他们的OSS工具,就会有更多的人了解他们,信任他们的技术专长,并且可能会购买他们的专有工具并想要加入他们的团队。

谷歌可能想要普及他们的工具,这样人们就可以使用他们的云服务。NVIDIA维护CuDF(以及以前的Dask),以便他们可以销售更多GPU。Databricks免费提供MLflow,但出售他们的数据分析平台。Netflix最近开始了他们专门的机器学习团队,并发布了他们的Metaflow框架,将自己的名字放在ML地图上,以吸引人才。爆炸免费提供空间,但对天才收费。HuggingFace免费提供变形金刚,我不知道他们是如何赚钱的。

由于开放源码软件已经成为一种标准,所以对于初创公司来说,要想出一种可行的商业模式是很有挑战性的。任何刚开始的工具公司都必须与现有的开源工具竞争。如果你遵循开放核心的商业模式,你必须决定在OSS中包括哪些功能,在不显得贪婪的情况下将哪些功能包括在付费版本中,或者如何让免费用户开始付费。

关于人工智能泡沫是否会破裂,人们议论纷纷。人工智能的很大一部分投资是在自动驾驶汽车上,由于全自动驾驶汽车还远未成为商品,一些人假设投资者将完全对人工智能失去希望。谷歌已经冻结了ML研究人员的招聘。优步解雇了他们人工智能团队的一半研究人员。有传言说,由于大量的人在学习ML课程,拥有ML技能的人将远远多于ML工作。

现在还是进入ML的好时机吗?我相信人工智能的炒作是真实的,在某种程度上,它必须冷静下来。这一点可能已经发生了。然而,我不相信ML会消失。有能力进行ML研究的公司可能会更少,但需要工具将ML带入其生产中的公司将不在少数。

如果你必须在工程学和ML之间做出选择,那就选择工程学。对于优秀的工程师来说,学习ML知识比较容易,但是ML专家要成为伟大的工程师却要困难得多。如果你成为一名为ML制造优秀工具的工程师,我将永远欠你一个人情。

致谢:感谢安德烈·库伦科夫(Andrey Kurenkov)成为人们所能要求的最慷慨的编辑。感谢卢克·梅茨成为一名出色的初学者。