Skip to content

Latest commit

 

History

History
183 lines (92 loc) · 16.3 KB

200-machine-learning-tools.md

File metadata and controls

183 lines (92 loc) · 16.3 KB

我从查看 200 个机器学习工具中学到的东西

原文:www.kdnuggets.com/2020/07/200-machine-learning-tools.html

评论

作者:Chip Huyen,一位作家和计算机科学家,目前在硅谷的一家机器学习初创公司工作

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


我们的前三大课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业生涯。

2. Google 数据分析专业证书 - 提升你的数据分析能力

3. Google IT 支持专业证书 - 支持你所在组织的 IT 工作


在筛选掉应用公司(例如,使用机器学习提供商业分析的公司)、不再积极开发的工具以及无人使用的工具后,我得到了 202 个工具。请查看完整列表。如果你觉得有我应该包含但尚未列出的工具,请告诉我!

免责声明

  1. 这个列表是在 2019 年 11 月制作的,市场在过去 6 个月里肯定发生了变化。

  2. 一些科技公司拥有一整套工具,大到我无法一一列举。例如,亚马逊网络服务提供了超过 165 个功能齐全的服务。

  3. 有许多隐形初创公司我并不知晓,还有许多在我听说之前就已经关闭了。

I. 概述

我认同的一种机器学习生产流程的概括包含 4 个步骤:

  1. 项目设置

  2. 数据管道

  3. 建模与训练

  4. 服务

我根据工具支持的工作流程步骤对其进行分类。我不包括项目设置,因为它需要项目管理工具,而不是机器学习工具。这并不总是很简单,因为一个工具可能有助于多个步骤。它们模糊的描述让情况更加复杂:“我们推动数据科学的极限”,“将人工智能项目转化为现实世界的商业成果”,“允许数据自由流动,就像你呼吸的空气一样”,以及我个人最喜欢的,“我们全身心投入数据科学。”

我将覆盖多个步骤的工具放入它们最著名的类别。如果它们被知名于多个类别,我会将它们放入一体化类别。我还包括基础设施类别,以涵盖提供训练和存储基础设施的公司。这些大多是云服务提供商。

II. 随时间推移的领域

我跟踪了每个工具推出的年份。如果是开源项目,我查看了第一次提交的时间,以了解项目何时开始公开。如果是公司,我查看了它在 Crunchbase 上的成立年份。然后我绘制了每个类别中工具数量随时间的变化图。

正如预期的那样,这些数据表明,直到 2012 年,该领域才开始爆炸性增长,对深度学习的兴趣得到了重新燃起。

AlexNet 之前(2012 年之前)

直到 2011 年,该领域主要由建模和训练工具主导,一些框架仍然非常流行(例如,scikit-learn)或对当前框架产生了影响(Theano)。一些在 2012 年前开始的机器学习工具并且一直持续到今天,要么已经上市(Cloudera、Datadog、Alteryx),要么被收购(Figure Eight),或者成为社区积极开发的流行开源项目(Spark、Flink、Kafka)。

开发阶段(2012-2015)

随着机器学习社区采用“让我们大量使用数据”的方法,机器学习领域变成了数据领域。当我们查看每年每个类别中启动的工具数量时,这一点尤为明显。在 2015 年,57%(82 个工具中的 47 个)是数据管道工具。

生产阶段(2016 年至今)

尽管追求纯研究很重要,但大多数公司负担不起,除非它能带来短期商业应用。随着机器学习研究、数据和现成模型变得更加可及,越来越多的人和组织希望找到应用,从而增加了帮助将机器学习投入生产的工具需求。

在 2016 年,谷歌宣布了其使用神经机器翻译来改进 Google 翻译,标志着深度学习在现实世界中的第一次重大应用。从那时起,许多工具被开发出来以促进机器学习应用的服务。

III. 该领域尚未成熟

