【开发者成长】“机器学习还是很难用!”
云棲號資訊:【點擊查看更多行業資訊】
在這里您可以找到不同行業的第一手的上云資訊,還在等什么,快來!
機器學習仍然很難用,但情況開始有所改善了。
以下為譯文:
我是一名Cortex貢獻者,Cortex是一個用于在生產中部署模型的開源平臺。首先聲明,以下內容是基于我對一些機器學習團隊的觀察總結出來的,而不是一份針對該行業的學術調查。
用一個在軟件行業中無處不在的東西舉例子吧,就比如數據庫。建立一個數據庫意味著什么?對于一名Postgres貢獻者來說,“創建一個數據庫”就像一百萬行C代碼。對于一名Rails開發者來說,看起來就僅僅是一句rake db:create。
顯然,二者都沒錯,只不過它們代表的抽象級別不同,適用于不同工程師的不同側重點。
這就是軟件構建自己的方式。為現代應用程序提供支持的基本軟件——數據庫、Web服務器、請求路由器、哈希庫等等——在很大程度上得到了廣泛傳播,是因為它們的抽象層使得非專業人士也可以訪問它們。
機器學習歷來缺乏這種抽象層,這限制了它的采用率。但是現在,情況正在發生變化。新的一波專門致力于讓機器學習應用起來更容易的項目正在出現。
1.模型需要一個對開發人員來說更友好的界面
想要在生產環境中應用機器學習,你需要:
- 設計模型方面的專業知識
- 足夠的數據以及資金來訓練你的模型
- ML基礎架構知識(用于部署模型)
這樣的結果就是,任何使用ML的項目都需要由數名專家來親自執手。這個瓶頸亟待消除。
應該讓那些沒有機器學習背景的開發人員也能夠在生產中使用機器學習才對,就像一名開發人員可能沒有密碼學方面的背景,但仍然可以用哈希庫來保護用戶數據一樣。
幸好,這終于要發生了。
2.彌補機器學習抽象的缺失
為了使ML的應用得到普及,開發人員必須能夠對機器學習有一個較高水平的了解——什么是模型、微調、推論等等——并通過可用的抽象來構建應用。
許多必要的抽象已經在研究中了,它們屬于幾個關鍵的重點領域:
1.我們需要一種更簡單的方法來訓練模型
例如,如果你正在開發一個會話代理,那么幾乎可以肯定的一點就是,Google的Meena會表現得比你的模型更好。如果你正在開發一個文本生成器,那你應該去用OpenAI的GPT-2,而不是自己從頭開始構建。對于對象檢測來說,YOLOv3這樣的模型可能是你最好的選擇。
得益于轉移學習(transfer learning,將神經網絡的“知識”微調到一個新領域的過程),你可以只用相對少的數據,就能依據你的任務來對這些開源的最新模型進行微調。
例如,有了gpt-2-simple這樣的新庫,你就可以使用簡單的命令行界面來微調GPT-2了:
$ gpt_2_simple finetune your_custom_data.txt有了這一抽象層,開發人員就不需要深入了解ML的專業知識了,他們只需要知道如何微調就可以了。
而且可用的訓練抽象遠不止gpt-2-simple一個。Google Cloud AutoML為用戶提供了一個GUI(用戶圖形界面),可以讓用戶選擇自己的數據集并自動訓練一個新模型,無需編寫代碼:
圖源:Google Cloud Vision
Sundar Pichai在一篇有關AutoML的文章中說:“當今需要匯集幾位博士才能設計新的神經網絡,而我們希望AutoML在三到五年內能夠讓成千上萬的開發人員們都能為他們自己的特殊需求設計新的神經網絡。”
2.從模型生成預測的過程必須要簡單
好的,假如說已經可以輕松地針對你的特定任務得到一個訓練好的模型了。你要如何根據該模型生成預測呢?
能夠提供模型服務功能的項目有很多,其中許多都與流行的ML框架相關。例如,TensorFlow有TF Serving,而ONNX有ONNX Runtime。
除了科技巨頭們之外,還有許多獨立的開源項目也在專注于解決這個問題。例如,Bert Extractive Summarizer項目可以讓使用Google的BERT提取文本摘要的過程變得更加輕松。以下是文檔中的示例:
使用該庫生成預測的過程就像使用一個import語句以及調用一次Summarizer()一樣簡單。
隨著有越來越多這樣的項目的啟動以及開發,開發人員無需過多深入了解模型本身就能更輕松地用模型生成預測了。
3.模型的部署必須要簡單
最后的瓶頸是基礎架構。
為一個玩具應用程序提供預測是簡單而直接的,但是當你的程序需要擴大規模時,情況就會變得困難起來。以GPT-2為例:
- GPT-2大于5 GB。你需要一臺更大的,那么也就必定更貴的服務器來托管這么大的模型。
- GPT-2非常吃算力。為了提供單個預測,GPT-2可以100%的利用率占用CPU數分鐘。即使有GPU,單個預測仍可能需要花費數秒。對比之下,Web app只需用一個CPU就能夠為數百個并發用戶提供服務。
- GPT-2非常吃內存。除了巨大的磁盤空間和計算需求之外,GPT-2還需大量的內存才能保證運行而不會崩潰。
為了應對少量的用戶增長,你也需要將基礎架構擴展到應用程序的許多副本。這意味著需要使用Docker對模型進行容器化,使用Kubernetes對容器進行編排,以及通過你使用的云平臺來配置自動擴展(autoscaling)。
你需要學會一整套工具才能搭建好用于處理機器學習部署的基礎架構,而大多數不具備專業背景的開發人員對其中很多工具都太不熟悉:
3.機器學習基礎架構技術棧
為了讓開發人員能夠使用機器學習,需要對機器學習的基礎結構進行抽象化。這就是像Cortex這樣的項目登場的時候了。(完整披露:我是一名Cortex貢獻者)。
Cortex通過一個配置文件以及一個命令行界面對模型部署的基礎開發進行了抽象:
資料來源:Cortex Repo
Cortex這類項目的目標很簡單:拿出一個訓練后的模型,并將其轉化為任何開發人員都能用的預測API。
4.讓應用型機器學習輕松起來
我想講清的一點是,機器學習背后的數學原理將永遠都是很難懂的。只會調用個predict()函數的話,是不可能成為機器學習專家的。重點是,一名開發人員不必非得成為一名機器學習專家,就可以在自己的應用程序中使用ML。
機器學習的生態社區終于要將重心放在簡化應用型ML上了。僅會一點機器學習知識的開發人員可以對最新模型進行微調,將其包裝在API中,并使用開源,直觀的抽象將其部署在可擴展的基礎架構上。
結果就是,應用型機器學習將變得更加容易——而且通過這種擴展,幾乎所有開發者都能用得上機器學習了。
原文:https://towardsdatascience.com/machine-learning-is-still-too-hard-to-use-e344773725af
作者簡介:Caleb Kaiser,Cortex Labs創始團隊。
【云棲號在線課堂】每天都有產品技術專家分享!
課程地址:https://yqh.aliyun.com/live
立即加入社群,與專家面對面,及時了解課程最新動態!
【云棲號在線課堂 社群】https://c.tb.cn/F3.Z8gvnK
原文發布時間:2020-04-16
本文作者:Caleb Kaiser
本文來自:“CSDN”,了解相關信息可以關注“CSDN”
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【开发者成长】“机器学习还是很难用!”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文详解Serverless架构模式
- 下一篇: 发光的二次元克拉克拉 满足年轻用户个性化