天天看點

“機器學習還是很難用!”1.模型需要一個對開發人員來說更友好的界面2.彌補機器學習抽象的缺失3.機器學習基礎架構技術棧4.讓應用型機器學習輕松起來

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

機器學習仍然很難用,但情況開始有所改善了。

“機器學習還是很難用!”1.模型需要一個對開發人員來說更友好的界面2.彌補機器學習抽象的缺失3.機器學習基礎架構技術棧4.讓應用型機器學習輕松起來

以下為譯文:

我是一名Cortex貢獻者,Cortex是一個用于在生産中部署模型的開源平台。首先聲明,以下内容是基于我對一些機器學習團隊的觀察總結出來的,而不是一份針對該行業的學術調查。

用一個在軟體行業中無處不在的東西舉例子吧,就比如資料庫。建立一個資料庫意味着什麼?對于一名Postgres貢獻者來說,“建立一個資料庫”就像一百萬行C代碼。對于一名Rails開發者來說,看起來就僅僅是一句rake db:create。

顯然,二者都沒錯,隻不過它們代表的抽象級别不同,适用于不同工程師的不同側重點。

這就是軟體建構自己的方式。為現代應用程式提供支援的基本軟體——資料庫、Web伺服器、請求路由器、哈希庫等等——在很大程度上得到了廣泛傳播,是因為它們的抽象層使得非專業人士也可以通路它們。

機器學習曆來缺乏這種抽象層,這限制了它的采用率。但是現在,情況正在發生變化。新的一波專門緻力于讓機器學習應用起來更容易的項目正在出現。

1.模型需要一個對開發人員來說更友好的界面

想要在生産環境中應用機器學習,你需要:

  • 設計模型方面的專業知識
  • 足夠的資料以及資金來訓練你的模型
  • ML基礎架構知識(用于部署模型)

這樣的結果就是,任何使用ML的項目都需要由數名專家來親自執手。這個瓶頸亟待消除。

應該讓那些沒有機器學習背景的開發人員也能夠在生産中使用機器學習才對,就像一名開發人員可能沒有密碼學方面的背景,但仍然可以用哈希庫來保護使用者資料一樣。

幸好,這終于要發生了。

2.彌補機器學習抽象的缺失

為了使ML的應用得到普及,開發人員必須能夠對機器學習有一個較高水準的了解——什麼是模型、微調、推論等等——并通過可用的抽象來建構應用。

許多必要的抽象已經在研究中了,它們屬于幾個關鍵的重點領域:

1.我們需要一種更簡單的方法來訓練模型

  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(使用者圖形界面),可以讓使用者選擇自己的資料集并自動訓練一個新模型,無需編寫代碼:

“機器學習還是很難用!”1.模型需要一個對開發人員來說更友好的界面2.彌補機器學習抽象的缺失3.機器學習基礎架構技術棧4.讓應用型機器學習輕松起來

圖源:Google Cloud Vision

Sundar Pichai在一篇有關AutoML的文章中說:“當今需要彙集幾位博士才能設計新的神經網絡,而我們希望AutoML在三到五年内能夠讓成千上萬的開發人員們都能為他們自己的特殊需求設計新的神經網絡。”

2.從模型生成預測的過程必須要簡單

好的,假如說已經可以輕松地針對你的特定任務得到一個訓練好的模型了。你要如何根據該模型生成預測呢?

能夠提供模型服務功能的項目有很多,其中許多都與流行的ML架構相關。例如,TensorFlow有TF Serving,而ONNX有ONNX Runtime。

除了科技巨頭們之外,還有許多獨立的開源項目也在專注于解決這個問題。例如,Bert Extractive Summarizer項目可以讓使用Google的BERT提取文本摘要的過程變得更加輕松。以下是文檔中的示例:

from summarizer import Summarizer

body = 'Text body that you want to summarize with BERT'
body2 = 'Something else you want to summarize with BERT'
model = Summarizer()
model(body)
model(body2)           

使用該庫生成預測的過程就像使用一個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)。

你需要學會一整套工具才能搭建好用于處理機器學習部署的基礎架構,而大多數不具備專業背景的開發人員對其中很多工具都太不熟悉:

“機器學習還是很難用!”1.模型需要一個對開發人員來說更友好的界面2.彌補機器學習抽象的缺失3.機器學習基礎架構技術棧4.讓應用型機器學習輕松起來

3.機器學習基礎架構技術棧

為了讓開發人員能夠使用機器學習,需要對機器學習的基礎結構進行抽象化。這就是像Cortex這樣的項目登場的時候了。(完整披露:我是一名Cortex貢獻者)。

Cortex通過一個配置檔案以及一個指令行界面對模型部署的基礎開發進行了抽象:

“機器學習還是很難用!”1.模型需要一個對開發人員來說更友好的界面2.彌補機器學習抽象的缺失3.機器學習基礎架構技術棧4.讓應用型機器學習輕松起來

資料來源: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

”,了解相關資訊可以關注“