尽管有许多 AI 初创公司,但其中大多数是应用程序初创公司(提供如业务分析或客户支持的应用程序),而不是工具初创公司(创建帮助其他公司构建自己应用程序的工具)。或用 VC 术语来说,大多数初创公司是垂直 AI。在2019 年《福布斯》50 家 AI 初创公司中,只有 7 家公司是工具公司。

应用程序更容易销售,因为你可以去公司并说:“我们可以自动化你们一半的客户支持工作。” 工具的销售时间更长,但可以产生更大的影响,因为你不是针对单一应用程序,而是针对生态系统的一部分。许多公司可以共存,提供相同的应用程序,但对于一个流程部分,通常只有少数几个工具可以共存。

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

IV. 面临的 MLOps 问题

许多传统的软件工程工具可以用于开发和服务机器学习应用程序。然而,许多挑战是机器学习应用程序特有的,需要专门的工具。

在传统软件工程中,编码是难点,而在机器学习中,编码只是战斗的一小部分。开发一个可以在实际任务中提供显著性能改进的新模型是非常困难且成本高昂的。大多数公司不会专注于开发机器学习模型,而是会使用现成的模型,例如,“如果你需要,就用一个 BERT”。

对于机器学习,使用最多/最佳数据开发的应用程序获胜。大多数公司将专注于改进他们的数据,而不是改进深度学习算法。因为数据可以快速变化,机器学习应用程序需要更快的开发和部署周期。在许多情况下,你可能需要每晚部署一个新模型。

机器学习算法的规模也是一个问题。预训练的大型 BERT 模型具有 3.4 亿个参数,大小为 1.35GB。即使它可以适配于消费级设备(例如你的手机),BERT 在新样本上进行推理的时间也使它在许多实际应用中变得无用。例如,如果建议下一个字符的时间比你输入的时间还长,那么一个自动补全模型是无用的。

Git 通过逐行比较差异来进行版本控制,因此对大多数传统的软件工程程序来说效果很好。然而,它不适合对数据集或模型检查点进行版本控制。Pandas 对大多数传统的数据框操作效果良好,但在 GPU 上不起作用。

行基数据格式如 CSV 适用于使用较少数据的应用。然而,如果你的样本具有许多特征,而你只想使用其中的子集,使用行基数据格式仍需要加载所有特征。列式文件格式如 PARQUET 和 OCR 对此用例进行了优化。

面临的机器学习应用开发的一些问题:

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

  • 数据标注:如何快速标注新数据或为新模型重新标注现有数据?例如: Snorkel

  • CI/CD 测试:如何运行测试以确保每次更改后模型仍能按预期工作,因为你不能花费几天时间等待模型训练和收敛?例如: Argo

  • 部署:如何打包和部署新模型或替换现有模型?例如: OctoML

  • 模型压缩:如何压缩机器学习模型以适应消费者设备?例如:Xnor.ai,一家从艾伦研究所分拆出来专注于模型压缩的初创公司,在 2018 年 5 月融资 1460 万美元,估值 6200 万美元。2020 年 1 月,苹果以约 2 亿美元收购了它,并关闭了其网站。

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

  • 边缘设备:旨在快速且廉价地运行机器学习算法的硬件。示例: Coral SOM

  • 隐私:如何使用用户数据来训练模型,同时保护其隐私?如何使你的过程符合 GDPR?例如: PySyft

我绘制了按主要问题划分的工具数量。

大部分关注于数据管道:数据管理、标注、数据库/查询、数据处理、数据生成。数据管道工具也可能旨在成为一体化平台。由于数据处理是项目中最耗费资源的阶段,一旦你让人们将数据放到你的平台上,就很诱人提供几个预构建/预训练的模型。

建模和训练工具大多是框架。深度学习框架的竞争主要在 PyTorch 和 TensorFlow 之间,以及为特定任务家族(如 NLP、NLU 和多模态问题)包装这两者的高级框架之间的竞争。还有用于分布式训练的框架。谷歌推出了一个新框架,每个讨厌 TensorFlow 的谷歌员工都在热烈讨论: JAX

