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