雲栖号資訊:【 點選檢視更多行業資訊】
在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

部署機器學習微服務變得更容易了。
本文最初發表在 Towards Data Science,經原作者 Caleb Kaiser 授權,InfoQ 中文站翻譯并分享。
在許多軟體工程學科中,生産用例是相當标準化的。以 Web 開發為例:要在 Web 應用中實作身份驗證,你無需發明資料庫,編寫自己的哈希函數,或者設計一個新的身份驗證政策。你可以使用某個定義好的方法,并利用标準工具就能在 Web 應用中實作身份驗證。
然而,在機器學習中,這種标準化并不存在。為了建構從模型訓練到部署的管道,團隊不得不建構自己的解決方案,主要的問題是從頭開始開始建構解決方案。
這樣一來,這一領域對于許多工程師來說成了不可企及的禁區,推而廣之,對那些很多請不起專業專家的公司來說也是如此。
但這一情況正在改變。生産模式正變得越來越正常。這些方法正在标準化,工具也正在日益成熟。到最後,軟體可以由非專業的機器學習工程師開發了。
将模型投入生産意味着什麼?
如果你看看自己每天都使用的軟體,如 Gmail、Uber、Netflix 等,無論你喜歡哪種社交媒體平台,都能在裡面看到機器學習的身影,比如:自動完成電子郵件、語音轉文本、對象檢測、預計到達時間等等。
雖然這些模型背後的數學是機器學習研究人員的領域,但用來将它們轉化為産品的架構應該是任何開發人員都熟悉的:
從軟體工程的角度來看,經過訓練的模型隻不過是另一個 API,将模型投入生産意味着将其部署為微服務。
注意:還有其他形式的模型部署(例如,未連接配接到國際網際網路的裝置),但它們不是本文要讨論的重點。
想要建構類似 Gmail 的智能撰寫(Smart Compose)這樣的功能嗎?将語言模型部署為 Web 服務,用文本 ping 端點,并在前段顯示預測。想要實作像 Facebook 建議的标簽功能嗎?還是同樣的過程,部署一個圖像識别模型,并像使用其他 Web 服務一樣使用它。
雖然“把你的模型部署成微服務”,這句話聽起來很容易,但是要如何做到這一點,卻是一個很有挑戰性的問題。
部署用于實時推理的模型需要回答幾個問題:
- 如何編寫一個從模型生成預測的 API?
- 将該 API 部署到生産環境的最佳方式是什麼?
- 如何實作生産 Web 服務所需要的所有基礎設施特性:自動伸縮、監控、負載平衡、滾動更新等?
根據模型的具體情況(如模型所有的架構、需要多少計算和記憶體、可以處理的資料種類等等),答案可能會有很大的差異。
這就是為什麼大型科技公司有專門的機器學習基礎設施團隊,也是為什麼大多數創業公司無法在生産中使用機器學習的原因。
但現在,這些問題有了标準答案。
要從模型中生成預測,可以使用架構附帶的任何服務庫(如 TensorFlow/TF serving、PyTorch/TorchServe)。要将你的模型封裝在 API 中并進行部署,你就需要使用模型服務平台。
現在,任何軟體工程師都可以采用一個模型(無論該模型是由他們的資料科學團隊訓練的模型,還是經過他們調優的開源模型,或者隻是一個普通的預訓練模型),并将其轉換為生産 Web 服務,而不必成為機器學習或 Kubernetes 方面的專家。
示例:文本生成不僅僅是 Gmail 的智能撰寫
如果你在過去的幾年裡使用過 Gmail,那麼你一定很熟悉它的智能撰寫功能。當你在寫電子郵件時,Gmail 會抛出一些建議回複:
雖然 Google 有一個複雜的機器學習管道,需要大量投資,但如果你想建構一些模仿 Gmail 的智能撰寫的功能,不需要 Google 的資源你也能做到這一點。
舉個例子:AI Dungeon。這是一款基于機器學習的文字冒險遊戲。
從本質上說,AI Dungeon 是 OpenAI 的 GPT-2(一種最先進的語言模型)的微調版本,以 Web 服務的形式部署。使用者将他們的提示送出到模型 - 微服務中,它就會用一個故事來回應。
就上下文而言,GPT-2 非常龐大。經過訓練的模型超過了 5GB,完全可以利用 GPU 來服務于一個預測。在不久之前,要想知道如何将其作為微服務進行規模化部署,是一個重大的基礎設施項目。你需要:
- 将其托管在具有足夠空間 / GPU 的執行個體上,已提供預測服務。
- 配置自動縮放以處理任意數量的并發使用者。
- 實作各種成本優化,讓你的雲賬單處于可控狀态。
在這些任務中,有許多子問題需要解決。比如,你是否應該根據記憶體使用情況或對壘中的請求數量進行自動縮放?你是否能夠平穩地處理故障轉移,進而能夠輕松地使用 Spot 執行個體來節省成本?
譯注:Spot 執行個體,是一種未使用的 EC2 執行個體,以低于按需價格提供。由于 Spot 執行個體允許使用者以極低的折扣請求未使用的 EC2 執行個體,這可能會顯著降低你的 Amazon EC2 成本。Spot 執行個體的每小時價格稱為 Spot 價格。每個可用區中的每種執行個體類型的 Spot 執行個體的價格是由 Amazon EC2 設定的,并根據 Spot 執行個體的長期供求趨勢逐漸調整價格。隻要容量可用,并且請求的每小時最高價超過 Spot 價格,Spot 執行個體就會運作。如果能靈活控制應用程式的運作時間并且應用程式可以中斷,Spot 執行個體就是經濟實惠之選。例如,Spot 執行個體非常适合資料分析、批處理作業、背景處理和可選的任務。
正如 AI Dungeon 背後的工程師 Nick Walton 在他的文章《我們如何擴充 AI Dungeon 來支援超過 100 萬使用者》(How we scaled AI Dungeon 2 to support over 1,000,000 users) 中稱,他所要做的就是編寫他的預測 API,并允許他的模型服務平台(Cortex)實作基礎設施的自動化。
注:如果你不熟悉遷移學習,那麼看一看 AI Dungeon 是如何用很少的資料就能獲得最先進的結果的故事也是很有趣的。
設計模型有挑戰,生産化的過程很枯燥
多年前,機器學習産品的瓶頸問題如果不解決,就不會有 AI Dungeon。但現在,它隻是衆多機器學習原生創業公司之一。
例如,Glisten 将多個模型組合在一起,生成了一個 API,可以用于從圖像中提取産品資訊:
盡管公司用 Glisten 來處理每月數以千計的産品,但 Glisten 隻是一家隻有兩個人的初創公司。這隻是因為他們不需要基礎設施團隊而已,是以公司隻有兩個人就夠了。
随着機器學習的生産化的問題得到解決,機器學習研究人員和軟體工程師之間的障礙也被打破。研究方面的突破更快地展現為産品方面的功能,是以,我們所有人都會受益。
作者介紹:
Caleb Kaiser,Cortex Lab 創始團隊成員,曾在 AngelList 工作,最初在 Cadillac 供職。
原文連結:
https://towardsdatascience.com/production-machine-learning-isnt-hard-anymore-932bd91e138f【雲栖号線上課堂】每天都有産品技術專家分享!
課程位址:
https://yqh.aliyun.com/live立即加入社群,與專家面對面,及時了解課程最新動态!
【雲栖号線上課堂 社群】
https://c.tb.cn/F3.Z8gvnK
原文釋出時間:2020-05-11
本文作者:Caleb Kaiser
本文來自:“
AI前線”,了解相關資訊可以關注“
”