有独立的实验跟踪工具,流行框架也内置了实验跟踪功能。超参数调整很重要,发现几个专注于此的工具并不奇怪,但没有一个似乎引起关注,因为超参数调整的瓶颈不是设置,而是运行所需的计算能力。

最令人兴奋的问题尚待解决的是部署和服务领域。服务解决方案的缺乏有一个原因是研究人员和生产工程师之间缺乏沟通。在能够进行 AI 研究的公司(例如大型公司)中,研究团队与部署团队分开,两者之间仅通过 p-经理沟通:产品经理、项目经理、程序经理。小公司,员工可以看到整个技术栈,受限于即时的产品需求。只有少数初创公司,通常是由有成就的研究人员创办并拥有足够资金聘请优秀工程师的公司,成功弥合了这一差距。这些初创公司有望在 AI 工具市场中占据一大块份额。

V. 开源与开源核心

我查看的 202 个工具中有 109 个是开源的。即使是那些不是开源的工具,通常也会配有开源工具。

开源有几个原因。其中一个是所有支持开源的人多年来一直在谈论的理由:透明、协作、灵活,这似乎是道德的选择。客户可能不愿意使用一个无法查看其源代码的新工具。否则,如果这个工具被关闭——这在初创公司中很常见——他们将不得不重写他们的代码。

开源并不意味着非营利或免费。开源的维护是耗时且昂贵的。TensorFlow 团队的规模传闻接近 1000 人。公司不会在没有商业目标的情况下提供开源工具,例如,如果更多的人使用他们的开源工具,就会有更多的人了解他们,信任他们的技术专长,并可能购买他们的专有工具并希望加入他们的团队。

Google 可能希望普及他们的工具,以便人们使用他们的云服务。NVIDIA 维护 cuDF(以及之前的 dask),以便能销售更多的 GPU。Databricks 提供免费的 MLflow,但出售他们的数据分析平台。Netflix 最近刚刚成立了专门的机器学习团队,并发布了 Metaflow 框架,以便在 ML 地图上留下他们的名字以吸引人才。Explosion 提供免费的 SpaCy,但对 Prodigy 收费。HuggingFace 提供免费的 transformers,我不知道他们是如何盈利的。

由于开源软件(OSS)已成为标准,初创公司很难找到有效的商业模式。任何新成立的工具公司都必须与现有的开源工具竞争。如果你遵循开源核心商业模式,你必须决定哪些功能包含在 OSS 中,哪些功能包含在付费版本中,同时不显得贪婪,或者如何让免费用户开始付费。

VI. 结论

关于人工智能泡沫是否会破裂有很多讨论。大量的人工智能投资集中在自动驾驶汽车上,而完全自主的车辆距离成为商品还有很长的路要走,因此一些人假设投资者会对人工智能失去希望。谷歌已经冻结了机器学习研究员的招聘。优步裁掉了他们人工智能团队的一半研究人员。这些决定都是在 COVID 之前做出的。有传言称,由于大量人们正在参加机器学习课程,将会有更多具备机器学习技能的人,而机器学习岗位却没有相应增加。

现在还是进入机器学习领域的好时机吗?我相信人工智能的炒作是真实的,某个时点它必须会平静下来。这个时点可能已经发生了。然而,我不认为机器学习会消失。可能会有更少的公司能够负担机器学习研究,但需要工具将机器学习引入生产的公司将不会短缺。

如果你必须在工程和机器学习之间做出选择,选择工程吧。优秀的工程师更容易掌握机器学习知识,而机器学习专家要成为优秀的工程师则困难得多。如果你成为一个为机器学习构建出色工具的工程师,我将永远感激不尽。

致谢:感谢Andrey Kurenkov成为最慷慨的编辑。感谢Luke Metz成为出色的首位读者。

原文。经许可转载。

个人简介:Chip Huyen是一名作家和计算机科学家。她致力于将最佳工程实践应用于机器学习研究和生产。她写作涉及文化、人和技术。

相关:

更多相关话题