2020之最:最實(shí)用的機(jī)器學(xué)習(xí)工具有哪些?
就如同制作米其林菜肴,擁有井井有條的廚房固然重要,但可選擇的東西太多也著實(shí)讓人煩惱,建立良好的機(jī)器學(xué)習(xí)(ML)應(yīng)用程序也是如此。
所以,小編將重點(diǎn)介紹一些可用于交付專業(yè)項(xiàng)目的工具,分享想法和備選方案,并開(kāi)展一個(gè)快速的調(diào)查。任何關(guān)于工具的討論給出的選項(xiàng)總是無(wú)法窮盡,但下面這幾種將是最有用和最簡(jiǎn)單的。
當(dāng)然啦,如果你有其他更好的選擇,也歡迎在評(píng)論區(qū)告訴小芯。(免責(zé)聲明:本帖未署名,且未受到贊助。小編將數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)兩個(gè)名詞互換使用。)
常見(jiàn)問(wèn)題
“如何構(gòu)建優(yōu)秀的機(jī)器學(xué)習(xí)應(yīng)用程序?”
與數(shù)據(jù)科學(xué)家、正在尋求轉(zhuǎn)型的專業(yè)人員以及團(tuán)隊(duì)經(jīng)理溝通的過(guò)程中,這個(gè)問(wèn)題以各種形式多次出現(xiàn)。
交付專業(yè)數(shù)據(jù)科學(xué)項(xiàng)目涉及很多方面,實(shí)際上它在廚房做飯很相似:有原料(數(shù)據(jù))、食譜(設(shè)計(jì))、烹飪過(guò)程(獨(dú)到的方法)、最后是實(shí)際的廚房(工具)。
本文遍歷了小編的“廚房”,重點(diǎn)介紹了在設(shè)計(jì)、開(kāi)發(fā)和部署全棧機(jī)器學(xué)習(xí)應(yīng)用程序中最有用的工具——這些解決方案或與系統(tǒng)融合,或能夠在生產(chǎn)環(huán)境中服務(wù)于用戶。
勢(shì)不可擋的可能性
這是最好的時(shí)代。如果在谷歌中搜索“機(jī)器學(xué)習(xí)工具”或咨詢顧問(wèn),可能會(huì)得到以下信息:
2019數(shù)據(jù)&人工智能全景 | 圖源:GIPHY
你能得到太多的工具,組合的可能性是無(wú)限的,這勢(shì)不可擋,卻也令人迷茫。你需要去縮小范圍。但要注意的是,完美的安裝依舊不存在,而這取決于用戶的需求和限制條件。簡(jiǎn)而言之,最適合的才是最好的。
小編的優(yōu)先列表如下(無(wú)先后之分):
- 免費(fèi)
- 工程大于研究
- 易于學(xué)習(xí)和安裝
- 只要能完成工作就好
- 久經(jīng)考驗(yàn)的(應(yīng)用程度&工具成熟度)
- 在創(chuàng)業(yè)或大型企業(yè)被應(yīng)用于大型或小型項(xiàng)目
注意:小編99%的時(shí)間里都會(huì)使用Python 。因此,本文推薦的工具要么和Python完美適配,要么本地就有Python。小編尚未使用其他編程語(yǔ)言(例如R或Java)對(duì)它們進(jìn)行測(cè)試。
冰箱:數(shù)據(jù)庫(kù)
PostgreSQL
這是一個(gè)免費(fèi)的開(kāi)源關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),擁有可擴(kuò)展性和技術(shù)標(biāo)準(zhǔn)合規(guī)性。它旨在處理各種工作負(fù)載,包括單臺(tái)機(jī)器、數(shù)據(jù)倉(cāng)庫(kù)或擁有多個(gè)并發(fā)用戶的Web服務(wù)。
圖源:medium.com
備選方案: MySQL、SAS、IBM、DB2、Oracle、MongoDB、Cloudera、GCP、 AWS、Azure
廚房臺(tái)面:部署Pipeline工具
Pipeline工具對(duì)于開(kāi)發(fā)的速度和質(zhì)量至關(guān)重要。這一工具的目標(biāo)是在最少人為干預(yù)的情況下快速進(jìn)行迭代。小編有一個(gè)運(yùn)行良好的安裝教程,想要知道更多詳細(xì)信息,請(qǐng)參閱我的文章——12小時(shí)機(jī)器學(xué)習(xí)挑戰(zhàn),想“偷懶”一定要盡早嘗試~
(https://towardsdatascience.com/build-full-stack-ml-12-hours-50c310fedd51)
小編的作品:12-小時(shí)機(jī)器學(xué)習(xí)挑戰(zhàn)
Pytest
架構(gòu)使編寫(xiě)小型測(cè)試變得容易,但需擴(kuò)展之后,才支持針對(duì)應(yīng)用程序和庫(kù)的復(fù)雜功能測(cè)試。它節(jié)省了手動(dòng)測(cè)試的大量時(shí)間,如果每次更改代碼都需要測(cè)試某些東西,Pytest的自動(dòng)化將會(huì)幫助到你。
備選方案: Unittest
Github
它提供了Git的分布式版本控制和源代碼管理(SCM)功能,當(dāng)然還包括自帶的功能。它為每個(gè)項(xiàng)目提供訪問(wèn)控制和多種協(xié)作功能,例如功能請(qǐng)求、錯(cuò)誤跟蹤、任務(wù)管理和wikis。
備選方案: BitBucket, GitLab,DVC
PyCharm 社區(qū)版
這是一個(gè)在計(jì)算機(jī)編程中使用的集成開(kāi)發(fā)環(huán)境(IDE),專門(mén)用于Python語(yǔ)言。它是由捷克JetBrains公司開(kāi)發(fā)的,提供代碼分析、圖形調(diào)試器、集成的單元測(cè)試器與版本控制系統(tǒng)(VCS)集成,并支持使用Django進(jìn)行Web開(kāi)發(fā)以及使用Anaconda進(jìn)行數(shù)據(jù)科學(xué)研發(fā)。
備選方案: Atom, Sublime
Heroku (僅當(dāng)用戶需要網(wǎng)絡(luò)托管時(shí))
圖源:heroku.com
平臺(tái)即服務(wù)(PaaS),使開(kāi)發(fā)人員可以完全對(duì)應(yīng)用程序進(jìn)行云構(gòu)建,云運(yùn)行和云操作。與CircleCI和Github集成后也可以啟用自動(dòng)部署。
備選方案: Google App Engine, AWS Elastic Compute Cloud, others
Streamlit (僅在用戶需要交互式UI時(shí))
Streamlit是面向機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)團(tuán)隊(duì)的開(kāi)源應(yīng)用程序框架。它是小編近年來(lái)最喜歡的工具之一。在小編的12小時(shí)機(jī)器挑戰(zhàn)中,你可以看到該如何使用它以及本節(jié)中的其他工具來(lái)創(chuàng)建電影和模擬應(yīng)用程序。
備選方案: Flask, Django, Tableau
CircleCi
CircleCI是一個(gè)持續(xù)集成和部署工具。當(dāng)你將自己的項(xiàng)目提交到Github時(shí),這一工具能使用遠(yuǎn)程docker創(chuàng)建一個(gè)自動(dòng)化的測(cè)試工作流。任何未通過(guò)PyTest設(shè)置測(cè)試用例而提交的項(xiàng)目都會(huì)被Circle CI拒絕。這樣可以確保代碼質(zhì)量,這點(diǎn)在于大團(tuán)隊(duì)合作時(shí)尤其重要。
備選方案: Travis CI, Jenkins,Github Action
the iPad: 探索工具
Streamlit (又見(jiàn)面了~)
別再留戀Jupyter Notebook了!
Jupyter曾經(jīng)是小編的首選工具,它可用于數(shù)據(jù)探索,分析,并利用不同的數(shù)據(jù)和建模過(guò)程進(jìn)行實(shí)驗(yàn)。但下面這種令人沮喪的情況,已經(jīng)記不清有多少次:
- 絞盡腦汁進(jìn)行調(diào)試,但最終意識(shí)到自己忘記了從頭開(kāi)始運(yùn)行代碼;Streamlit可以解決這個(gè)問(wèn)題。
- 總是需要等一會(huì)兒才能重新運(yùn)行數(shù)據(jù)pipeline;Steamlit緩存可解決此問(wèn)題。
- 不得不將代碼從Jupyter重寫(xiě)或轉(zhuǎn)換為可執(zhí)行文件,還要在重新測(cè)試上花費(fèi)時(shí)間;Streamlit提供了一個(gè)解決問(wèn)題的快捷方式。
所以,小編順理成章地轉(zhuǎn)而使用Streamlit進(jìn)行早期探索并服務(wù)于最終的前端。以下是小編常用的屏幕設(shè)置。左側(cè)為PyCharmIDE,右側(cè)為結(jié)果可視化。
IDE+ Streamlit的實(shí)時(shí)更新 | 圖源:towardsdatascience
備選方案: Jupyter Notebook、Anaconda、Spyder from、Microsoft Excel (認(rèn)真臉!)
刀子:機(jī)器學(xué)習(xí)架構(gòu)
你應(yīng)該根據(jù)食物和切割方式選擇合適的刀具,比如通用刀和專用刀。
當(dāng)心!盡管壽司專用刀更加亮麗,但使用專用刀將壽司切成塊狀將花費(fèi)很長(zhǎng)時(shí)間。要選擇正確的工具來(lái)完成工作。
Sklearn (常見(jiàn)的機(jī)器學(xué)習(xí)使用案例)
這是在Python中進(jìn)行通用機(jī)器學(xué)習(xí)的首選框架,有它就足夠了。
圖源:scikit-learn.org
備選方案:none、period.
Open AI Gym (強(qiáng)化學(xué)習(xí)使用案例)
這是一個(gè)開(kāi)發(fā)和比較強(qiáng)化學(xué)習(xí)算法的工具包,它提供API和可視環(huán)境。許多社區(qū)都在爭(zhēng)先為該領(lǐng)域構(gòu)建工具,不過(guò)可用的完整安裝包還不多。
備選方案:許多小型項(xiàng)目,但多數(shù)的維護(hù)工作都不如Gym。
PyTorch (深度學(xué)習(xí)使用案例)
這是一個(gè)基于Torch庫(kù)的開(kāi)源機(jī)器學(xué)習(xí)庫(kù)。深度學(xué)習(xí)是此庫(kù)重點(diǎn),它主要用于計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理等應(yīng)用。Torch主要由Facebook的人工智能研究實(shí)驗(yàn)室(FAIR)開(kāi)發(fā)。最近,許多著名的人工智能研究機(jī)構(gòu),例如Open AI,都使用PyTorch作為其標(biāo)準(zhǔn)工具。
備選方案: Tensorflow、 Keras、Fast.ai
火爐:實(shí)驗(yàn)管理
Atlas
這是一個(gè)免費(fèi)工具,可讓數(shù)據(jù)科學(xué)家使用一些摘要進(jìn)行實(shí)驗(yàn),將結(jié)果顯示在基于Web的儀表板上。
Atlas 程序 | 圖源:atlas.dessa.com
(免責(zé)聲明:小編供職于Dessa, 該公司創(chuàng)建了Altas。)
備選方案: ML Flow、Weights & Biases、Data Robot、SageMaker、Comet、Domino
另一種觀點(diǎn)
沒(méi)有完美的安裝,一切都取決于你的需求和限制條件。下圖展示了另一種想法,也是關(guān)于何種工具可用以及它們?nèi)绾我黄鸸ぷ鳌?/p>
謝爾蓋·卡拉耶夫在2019年全棧深度學(xué)習(xí)中的演講
迷你挑戰(zhàn)
想要了解這些工具,最好的方法是找一個(gè)項(xiàng)目開(kāi)始操作。你可以將這些工具合并到當(dāng)前項(xiàng)目中,也可以進(jìn)行一個(gè)12小時(shí)機(jī)器學(xué)習(xí)挑戰(zhàn)。
我看好你喲~