找回密码
 立即注册
搜索

“机器学习还是很难用!”

机器学习照旧很难用,但状况末尾有所改善了。



作者 | Caleb Kaiser

译者 | 香槟超新星,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

我是一名Cortex贡献者,Cortex是一个用于在消费中部署模型的开源平台。首先声明,以下内容是基于我对一些机器学习团队的观察总结出来的,而不是一份针对该行业的学术调查。

用一个在软件行业中无处不在的东西举例子吧,就比如数据库。建立一个数据库意味着什么?对于一名Postgres贡献者来说,“创建一个数据库”就像一百万行C代码。对于一名Rails开发者来说,看起来就仅仅是一句rake db:create。

显然,二者都没错,只不过它们代表的笼统级别不同,适用于不同工程师的不同侧重点。

这就是软件构建本人的方式。为古代运用程序提供支持的基本软件——数据库、Web服务器、央求路由器、哈希库等等——在很大程度上得到了广泛传播,是由于它们的笼统层使得非专业人士也可以访问它们。

机器学习历来缺乏这种笼统层,这限制了它的采用率。但是如今,状况正在发生变化。新的一波专门努力于让机器学习运用起来更容易的项目正在出现。



模型需求一个对开发人员来说更敌对的界面

想要在消费环境中运用机器学习,你需求:

    设计模型方面的专业知识

    足够的数据以及资金来训练你的模型

    ML基础架构知识(用于部署模型)

这样的结果就是,任何运用ML的项目都需求由数名专家来亲身执手。这个瓶颈亟待消弭。

应该让那些没无机器学习背景的开发人员也可以在消费中运用机器学习才对,就像一名开发人员能够没有密码学方面的背景,但照旧可以用哈希库来保护用户数据一样。

幸而,这终于要发生了。



补偿机器学习笼统的缺失

为了使ML的运用得到普及,开发人员必须可以对机器学习有一个较高程度的了解——什么是模型、微调、推论等等——并经过可用的笼统来构建运用。

许多必要的笼统曾经在研讨中了,它们属于几个关键的重点范畴:

1.我们需求一种更简单的方法来训练模型

理想状况是,对于许多运用机器学习的用例而言,根本不需求从头末尾训练新模型。

例如,假如你正在开发一个会话代理,那么几乎可以一定的一点就是,Google的Meena会表现得比你的模型更好。假如你正在开发一个文本生成器,那你应该去用OpenAI的GPT-2,而不是本人从头末尾构建。对于对象检测来说,YOLOv3这样的模型能够是你最好的选择。

得益于转移学习(transfer learning,将神经网络的“知识”微调到一个新范畴的过程),你可以只用相对少的数据,就能根据你的义务来对这些开源的最新模型停止微调。

例如,有了gpt-2-simple这样的新库,你就可以运用简单的命令行界面来微调GPT-2了:
$ gpt_2_simple finetune your_custom_data.txt
有了这一笼统层,开发人员就不需求深化了解ML的专业知识了,他们只需求知道如何微调就可以了。

而且可用的训练笼统远不止gpt-2-simple一个。Google Cloud AutoML为用户提供了一个GUI(用户图形界面),可以让用户选择本人的数据集并自动训练一个新模型,无需编写代码:



图源:Google Cloud Vision

Sundar Pichai在一篇有关AutoML的文章中说:“当今需求汇集几位博士才能设计新的神经网络,而我们希望AutoML在三到五年内可以让成千上万的开发人员们都能为他们本人的特殊需求设计新的神经网络。”

2.从模型生成预测的过程必需要简单

好的,假如说曾经可以轻松地针对你的特定义务得到一个训练好的模型了。你要如何根据该模型生成预测呢?

可以提供模型服务功能的项目有很多,其中许多都与盛行的ML框架相关。例如,TensorFlow有TF Serving,而ONNX有ONNX Runtime。

