找回密码
 立即注册
搜索

200 个工具分析机器学习十年:开源是大势,工程师是核心

飱淰 2020-6-30 08:44:37 显示全部楼层 阅读模式


【编者按】人工智能和机器学习经过十年多的发展,在过去的几年间,各类工具数量迎来了持续的迸发式的增长,机器学习也正式由科研走进工业消费阶段。本文作者 —— 来自硅谷一家初创公司的计算机迷信家 Chip Huyen 梳理发掘出 202 个机器学习工具,并停止分类研讨,总结出了至关重要的两点:

    开源曾经变成一种行业标准,任何一个刚起步的公司,都必须与现有的开源工具停止竞争;

    假如必须在人工智能专家和工程师之间做一个选择,那么请选择工程师。

作者 | Chip Huyen,本文已获作者翻译授权

译者 | 罗昭成,编辑 | 唐小引

题图 | 东方 IC

出品 | AI科技大本营(ID:rgznai100)

为了更好地了解如今的机器学习、人工智能的工具,更好地预测它们的前景。我搜集了一切我能搜集到的有关人工智能与机器学习的材料。这些资源来源以下几个方面:

    全栈深度学习,https://github.com/alirezadir/Production-Level-Deep-Learning

    LF AI 基金会全景图,https://landscape.lfai.foundation/

    人工智能与数据全景图,http://dfkoz.com/ai-data-landscape/

    媒体列出的众多 AI 初创公司

    我在 Twitter(https://twitter.com/chipro/status/1202815757593108480)和 LinkedIn(https://www.linkedin.com/posts/chiphuyen_machinelearning-machinelearningproduction-activity-6608605129010753536-bdZ7)中收到的回复

    其别人(冤家、网友、风投等)与我分享的内容

我从中过滤掉运用机器学习做产品的公司(如,运用机器学习提供数据分析的公司)、不常用的工具或没有人运用的工具之后,还有 202 个机器学习的工具。这里(https://docs.google.com/spreadsheets/d/1OV0cMh2lmXMU9bK8qv1Kk0oWdc_Odmu2K5sOULS9hHQ/)有残缺的列表。假如有你觉得应该包含但我没有列出来的工具,请告诉我。

免责声明

    这个列表是我在 2019 年的时分整理的,在过去的 6 个月,市场中能够会有一些变化。

    有一些科技公司有大量的工具,我并不能逐一罗列。如 Amazon Web Services 提供了超过 165 种残缺的服务。

    有许多不知名或者曾经不存在的公司并没有在此分析的数据之中。

本文包含以下 6 部分内容:

    概述

    机器学习的发展历史

    机器学习出路未卜

    机器学习运维(MLOps)面临的成绩

    开源与开放核心

    总结



概述

创建一个机器学习的产品(https://github.com/chiphuyen/machine-learning-systems-design),包含以下 4 个步骤:

    项目立项

    数据处理

    建模与训练

    提供产品服务

我将我统计出来的机器学习工具,根据这些工具对下面步骤的支持状况,对所无机器学习工具停止分类。当然,这外面不包含项目立项相关的内容,它需求的是项目管理工具,而不是机器学习工具。分类这件事情并没有看起来那么简单,很多工具都可以协助你完成多个事情。并且它们不置可否的解释,也并不能让我们很好了解它的作用,像下面的这些描画:“我们打破了数据迷信的极限”,“我们将 AI 项目转变成商业成果”,“像呼吸一样,随意运用你的数据”,还有我最喜欢的一句:“我们驰骋在数据迷信中。”

每个工具都有它最擅长的部分,我将包含多种才能的工具分类到它最擅长的那一类中。假如它擅长一切部分,我就将它们放在 N 合一这个类别中。当然,分类中还包含基础设备提供商,他们提供训练与存储的基础设备,并且大部分都是云服务提供商。



机器学习的发展历史

首先,我将这些工具发布的工夫停止了整理。假如这个工具是一个开源项目,我从该项目的第一次提交末尾,查找项目公开的工夫;假如是一家公司,我运用它在 Crunchbase 上注册的工夫作为工具的发布工夫。基于这些数据,我绘制了各类工具每年发布的数量图。


工具数量图


不出所料,数据中可以看到,随着深度学习的发展,在 2012 年末尾迎来迸发式的增长。

    前卷积神经网络时代(2012 年之前)

直到 2011 年,机器学习次要工作都是在建模和训练模型上,那时的一些框架,到如今还很盛行(如:Scikit-Learn),当然还有一些框架为如今的发展留下了深远的影响。很多机器学习工具末尾于 2012 年前,不断持续优化迭代到明天,直到它们 IPO(Cloudera、Datadog、Alteryx)或者被收买,或者成为社区盛行的开源项目(Spark、Flink、Kafka)。

    高速发展阶段(2012 - 2015 年)

当机器学习的社区采用“数据驱动”的方法时,机器学习的发展就变成了数据处理的发展。每年在每个类别中工具的发布数量,也明晰地展现出了这一点。在 2015 年,有 57% 数据处理工具。


工具数量增长曲线


    消费阶段(2016 年至今)

纯粹的技术研讨对机器学习范畴来说非常重要,但是大多数公司并没有足够的研讨经费支持技术研讨,除非对应的技术研讨能在短期内运用在真实的商业场景中。随着机器学习的研讨与发展,海量的数据与处理模型的增长,使得机器学习越来越触手可得。越来越多的人为他们的运用找到运用机器学习的场景,这也近一步添加了我们对机器学习工具的需求。

在 2016 年,Google 宣布运用神经网络来提高 Google 翻译的准确度(https://ai.googleblog.com/2016/09/a-neural-network-for-machine.html),这也是深度学习运用在真实商业场景中的先例之一。从那时起,有很多的机器学习工具被开发出来,协助我们更好的做人工智能的产品。



机器学习出路未卜

如今有很多人工智能相关的初创公司,它们中大多数都是将机器学惯用于它们的产品(如提供业务分析或客户支持等产品),而不是做机器学习工具的初创公司(创建工具来协助其别人完成产品)。用投资人的话来说,他们大多数都是在人工智能的垂直范畴。在 2019 年福布斯排行榜中,50 家人工智能公司,其中只要 7 家是做机器学习工具的公司。

当你去一家公司,告诉他们,运用你的产品可以减少一半客户支持的投入,因此运用类的产品可以更好的售卖、商业化。但是机器学习相关的工具却很难卖出去,但是这些工具对人工智能的影响非常大,由于他们的目的不是做某一个单一的运用程序,而是在做一个生态。许多公司可以提供相似的人工智能产品,但是在创建机器学习产品的流程中,通常很少有工具可以共存。

经过我广泛的搜索调查,我却只能找到大约 200 多个人工智能的工具,与传统软件相比,这点工具是非常微乎其微的。假如你想找一个传统 Python 运用程序的测试工具,花两分钟工夫,你在 Google 上至少能找到 20 个。但是假如你想找一个测试机器模型的工具,你就很难可以找到了。



机器学习运维(MLOps)面临的成绩

很多传统软件开发的工具也可以用于人工智能产品的开发中,但是,人工智能产品中有很多独有的应战,它们需求特有的工具去处理。

对于传统的软件工程师来说,写代码是最难的一部分。但对于机器学习来说,写代码只是应战中很小的一部分。开发一个可以在商业中运用的模型非常困难,并且成本很高。大多数公司并不会将重点放在模型的开发上,而是运用现有的模型。

对于机器学习来说,运用更多、更好的数据,可以完成更好效果的运用程序。大多数的公司都将重点放在数据优化上,而不是机器学习算法的优化上。由于数据的疾速变化,我们的机器学习运用程序也需求疾速的停止发布。在很多机器学习运用的场景中,你需求每天都停止模型更新。

机器学习算法的大小也是一个成绩。一个大型的 BERT 模型有 340M 的参数,整个算法大小约为 1.35GB。即便这个模型可以在你用户的设备(如手机)上安装,这个模型在新的样本上停止推理所花费的工夫也有能够使得运用程序毫无用途。举个例子:在运用输入法的时分,算出建议字符花费的工夫比你手动输入的工夫还长,那自动完成的模型就一点用都没有。

Git 运用了一行一行的比较方式,比较两个文本文件的差异,因此它对传统软件程序开发非常敌对。但是它并不适用数据集以及模型之间的差异比对。又如 Pandas 可以很好地停止数据处理,但是它不支持在 GPU 上运转。

CVS 等基于行的数据格式,非常合适在数据量小运用程序中运用。但假如你的运用程序有许多功能,并且这些功能只需求运用数据中的一个子集,这种状况下,运用基于行格式的方式仍需求加载一切的数据。PARQUET 和 OCR 等列格式的工具,针对上述的场景停止了相应的优化。

机器学习产品在发布上也面临着很多成绩:

    监控:如何知道你的数据分布发生了变化,你需求重新训练模型?例如:Dessa,Alex Krizhevsky 基于AlexNet 开发的,在 2020 年被 Square 收买;

    数据标签:如何疾速的给新的数据打标,或将曾经存在的数据停止重新打标来支持新的模型训练?例如:Snorkel;

    持续集成、持续交付:如何保证你的模型在每一次修正后都可以按照预期的停止工作,你不能够花费好几天的工夫去等待训练收敛的结果?例如:Argo;

    交付:如何打包并发布你的新模型?例如:OctoML;

    模型紧缩:如何将你的机器学习模型停止紧缩,让他可以在客户的设备上运转?例如:Xnor.ai 这家公司,由艾伦研讨所拆分出来,专注模型紧缩的初创企业,在 2018 年 5 月,估值 6200 万美元,获得 1460 万美元的融资。在 2020 年 1 月, 苹果以 2 亿美元收买了它,并关闭了它的网站。

    推理优化:如何提高你的模型推理速度?多步交融?低精度?减小模型可以使推理速度变得更快。例如:TensorRT;

    边缘设备:硬件设计让机器学习算法可以更疾速地运转在更廉价的设备上。例如:Coral SOM;

    隐私:如何运用用户的数据停止训练并且保证用户的隐私?如何让你的运用程序满足 GDPR ?例如:PySyft。

我根据这些机器学习工具次要处理的成绩绘制了下图:



工具数量

这些工具很大一部分都聚焦在数据处理上:数据管理、标记、数据查询、数据处理、数据生成等。这些数据处理工具旨在构建一个平台,数据处理是项目中资源最密集的阶段。假如有人在你的平台上,给你提供数据,你就能很容易为他们提供预先构建的训练模型。

建模和训练模型次要是框架来完成的。而深度学习框架竞争曾经逐渐趋于冷却,现次要是 PyTorch 和 TensorFlow 之间的竞争。以及一些基于这两个框架的更高层次的框架之间的竞争,它们围绕这两个框架来处理特定的义务:NLP 与 NLU 以及多模态成绩。这些框架都是分布式训练框架。这还有一个新的框架 JAX,很多厌恶 TensorFlow 的 Google 开发者都运用它。

如今有很多独立的工具用于一些实验跟踪,并且盛行的框架中都内置有他们本人的实验跟踪的功能。超参数是一个非常重要的功能,有些人留意到他们也不奇异,但是他们似乎都没有抓住重点,超参数的瓶颈并不是设置参数,而是高效的计算才能。

另一个没有被处理的重要成绩是在部署与服务上,在这一方面缺乏处理方案的缘由在于研讨人员与运维人员之间短少沟通。在有才能从事人工智能研讨的公司中(通常是大公司),研发团队与运维团队几乎都是分开的,两个团队之前的合作只能经过(产品、项目)经理来完成。而在小公司中,员工能看到全局,但是他们会遭到产品需求的限制。只要多数初创公司,这些公司延聘了有阅历的运维工程师和有阅历的研讨人员一同协同办公,成功的处理了这一成绩。并且这些初创公司占据了人工智能很大一部分市场。



开源与开放核心

在 202 个工具中,其中有 109 个是开源软件(OSS)。即便有些工具不是开源的,它们大多数也会附带一些开源的工具。

这里有几个开源软件的缘由:一是一切支持开源的人多年来不断都在说的缘由,透明、协作、灵敏,但这一个缘由似乎只是一个道德上的约束。另一个是,客户并不想在看不到源代码的状况下运用新的工具,由于在看不到源代码的状况下,假如这个工具被关闭,他们将不得不重写代码,完成这个功能。

开源并不意味着不盈利,也不意味着收费。开源的维护很费时,并且成本也很高。听说,TenserFlow 团队有接近 1000 人。公司不会在没有商业目的的状况下提供开源软件。假如有更多的人运用他们的开源工具,就会有更多的人了解他们,信任他们的技术,并且会购买他们的专有工具,并且也能让更多的人希望加入他们公司。

Google 经过推行 TenserFlow,希望可以让更多的人运用他们的云服务。NVIDIA 维护 cuDF 库也是希望有更多的人来买他们的 GPU。Databricks 收费提供 MLflow,但出售他们的数据分析平台。Netflix 最近成立了专门的机器学习团队,发布他们自研的 Metaflow 框架,用以吸引人才。自然言语处理工具 SpaCy 是收费的,但是 Prodigy 却是收费的。

开源曾经变成了一种行业标准,创业公司很难从中找到一种可行的商业形式。任何一个刚起步的公司,都必须与现有的开源工具停止竞争。假如你也仅仅只开放核心,你需求细心思索,哪些特性是要包含在开源软件中,而哪些是要放在付费的版本中。既要让用户不觉得你贪心,也要可以让收费用户付费。



总结

关于人工智能的泡沫能否会幻灭,人们也是议论纷纷。如今,人工智能上很大一部分投资都在自动驾驶上,但是到如今照旧没有一款完全自主驾驶的汽车出现。一些人以为投资者将会对人工智能得到希望,Google 也冻结了在机器学习上的人员招聘,Uber 解雇了一半的人工智能研讨团队。有传闻说,学习机器学习相关的人员远多于机器学习相关的工作岗位。

如今是进入人工智能范畴的好机遇吗?我置信,如今是有在炒作人工智能的概念,但在某一个时辰,会冷静上去。有能够这个工夫点曾经发生了。我不置信机器学习会消逝,有才能停止机器学习研讨的公司会越来越少,但是绝不会缺乏将机器学习现有的工具引入产品的公司。

假如必须在人工智能专家和工程师之间做一个选择,那么请选择工程师。对于工程师来说,学习人工智能相关知识会很容易,但是对于人工智能专家来说,成为一个很好的工程师要困难得多。假如你是一个优秀的工程师,并且可以为构建人工智能工具而努力,我会由衷地感激你。

致谢:感激 Andrey Kurenkov 在我撰写本文时所做出的指点。感激 Luke Metz 的审校。

英文:What I learned from looking at 200 machine learning tools

链接:https://huyenchip.com/2020/06/22/mlops.html

作者:Chip Huyen,计算机迷信家,现就职于硅谷的一家人工智能初创公司,专注于机器学习消费流程。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

大神点评3

nuoya00888 2020-6-30 14:25:52 显示全部楼层
对不起,我就来看看,不说话
回复

使用道具 举报

撒哈拉的寂寞 2020-7-1 13:01:25 来自手机 显示全部楼层
顶一个,顶一个,顶一个
回复

使用道具 举报

尕燕子 2020-7-2 13:31:05 显示全部楼层
这帖子写的不错
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies