2020年有用的機(jī)器學(xué)習(xí)工具2020
TL; DR —構(gòu)建良好的機(jī)器學(xué)習(xí)應(yīng)用程序就像制作米其林式菜肴。 擁有一個(gè)井井有條的廚房是至關(guān)重要的,但是選擇太多了。 在本文中,我重點(diǎn)介紹了我發(fā)現(xiàn)的工具,這些工具可用于交付專業(yè)項(xiàng)目,分享一些想法和替代方案,并進(jìn)行快速的實(shí)時(shí)調(diào)查(您可以在參與后看到社區(qū)的想法)。
像任何工具討論一樣,該列表并不詳盡。 我嘗試著眼于最有用和最簡單的工具。 歡迎在評(píng)論部分中提出任何反饋意見,或者讓我知道是否有更好的選擇。
免責(zé)聲明:本帖子不被認(rèn)可或贊助。 我將數(shù)據(jù)科學(xué)和ML互換使用。
"如何構(gòu)建良好的機(jī)器學(xué)習(xí)應(yīng)用程序?"
在與學(xué)校中有抱負(fù)的數(shù)據(jù)科學(xué)家,希望轉(zhuǎn)換的專業(yè)人士以及團(tuán)隊(duì)經(jīng)理進(jìn)行的聊天中,這個(gè)問題以各種形式多次出現(xiàn)。
交付專業(yè)數(shù)據(jù)科學(xué)項(xiàng)目有很多方面。 像許多其他人一樣,我喜歡使用在廚房做飯的類比:有成分(數(shù)據(jù)),食譜(設(shè)計(jì)),烹飪過程(以及您獨(dú)特的方法),最后是實(shí)際的廚房(工具)。 )。
因此,本文遍歷了我的廚房。 它重點(diǎn)介紹了設(shè)計(jì),開發(fā)和部署全棧機(jī)器學(xué)習(xí)應(yīng)用程序的最有用工具,這些應(yīng)用程序是與系統(tǒng)集成或在生產(chǎn)環(huán)境中為人類用戶服務(wù)的解決方案。
如果您想進(jìn)一步了解交付ML的其他方面,請(qǐng)?jiān)诖颂幉榭次业奈恼隆?/p>
壓倒性的可能性
我們生活在黃金時(shí)代。 如果您在Google中搜索"機(jī)器學(xué)習(xí)工具"或咨詢顧問,您可能會(huì)得到以下信息:
> Data & AI Landscape 2019, Image Source
那里有太多工具。 可能的組合是無限的。 這可能會(huì)令人困惑和壓倒性。 所以,讓我?guī)椭s小范圍。 也就是說,沒有完美的設(shè)置。 這完全取決于您的需求和約束。 因此,進(jìn)行相應(yīng)的選擇,選擇和修改。
我的列表按以下順序排列優(yōu)先級(jí)(不按順序排列):
- 免費(fèi)
- 易于學(xué)習(xí)和設(shè)置
- 未來證明(采用和工具成熟度)♻️
- 研究工程
- 在初創(chuàng)企業(yè)或大型企業(yè)中為大型或小型項(xiàng)目工作
- 只要完成工作
警告:我有99%的時(shí)間使用Python。 因此,這些工具可以與本機(jī)Python一起很好地使用或構(gòu)建。 我尚未使用其他編程語言(例如R或Java)對(duì)其進(jìn)行測試。
1. 冰箱:數(shù)據(jù)庫
PostgreSQL
一個(gè)免費(fèi)的開源關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),強(qiáng)調(diào)可擴(kuò)展性和技術(shù)標(biāo)準(zhǔn)合規(guī)性。 它旨在處理各種工作負(fù)載,從單臺(tái)機(jī)器到具有多個(gè)并發(fā)用戶的數(shù)據(jù)倉庫或Web服務(wù)。
> Image Source
備選方案:MySQL,SAS,IBM DB2,Oracle,MongoDB,Cloudera,GCP,AWS,Azure,PaperSpace
2. 工作臺(tái):部署管道工具
管道工具對(duì)于開發(fā)的速度和質(zhì)量至關(guān)重要。 我們應(yīng)該能夠以最少的人工處理快速進(jìn)行迭代。 這是一個(gè)運(yùn)行良好的設(shè)置,有關(guān)更多詳細(xì)信息,請(qǐng)參閱我的12小時(shí)ML挑戰(zhàn)文章。 每個(gè)懶惰的數(shù)據(jù)科學(xué)家都應(yīng)該在項(xiàng)目的早期階段對(duì)此進(jìn)行嘗試。
> Author's work, 12-Hour ML Challenge
(1) Github
它提供了Git的分布式版本控制和源代碼管理(SCM)功能,以及其自己的功能。 它為每個(gè)項(xiàng)目提供訪問控制和多種協(xié)作功能,例如錯(cuò)誤跟蹤,功能請(qǐng)求,任務(wù)管理和Wiki。
備選:DVC,BitBucket,GitLab
(2) PyCharm社區(qū)版
計(jì)算機(jī)編程中使用的集成開發(fā)環(huán)境(IDE),專門用于Python語言。 它是由捷克JetBrains公司開發(fā)的。 它提供代碼分析,圖形調(diào)試器,集成的單元測試器,與版本控制系統(tǒng)(VCSes)集成,并支持使用Django進(jìn)行Web開發(fā)以及使用Anaconda進(jìn)行數(shù)據(jù)科學(xué)開發(fā)。
替代方案:Atom,Sublime
(3) pytest
框架使編寫小型測試變得容易,但可以擴(kuò)展以支持針對(duì)應(yīng)用程序和庫的復(fù)雜功能測試。 它節(jié)省了手動(dòng)測試的大量時(shí)間。 如果您每次更改代碼都需要測試某些東西,請(qǐng)使用Pytest將其自動(dòng)化。
備選:單元測試
(4) CircleCi
CircleCI是一個(gè)持續(xù)集成和部署工具。 當(dāng)您提交到Github時(shí),它將使用遠(yuǎn)程docker創(chuàng)建一個(gè)自動(dòng)化的測試工作流。 Circle CI拒絕任何未通過PyTest設(shè)置的測試用例的提交。 這樣可以確保代碼質(zhì)量,尤其是在與較大的團(tuán)隊(duì)合作時(shí)。
備選方案:詹金斯,特拉維斯CI,Github Action
(5) Heroku(僅當(dāng)您需要網(wǎng)絡(luò)托管時(shí))
平臺(tái)即服務(wù)(PaaS),使開發(fā)人員可以完全在云中構(gòu)建,運(yùn)行和操作應(yīng)用程序。 您可以與CircleCI和Github集成以啟用自動(dòng)部署。
替代方案:Google App Engine,AWS Elastic Compute Cloud,其他
(6) Streamlit(僅在需要交互式UI時(shí))
Streamlit是面向機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)團(tuán)隊(duì)的開源應(yīng)用程序框架。 近年來,它已成為我最喜歡的工具之一。 查看我如何使用它以及本節(jié)中的其他工具來創(chuàng)建電影和模擬應(yīng)用程序。
替代方案:Flask,Django,Tableau
3. iPad:探索工具
Streamlit重新點(diǎn)亮
忘了Jupyter Notebook。 是的,這是對(duì)的。
Jupyter是我探索數(shù)據(jù),進(jìn)行分析以及嘗試不同數(shù)據(jù)和建模過程的入門工具。 但我不記得有多少次:
- 我花了很多時(shí)間進(jìn)行調(diào)試(并抽出頭發(fā)),但最終意識(shí)到我忘了從頭開始運(yùn)行代碼。 Streamlit解決了此問題。
- 即使稍作更改,我也必須等待一段時(shí)間才能重新運(yùn)行數(shù)據(jù)管道。 Streamlit緩存可解決此問題。
- 我不得不將代碼從Jupyter重寫或轉(zhuǎn)換為可執(zhí)行文件,以及花在重新測試上的時(shí)間。 Streamlit提供了一個(gè)快捷方式。
真令人沮喪。 因此,我使用Streamlit進(jìn)行早期探索并為最終的前端服務(wù)-用一塊石頭殺死兩只鳥。 以下是我的典型屏幕設(shè)置。 左側(cè)為PyCharm IDE,右側(cè)為結(jié)果可視化。 試一試。
> IDE (left) + live update with Streamlit (right), author's work from the Forgotten Algorithm
替代方案:Jupyter Notebook,Anaconda的Spyder,Microsoft Excel(嚴(yán)重)
4. 刀具:機(jī)器學(xué)習(xí)框架
就像使用實(shí)際的刀一樣,您應(yīng)該根據(jù)食物和切割方式選擇合適的刀。 有通用刀和特種刀。
要小心。 盡管壽司刀更加亮麗,但使用專用刀將壽司切成骨頭將需要很長時(shí)間。 選擇正確的工具來完成工作。
(1) Scikit-Learn(通用ML用例)
在Python中進(jìn)行常規(guī)機(jī)器學(xué)習(xí)的入門框架。 說夠了。
> Use Cases for Scikit-Learn, Source
備選方案:無,期限。
(2) PyTorch(深度學(xué)習(xí)用例)
一個(gè)基于Torch庫的開源機(jī)器學(xué)習(xí)庫。 鑒于深度學(xué)習(xí)的重點(diǎn),它主要用于計(jì)算機(jī)視覺和自然語言處理等應(yīng)用。 它主要由Facebook的AI研究實(shí)驗(yàn)室(FAIR)開發(fā)。 最近,許多著名的AI研究機(jī)構(gòu),例如Open AI,都使用PyTorch作為其標(biāo)準(zhǔn)工具。
替代方案:Tensorflow,Keras,F(xiàn)ast.ai
(3) 開設(shè)AI Gym(強(qiáng)化學(xué)習(xí)用例)
開發(fā)和比較強(qiáng)化學(xué)習(xí)算法的工具包。 它提供API和可視環(huán)境。 這是社區(qū)正在為其構(gòu)建工具的活躍區(qū)域。 打包好的工具還不多。
替代方案:許多小型項(xiàng)目,但維護(hù)得不如健身房。
5. 火爐:實(shí)驗(yàn)管理
(1) Atlas
這是一個(gè)免費(fèi)工具,可讓數(shù)據(jù)科學(xué)家使用幾個(gè)摘要進(jìn)行實(shí)驗(yàn)并將結(jié)果顯示在基于Web的儀表板上。
> Atlas process, source
免責(zé)聲明:我曾在創(chuàng)建Altas的公司Dessa工作。
替代方案:ML Flow,SageMaker,Comet,權(quán)重和偏移,數(shù)據(jù)機(jī)器人,Domino
(2) 一項(xiàng)調(diào)查
出于好奇,尋找合適工具時(shí)最困擾您的是什么? 我很想聽聽您的以下想法。 這是一項(xiàng)實(shí)時(shí)調(diào)查,因此您可以查看社區(qū)參與后的想法。
(3) 另一種觀點(diǎn)
如前所述,沒有完美的設(shè)置。 這完全取決于您的需求和約束。 這是關(guān)于哪些工具可用以及它們?nèi)绾螀f(xié)同工作的另一種觀點(diǎn)。
> Presentation from Sergey Karayev at Full Stack Deep Learning, 2019
(4) 迷你挑戰(zhàn)賽
如果您想了解有關(guān)如何使用這些工具的更多信息,最好的方法是找到一個(gè)要進(jìn)行的項(xiàng)目。 您可以將工具合并到當(dāng)前項(xiàng)目中,也可以進(jìn)行12小時(shí)的ML挑戰(zhàn)。 不確定如何? 看看我如何使用討論的工具和流程創(chuàng)建用戶授權(quán)的推薦應(yīng)用程序。
我期待看到您能創(chuàng)造什么。 請(qǐng)與社區(qū)共享,并在Twitter tag上標(biāo)記我。
喜歡您閱讀的內(nèi)容嗎? 在Medium,LinkedIn或Twitter上關(guān)注我。 另外,您是否想以數(shù)據(jù)科學(xué)家的身份學(xué)習(xí)商業(yè)思維和溝通技巧? 查閱我的《機(jī)器學(xué)習(xí)的影響力》指南。