除了科技巨头们之外,还有许多独立的开源项目也在专注于处理这个成绩。例如,Bert Extractive Summarizer项目可以让运用Google的BERT提取文本摘要的过程变得愈加轻松。以下是文档中的示例:
from summarizer import Summarizer
body = 'Text body that you want to summarize with BERT'body2 = 'Something else you want to summarize with BERT'model = Summarizermodel(body)model(body2)
运用该库生成预测的过程就像运用一个import语句以及调用一次Summarizer一样简单。

随着有越来越多这样的项目的启动以及开发,开发人员无需过多深化了解模型本身就能更轻松地用模型生成预测了。

3.模型的部署必需要简单

最后的瓶颈是基础架构。

为一个玩具运用程序提供预测是简单而直接的,但是当你的程序需求扩展规模时,状况就会变得困难起来。以GPT-2为例:

    GPT-2大于5 GB。你需求一台更大的,那么也就必定更贵的服务器来托管这么大的模型。

    GPT-2非常吃算力。为了提供单个预测,GPT-2可以100%的应用率占用CPU数分钟。即便有GPU,单个预测仍能够需求花费数秒。对比之下,Web app只需用一个CPU就可以为数百个并发用户提供服务。

    GPT-2非常吃内存。除了宏大的磁盘空间和计算需求之外,GPT-2还需大量的内存才能保证运转而不会崩溃。

为了应对大批的用户增长,你也需求将基础架构扩展到运用程序的许多副本。这意味着需求运用Docker对模型停止容器化,运用Kubernetes对容器停止编排,以及经过你运用的云平台来配置自动扩展(autoscaling)。

你需求学会一整套工具才能搭建好用于处理机器学习部署的基础架构,而大多数不具有专业背景的开发人员对其中很多工具都太不熟习:




机器学习基础架构技术栈

为了让开发人员可以运用机器学习,需求对机器学习的基础结构停止笼统化。这就是像Cortex这样的项目登场的时分了。(残缺披露:我是一名Cortex贡献者)。

Cortex经过一个配置文件以及一个命令行界面对模型部署的基础开发停止了笼统:



材料来源:Cortex Repo

Cortex这类项目的目的很简单:拿出一个训练后的模型,并将其转化为任何开发人员都能用的预测API。



让运用型机器学习轻松起来

我想讲清的一点是,机器学习背后的数学原理将永远都是很难懂的。只会调用个predict函数的话,是不能够成为机器学习专家的。重点是,一名开发人员不必非得成为一名机器学习专家,就可以在本人的运用程序中运用ML。

机器学习的生态社区终于要将重心放在简化运用型ML上了。仅会一点机器学习知识的开发人员可以对最新模型停止微调,将其包装在API中,并运用开源,直观的笼统将其部署在可扩展的基础架构上。

结果就是,运用型机器学习将变得愈加容易——而且经过这种扩展,几乎一切开发者都能用得上机器学习了。

原文:https://towardsdatascience.com/machine-learning-is-still-too-hard-to-use-e344773725af

作者简介:Caleb Kaiser,Cortex Labs创始团队。

本文为CSDN翻译文章,转载请注明出处。



☞AI 时代,为什么程序员很贵?

☞“生命游戏之父”因新冠肺炎逝世,回顾数学顽童的终身

☞天呐,你居然还在用 try–catch-finally

☞北京四环堵车引发的智能交通大构想

☞你公司的虚拟机还闲着?基于Jenkins和Kubernetes的持续集成测试实际了解一下!

☞从Web1.0到Web3.0:详析这些年互联网的发展及将来方向

本帖子中包含更多资源

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

x
回复

使用道具 举报

大神点评3

Ca07ki1 2020-9-5 15:20:49 显示全部楼层
我有个小建议,楼主把内容写详细点吧才会吸引更多读者呀。
回复

使用道具 举报

惠州阿里 2020-9-6 15:41:21 显示全部楼层
嘘,低调。
回复

使用道具 举报

屌丝2r 2020-9-7 14:39:54 显示全部楼层
话不多说,【抱拳了,老铁】。
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies