遍覽200多個(gè)機(jī)器學(xué)習(xí)工具后,我學(xué)到了啥
掃描二維碼
隨時(shí)隨地手機(jī)看文章
大數(shù)據(jù)文摘出品
來源:huyenchip
編譯:Fisher、Andy
因?yàn)闄C(jī)器學(xué)習(xí)研究的放緩,以及大家對產(chǎn)業(yè)化的需求。近來大家對MLOps的關(guān)注越來越高,特別是其中涉及到的各種各樣的工具。
在這篇文章中,Chip小哥統(tǒng)計(jì)了兩百多個(gè)機(jī)器學(xué)習(xí)相關(guān)工具,并且對整個(gè)該領(lǐng)域的發(fā)展和現(xiàn)狀進(jìn)行了回顧,同時(shí)列出機(jī)器學(xué)習(xí)開發(fā)的難點(diǎn)特別是和傳統(tǒng)軟件開發(fā)的不同點(diǎn),最后還特意討論了開源對該領(lǐng)域的影響。
最近,為了更好地了解機(jī)器學(xué)習(xí)領(lǐng)域工具的整體情況,我決定徹底調(diào)查每個(gè)能找到的人工智能/機(jī)器學(xué)習(xí)工具。整個(gè)過程中參考的資源包括:
Full Stack Deep Learning LF AI Foundation landscape AI Data Landscape 各媒體評選出的AI創(chuàng)業(yè)公司榜單 推特和領(lǐng)英上收到的帖子回復(fù) 別人分享給我的工具列表(包括朋友、陌生人、風(fēng)險(xiǎn)投資人)
在篩掉只有應(yīng)用程序的公司(如用機(jī)器學(xué)習(xí)提供商業(yè)分析的公司)、未處于積極開發(fā)中的工具,以及沒人用的工具后,最后剩下202個(gè)工具。
完整列表如下:
https://docs.google.com/spreadsheets/d/1OV0cMh2lmXMU9bK8qv1Kk0oWdc_Odmu2K5sOULS9hHQ/edit?usp=sharing
如果有工具你覺得應(yīng)該列入但未被列入,請務(wù)必在留言區(qū)補(bǔ)充!
免責(zé)聲明:
這個(gè)工具列表創(chuàng)建于19年11月,現(xiàn)在情況肯定不同了; 有些科技公司提供的一套工具數(shù)量太多,難以一一列舉,如Amazon Web Services提供超過165項(xiàng)功能齊全的服務(wù); 有很多不知名的創(chuàng)業(yè)公司,我可能并不知道,甚至還有些都還沒聽說就倒閉了。
概述
我認(rèn)為可以將機(jī)器學(xué)習(xí)生產(chǎn)流程歸納成4個(gè)主要步驟:
項(xiàng)目創(chuàng)建 數(shù)據(jù)管道 建模和訓(xùn)練 上線服務(wù)
基于某個(gè)工具是服務(wù)于上述流程中哪個(gè),我對工具進(jìn)行了分類。我沒將項(xiàng)目創(chuàng)建部分包含進(jìn)來,因?yàn)檫@一步需要的是項(xiàng)目管理工具,而不是機(jī)器學(xué)習(xí)工具。分類有時(shí)候并非簡單粗暴的,因?yàn)橛行┕ぞ呖赡苌婕岸鄠€(gè)步驟。而且這些工具模棱兩可的描述也讓人頭大:什么“我們突破了數(shù)據(jù)科學(xué)的極限”,“將AI項(xiàng)目轉(zhuǎn)化為現(xiàn)實(shí)世界的商業(yè)成果”,"讓數(shù)據(jù)像空氣一般自由流動(dòng)",還有我個(gè)人最pick的一句:“我們生活于數(shù)據(jù)科學(xué)之上,呼吸于數(shù)據(jù)科學(xué)之中”。
對于涵蓋了流程中多個(gè)步驟的工具,我按照其最為人所知的功能來分類。有些工具多個(gè)分類的功能都為大家所熟悉,我就把它們都放在“一體化”(All-in-one)類中。我還增加了“基礎(chǔ)設(shè)施”(Infrastructure)這一類,來納入那些提供基礎(chǔ)設(shè)施來訓(xùn)練和存儲(chǔ)模型的公司,它們大部分都是“云”提供者。
整體發(fā)展歷程
對此,我記錄了每個(gè)工具推出的年份。對于開源項(xiàng)目,我通過查看首次提交時(shí)間來確定項(xiàng)目是何時(shí)公開的。對于公司,我在Crunchbase網(wǎng)站上查找它的創(chuàng)立年份。然后我繪制了各個(gè)類別工具數(shù)目隨時(shí)間的變化圖。
隨年份累加的工具數(shù)目圖:左上角圖例依次為一體化、數(shù)據(jù)管道、基礎(chǔ)設(shè)施、建模和訓(xùn)練、提供服務(wù)。
正如所料,數(shù)據(jù)顯示該領(lǐng)域從12年才開始急速發(fā)展,正好伴隨著人們對深度學(xué)習(xí)的重新關(guān)注開始。
前AlexNet時(shí)期(12年之前)
直到11年,該領(lǐng)域都是以建模和訓(xùn)練工具為主。一些框架現(xiàn)在還很流行(如scikit-learn),或影響了現(xiàn)在的框架(如Theano)。在12年之前創(chuàng)立并存活至今的工具,有的已上市(Cloudera、Datadog、Alteryx),有的被收購(Figure Eight),有的成為了圈內(nèi)非常熱門的開源項(xiàng)目(Spark、Flink、Kafka)。
發(fā)展時(shí)期(2012年到2015年)
隨著機(jī)器學(xué)習(xí)圈開始了"使勁喂數(shù)據(jù)"玩法后,機(jī)器學(xué)習(xí)已經(jīng)變成了數(shù)據(jù)主導(dǎo)的領(lǐng)域??疵磕晖瞥龅母鱾€(gè)類別工具數(shù)時(shí),這點(diǎn)尤其明顯。15年,57%(82個(gè)中的47個(gè))是數(shù)據(jù)管道工具。
每年推出的各個(gè)類別的工具數(shù)。左上角圖例依次為一體化、提供服務(wù)、基礎(chǔ)設(shè)施、數(shù)據(jù)管道、建模和訓(xùn)練。
產(chǎn)業(yè)化時(shí)期(2016年至今)
雖然純研究很重要,但大多數(shù)公司都負(fù)擔(dān)不起成本,除非研究能在短期就帶來商業(yè)應(yīng)用。隨著機(jī)器學(xué)習(xí)的研究、數(shù)據(jù)和現(xiàn)成模型越來越易得,有更多的人和組織會(huì)想要直接找應(yīng)用場景,這就增加了對機(jī)器學(xué)習(xí)產(chǎn)業(yè)化工具的需求。
在16年,谷歌宣布用神經(jīng)機(jī)器翻譯來改進(jìn)谷歌翻譯服務(wù),這是深度學(xué)習(xí)在現(xiàn)實(shí)中的首批重要應(yīng)用中一個(gè)。此后,大家開發(fā)了各種工具來幫助機(jī)器學(xué)習(xí)類應(yīng)用部署上線。
整體發(fā)展現(xiàn)狀
盡管AI領(lǐng)域初創(chuàng)公司很多,但大多數(shù)是應(yīng)用型的(提供商業(yè)分析或客戶支持等應(yīng)用),而不是工具型的(打造工具來幫助其他公司開發(fā)應(yīng)用)?;蛘哂蔑L(fēng)投的行話來講,大多數(shù)創(chuàng)業(yè)公司都是垂直細(xì)分AI(Vertical AI)。在19年的福布斯“50家AI創(chuàng)業(yè)公司”榜單中,只有7家是工具型公司。
應(yīng)用類更好銷售,因?yàn)槟憧梢灾苯尤ヒ患夜就其N說:“我們可以讓你們一半的客戶支持業(yè)務(wù)自動(dòng)化”。相比起來,雖然工具類要更長時(shí)間來銷售,但會(huì)產(chǎn)生更大影響,因?yàn)槟悴皇顷P(guān)注單獨(dú)孤立的應(yīng)用程序,而是關(guān)注整個(gè)生態(tài)的一部分。對于某一類應(yīng)用,可以有多家供應(yīng)商共存;但對于生態(tài)的一環(huán),通常只有少數(shù)工具能存活下來。
這次,經(jīng)過大量搜索后,我也只找到大約200個(gè)AI工具,和傳統(tǒng)軟件工程的工具數(shù)量相比還很少。比如,如果你想對傳統(tǒng)的Python應(yīng)用做測試,2分鐘之內(nèi)就能在谷歌上搜到至少20種工具。而如果你想對機(jī)器學(xué)習(xí)模型做測試,那一個(gè)可能也搜不到。
機(jī)器學(xué)習(xí)開發(fā)所面臨的問題
許多傳統(tǒng)的軟件工程工具都能用來開發(fā)或部署機(jī)器學(xué)習(xí)應(yīng)用。但也有很多問題是機(jī)器學(xué)習(xí)應(yīng)用特有的,所以也需要專門的工具。
在傳統(tǒng)的軟件工程中,寫代碼部分是難點(diǎn)。但在機(jī)器學(xué)習(xí)中,寫代碼只是整體的一小部分。開發(fā)一個(gè)新模型,而且對實(shí)際任務(wù)提供顯著提升,這不光難,成本也很高。所以大部分公司不會(huì)專注于開發(fā)模型,而是用現(xiàn)成模型,例如 “BERT大法解決一切”。
對于機(jī)器學(xué)習(xí),一般有最多/最好數(shù)據(jù)的應(yīng)用就是最好的。因此,大多數(shù)公司并不太專注于改進(jìn)深度學(xué)習(xí)算法,而是專注于改善數(shù)據(jù)質(zhì)量。由于數(shù)據(jù)可能會(huì)快速變化,所以機(jī)器學(xué)習(xí)應(yīng)用也要求更快的開發(fā)和部署周期。在很多時(shí)候,你可能得每晚都部署一個(gè)新模型。
模型的大小也是一個(gè)問題。經(jīng)過預(yù)訓(xùn)練的大型 BERT 模型有340M個(gè)參數(shù),占1.35GB空間。就算能裝在移動(dòng)終端比如手機(jī)上,因?yàn)槠渫茢嘁ǖ臅r(shí)間太長,所以對很多應(yīng)用場景也是沒意義的。比如,如果輸入法提示下一個(gè)字符所花時(shí)間比你直接輸入還要長,那相應(yīng)的自動(dòng)補(bǔ)全模型也就沒意義了。
Git通過逐行比較來進(jìn)行版本管理,這對大多數(shù)傳統(tǒng)程序很有效。但它不適用于對數(shù)據(jù)集或模型做版本管理。對于大多數(shù)傳統(tǒng)數(shù)據(jù)框架的操作,Pandas就很好了,但它卻不能在GPU上跑。
基于行的數(shù)據(jù)格式(比如CSV)對于使用較少數(shù)據(jù)的應(yīng)用效果很好。但如果你的樣本包含許多特征,而你只想用其中一個(gè)子集,那么基于行的數(shù)據(jù)格式仍需要先載入所有特征才行。像PARQUET和OCR這樣的列式文件格式對處理這種情況進(jìn)行了優(yōu)化。
機(jī)器學(xué)習(xí)應(yīng)用開發(fā)所面臨的一些問題:
監(jiān)測:如何得知你的數(shù)據(jù)分布發(fā)生了變化,然后重新訓(xùn)練模型?例如:Dessa,由AlexNet的Alex Krizhevsky支持,于20年2月被Square收購。 數(shù)據(jù)標(biāo)記:如何快速標(biāo)記新數(shù)據(jù)或針對新模型重新標(biāo)記現(xiàn)有數(shù)據(jù)?例如:Snorkel CI/CD測試:如何運(yùn)行測試來確保模型在改動(dòng)后仍能發(fā)揮預(yù)期作用?你不能每次都花幾天時(shí)間重新訓(xùn)練直到收斂。例如:Argo。 部署:如何打包和部署一個(gè)新模型或替換掉一個(gè)現(xiàn)有模型?例如:OctoML。 模型壓縮:如何壓縮模型來適應(yīng)終端設(shè)備?例如:Xnor.ai是從Allen Institute分拆出來的一家創(chuàng)業(yè)公司,專注模型壓縮。2018年5月,該公司以6200萬美元的估值得到1460萬美元融資。2020年1月,蘋果花了約2億美元收購了它,并關(guān)掉了它的網(wǎng)站。 推斷優(yōu)化:如何加快模型的推斷時(shí)間?通過合并若干操作?通過降低模型精度?模型更小會(huì)讓推斷速度更快。例如:TensorRT。 邊緣設(shè)備:專門設(shè)計(jì)的硬件,使機(jī)器學(xué)習(xí)算法運(yùn)行起來更快成本更低。例如:Coral SOM。 隱私:如何才能既通過用戶數(shù)據(jù)來訓(xùn)練模型,同時(shí)又保護(hù)用戶隱私?如何才能使流程符合歐盟《通用數(shù)據(jù)保護(hù)條例》的要求?例如:PySyft。
下面這張圖里,橫坐標(biāo)是這些工具設(shè)法解決的主要問題,縱坐標(biāo)是針對特定問題的工具數(shù)量。
可以看出,很大一塊兒比例集中在數(shù)據(jù)管道方面:數(shù)據(jù)管理、數(shù)據(jù)標(biāo)記、數(shù)據(jù)庫/查詢、數(shù)據(jù)處理、數(shù)據(jù)生成。這類工具可能志在發(fā)展成一體化平臺。因?yàn)閿?shù)據(jù)處理是項(xiàng)目中最耗費(fèi)資源的階段,一旦你讓人們把數(shù)據(jù)放到你的平臺上,你會(huì)很想用這些數(shù)據(jù)弄出一些預(yù)訓(xùn)練模型什么。
而針對建模和訓(xùn)練方面的工具大多是框架。深度學(xué)習(xí)框架的競爭現(xiàn)在差不多大局已定,主要是PyTorch和TensorFlow兩個(gè)框架,此外還包括基于這兩個(gè)框架的更高層次的框架,用于特定任務(wù),比如自然語言處理(NLP)、自然語言理解(NLU)以及多模態(tài)問題?,F(xiàn)在還有可以進(jìn)行分布式訓(xùn)練的框架。以及最近谷歌推出的新框架JAX,每個(gè)討厭TensorFlow的谷歌黨都對它夸夸不停。
還有一些獨(dú)立工具針對實(shí)驗(yàn)追蹤,而流行框架內(nèi)也有自己的實(shí)驗(yàn)跟蹤功能。超參數(shù)調(diào)優(yōu)很重要,所以有好幾個(gè)工具就專注于此,但好像沒有哪個(gè)被廣泛接受—;—;因?yàn)槌瑓?shù)調(diào)優(yōu)的瓶頸不在設(shè)置上,反而在調(diào)優(yōu)過程中所需算力上。
留待解決的最令人興奮的問題是在部署和服務(wù)方面。缺乏服務(wù)解決方案的原因之一是研究人員和產(chǎn)品工程師之間缺乏溝通。在那些有能力進(jìn)行AI研究的公司(一般是大公司),研究團(tuán)隊(duì)與部署團(tuán)隊(duì)是分開的,兩個(gè)團(tuán)隊(duì)只通過帶有字母“p”各種經(jīng)理溝通:產(chǎn)品經(jīng)理(product managers)、項(xiàng)目經(jīng)理(project managers),以及項(xiàng)目群經(jīng)理(program managers)。小公司的員工可以看到全棧的情況,但受制于迫在眉睫的產(chǎn)品需求,也沒什么時(shí)間搞。只有少數(shù)創(chuàng)業(yè)公司設(shè)法填補(bǔ)這個(gè)空白,這些公司通常是由有為的研究人員創(chuàng)辦,而且有足夠資金來雇用熟練的工程師,隨時(shí)準(zhǔn)備在AI工具市場上搶占份額。
開放源碼和開放內(nèi)核
我查看的202種工具中,有109種是開源軟件。即使是不開源的那些,通常也有相伴的開源工具。
開源興盛有若干原因。其中一個(gè)原因是所有支持開源的人多年來一直在談?wù)摰模和该鞫?、協(xié)作性、靈活性,而且這似乎成了道德規(guī)范??蛻艨赡懿辉甘褂靡粋€(gè)沒法看到源代碼的新工具。否則,一旦這個(gè)工具停止運(yùn)營(初創(chuàng)公司里經(jīng)常發(fā)生),就得悲劇地不得不重寫代碼。
當(dāng)然,開源軟件并不代表非盈利和免費(fèi),其維護(hù)非常費(fèi)時(shí),而且昂貴。據(jù)傳TensorFlow團(tuán)隊(duì)的規(guī)模接近1000人。公司在提供開源工具時(shí)必須得考慮其商業(yè)目標(biāo),例如,越多人使用他們的開源工具,就有越多人了解他們,信任他們的技術(shù),并因此去購買他們的付費(fèi)工具或想加入他們的團(tuán)隊(duì)。
比如谷歌就希望推廣它的工具,好讓大家用它的云服務(wù)。英偉達(dá)維護(hù)著cuDF(以及之前的dask),這樣就能賣出更多GPU。Databricks免費(fèi)提供MLflow,而同時(shí)在出售其數(shù)據(jù)分析平臺。就在最近,Netflix組建了專門的機(jī)器學(xué)習(xí)團(tuán)隊(duì)并發(fā)布了他們的Metaflow框架,此舉使他們進(jìn)入機(jī)器學(xué)習(xí)領(lǐng)域,得以招攬人才。Explosion免費(fèi)提供SpaCy,但對Prodigy收費(fèi)。HuggingFace免費(fèi)提供transformers,但我還不知道他們怎么賺錢的(哈哈哈,良心企業(yè))。
由于開源軟件已經(jīng)成了一種標(biāo)準(zhǔn),初創(chuàng)公司要找到一種行之有效的商業(yè)模式還是挺難的。因?yàn)槿魏我患夜緞?chuàng)立后都必須與現(xiàn)有開源工具競爭。如果你遵循開放內(nèi)核的商業(yè)模式,那就必須決定哪些功能放在開源版本里,哪些放在付費(fèi)版本里,而且還不顯得吃相太難看;或者琢磨如何讓免費(fèi)用戶開始付費(fèi)。
結(jié)論
一直以來都有很多討論,討論AI泡沫是否會(huì)破滅?,F(xiàn)今AI投資的很大一部分是在自動(dòng)駕駛汽車上。由于完全自動(dòng)駕駛離商業(yè)化還比較遙遠(yuǎn),所以有人猜測投資者會(huì)對AI行業(yè)徹底失望。加上現(xiàn)在谷歌已經(jīng)停止了機(jī)器學(xué)習(xí)研究員的招聘,而Uber裁掉了AI團(tuán)隊(duì)一半的研究人員。這兩家公司的決定都是在新冠疫情前做出的。有傳言稱,由于大量的人在上機(jī)器學(xué)習(xí)課,所以這方面的技術(shù)人員將會(huì)飽和。
現(xiàn)在還是進(jìn)入機(jī)器學(xué)習(xí)領(lǐng)域的好時(shí)機(jī)嗎?我相信對人工智能的炒作確實(shí)存在,而且是時(shí)候冷靜下來了。但我不認(rèn)為機(jī)器學(xué)習(xí)領(lǐng)域會(huì)消失,雖然有能力做機(jī)器學(xué)習(xí)研究的公司可能會(huì)減少,但那些需要各種工具把機(jī)器學(xué)習(xí)整合產(chǎn)業(yè)化的公司還是一直需要的。
如果你必須在工程師和機(jī)器學(xué)習(xí)專家之間選擇的話,那我建議你選擇工程師吧。優(yōu)秀的工程師更容易掌握機(jī)器學(xué)習(xí)知識,但機(jī)器學(xué)習(xí)專家要成為優(yōu)秀的工程師就難多了。如果你成了一名工程師,為機(jī)器學(xué)習(xí)領(lǐng)域開發(fā)出很棒的工具,我也會(huì)永遠(yuǎn)感激你的!
相關(guān)報(bào)道:https://huyenchip.com/2020/06/22/mlops.html
【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】