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