無痛的機器學習系統入門指南(二)- 模型部署

2021-02-24 南洋理工CAP組

論文題目:MLModelCI: An Automatic Cloud Platform for Efficient MLaaS

開原始碼:https://github.com/cap-ntu/ML-Model-CI

深度學習正在改變生活中的方方面面。手中的APP,快遞倉儲物流的優化,蛋白質的預測,遊戲的AI敵人等等,所謂「見面不談人工智慧,遍讀詩書也枉然」。

可是將深度學習模型部署為線上服務,並不是一件簡單的事情,君不見無數的報刊和博客都在吐槽人工智慧落地的困難。一方面由於線上服務的低延遲等需求,模型需要進行大量的優化,一方面各種各樣的硬體加速器,訓練軟體格式,讓每個工程師在對接已有服務的時候,都無比頭疼。將訓練出來新模型到部署成一個線上服務,可謂路漫漫其修遠兮。

我們將整體的流程抽象化為下面幾個節點,後面我們一一解釋。

圖1 模型部署流程抽象

總的來說,這是一個不斷優化,不斷探究性能極限,不斷進行測試,不斷去追求在自己的場景下,找到一個最優(速度最優or吞吐最優or花費最優,等等)解的過程。下面簡要介紹各個階段。

1. 模型及其各種運行組件管理

與傳統的軟體開發不同,模型的開發代碼(訓練)與上線代碼(推理),完全不一樣。要保證訓練出來的模型可用,用戶需要將模型以及對應的預處理,後處理,甚至運行環境全部進行考慮,然後重新編寫推理測試代碼,以求上線。

2. 模型優化,量化

為了降低服務的存儲消耗,縮短延遲,一般都會儘可能的將模型進行優化。大量的剪枝和量化paper,不再多提,始終是機器學習的熱門個方向。 

3. 模型轉換 (重編譯)

而為了適配不同的硬體設施或者進一步的提高模型性能,可以優化模型的計算圖,從底層算子進行考慮,編譯轉換模型。這其中的佼佼者自然是TVM。其它的TensorRT和ONNX (配合ONNX Runtime)也非常優秀。最近OSDI 2020有一篇Microsoft的工作,驚為天人。

4. 模型服務系統綁定

當面對用戶時,考慮的便不再只是時延這些事情了,吞吐量,長尾延遲,AB test等等,都是非常現實的問題。為了提高模型的服務能力,便需要將其與服務系統綁定,使其在新的硬體集群上高效運行。tensorflow-serving是早期的入局者,clipper是學術圈的代表。如今的trion inference serving還有一些seldon,都越來越出色了。

5. 模型調試及上線

最後就是一系列的模型參數調試了,多大的batch size更合適?部署在哪個硬體更經濟?AB test怎麼控制,等等。全部搞定才能獲得一個高質量的服務。

小總結

可以看出來,完整跑完部署的整套流程是極其惱人的,在任何一步都可能出現問題。例如,訓練環境和生產環境打包不一致,模型不支持轉換導致長時間在debug,如何選擇出一套最優參數配置等等。

MLOps應運而生,越來越多的工作,投入到解決上述問題。

一點微小的工作

最近我們剛開源了一個很初期的的小工作,叫做MLModelCI,期望自動化這個流程。

整體來說,我們通過一個模型管家來讓用戶發布,管理模型,然後系統自動利用集群閒置資源,將模型進行優化,轉化和性能解析,最終自動將其綁定到服務系統上。用戶很快便能拿到可用的服務以及在不同情況下的各種性能信息(latency,cost等等),然後對應進行配置、部署和上線。

相關焦點

  • 6 種方法部署 TensorFlow2 機器學習模型,簡單 + 快速 + 跨平臺!
    不但個人如此,在實際工作中,一個優秀的程式設計師除了要學會構建機器學習模型,也更應該學會將其成功部署,向用戶提供便捷的服務。如下圖所示,機器學習系統由機器學習代只包含一小部分,而在中間的小黑匣子周圍,所需要的基礎設施龐大而複雜。
  • 無痛入門機器學習,HR再也不用擔心我不會商業分析了!
    如果你是蘋果手機的使用者,那你一定曾使用過Siri個人助理系統。語音設置鬧鐘、呼叫Siri播放你喜愛的音樂,甚至無聊時和Siri一起聊天解悶...機器學習包含多種交叉學科,同時也在多個方面有著實際應用,如數據挖掘、自動駕駛、股票預測等。隨著大數據、預測模型與方法的發展,機器學習在商業領域也有著更優異的表現。
  • 【翻譯】Sklearn 與 TensorFlow 機器學習實用指南 —— 第4章( 下) 訓練模型
    /github.com/apachecn/hands_on_Ml_with_Sklearn_and_TF前文傳送門:【翻譯】Sklearn 與 TensorFlow 機器學習實用指南 —— Chapter 0.前言【翻譯】Sklearn 與 TensorFlow 機器學習實用指南 —— 第1章 機器學習概覽(上)【翻譯】Sklearn 與 TensorFlow
  • 使用ML.NET + ASP.NET Core + Docker + ACS 部署.NET機器學習模型
    cd mlnetacidemodotnet new sln建立模型在我們的解決方案文件夾中,我們想要創建一個新的控制臺應用程式,這是我們構建和測試我們的機器學習模型的地方。設置模型項目首先,我們要創建項目。
  • 教程 | 從零開始:TensorFlow機器學習模型快速部署指南
    本文將介紹一種將訓練後的機器學習模型快速部署到生產種的方式。
  • 機器學習實戰指南:如何入手第一個機器學習項目?
    4.為機器學習準備數據。5.選擇模型並進行訓練。6.調試模型。7.給出解決方案。8.部署、監控、維護系統本文將介紹前三個部分,教你如何入手第一個機器學習項目!1. 使用真實數據學習機器學習時,最好使用真實數據,而不是「人造」數據。
  • 深度學習-機器學習從入門到深入全套資源分享
    :(一)機器學習環境搭建 && Kaggle入門系列:(二)Kaggle簡介 && Kaggle入門系列(三)Titanic初試身手        從 0 到 1 走進 Kaggle        Kaggle 入門指南        一個框架解決幾乎所有機器學習問題 && Approaching (Almost
  • 基於AWS Greengrass的機器學習模型邊緣部署實踐
    本節將實現,基於AWS GG在邊緣設備上部署機器學習模型,並在邊緣側完成分類任務,將結果回傳到雲端進行展現。Lambda函數可以在雲端開發並部署,也可以在本地開發,將程序打包上傳到雲端。本次實驗採用本地創建機器學習模型並上傳部署的方式。
  • 自動化機器學習入門指南,來了
    之前的工作中也有多少接觸過這個AutoML(Automated Machine Learning)的概念,簡單來說就是把模型開發的標準過程模塊化,都交給一些自動化的組件來完成,比如數據集的劃分、特徵衍生、算法選擇、模型訓練、調優、部署以及後續的監控,都「一條龍」地在AutoML
  • 從入門到頭禿,2018年機器學習圖書TOP10
    通過本書你將學習:探索機器學習的全景圖,特別是神經網絡。使用Scikit-Learn來端到端地建立一個機器學習項目的示例。探索多種訓練模型,包括支持向量機、決策樹、隨機森林和集成方法。使用TensorFlow庫建立和訓練神經網絡。深入神經網絡架構,包括卷積網絡、遞歸網絡和深度強化學習。
  • 機器學習如何入門?Kaggle CTO 剛剛寫了份詳細的指南
    AMA 中得票最高的答案是「研究機器學習和人工智慧最好的資源是什麼?」Hamner在答案中把機器學習的入門過程分成 8 步,寫了一份詳細的指南。你很幸運,要開始研究機器學習和人工智慧,現在是比任何時候都好的時機。這個領域近年來在快速發展,專業人士發布並改進著高質量的開源軟體工具和庫,每天都有新的線上公開課和博客文章出現。
  • 加速深度學習在線部署,TensorRT安裝及使用教程
    但在部署推理時,為了降低成本,往往使用單個GPU機器甚至嵌入式平臺(比如 NVIDIA Jetson)進行部署,部署端也要有與訓練時相同的深度學習環境,如caffe,TensorFlow等。由於訓練的網絡模型可能會很大(比如,inception,resnet等),參數很多,而且部署端的機器性能存在差異,就會導致推理速度慢,延遲高。
  • 入門者的機器學習/深度學習自學指南
    連結:https://zhuanlan.zhihu.com/p/45851189來源:知乎本文提供了適合入門者的機器學習、
  • 【翻譯】Sklearn 與 TensorFlow 機器學習實用指南 —— 第5章( 中)支持向量機
    機器學習實用指南 —— 第1章 機器學習概覽(下)【翻譯】Sklearn 與 TensorFlow 機器學習實用指南 —— 第2章  一個完整的機器學習項目(上)【翻譯】Sklearn 與 TensorFlow 機器學習實用指南 —— 第2章 一個完整的機器學習項目(中)【翻譯】Sklearn 與 TensorFlow 機器學習實用指南 —— 第2章 一個完整的機器學習項目
  • 【乾貨薈萃】機器學習&深度學習知識資料大全集(二)(論文/教程/代碼/書籍/數據/課程等)
    介紹:(系統/算法/機器學習/深度學習/圖模型/優化/...)在線視頻課程列表.  介紹:機器學習基本算法簡要入門.——大數據集(30+g)二分類.介紹:Spark機器學習入門實例——大數據集(30+g)二分類.  介紹:為入門者準備的深度學習與神經網絡免費資源.
  • Python入門到機器學習再到深入學習及應用整個學習系統
    第1周機器學習入門·機器學習從0到1 Introduction to Machine Learning·Python 基本語法基礎 Introduction to Python I·機器學習KNN算法入門 Machine Learning - KNN algorithm·機器學習Python Data
  • onnx實現對pytorch模型推理加速
    ONNX Runtime是適用於Linux,Windows和Mac上ONNX格式的機器學習模型的高性能推理引擎。onnxruntime模型部署流程1.安裝pip install onnxpip install onnxruntime( pip install onnxruntime-gpu #GPU環境)2.
  • 北大學霸出品,TensorFlow 2.0快速入門指南來了!
    今天就和大家分享一份全中文版的TensorFlow快速上手指南,這是一本精簡的TensorFlow 2.0入門指導,基於TensorFlow的Eager Execution(動態圖)模式,力圖讓具備一定機器學習及Python基礎的開發者們快速上手TensorFlow 2.0。
  • Python + Scikit-learn 完美入門機器學習指南 ​
    Scikit-learn 是一個非常流行的機器學習工具,它幾乎集成了所有經典的機器學習算法,你只需要幾行代碼,通過簡單的方法類調用,就可以實現原本複雜的機器學習模型。如果你是一名 Python 程式設計師,又正好想學習一下人工智慧技術,scikit-learn 可能是你最好的選擇之一。
  • 【機器學習傻瓜式入門,443頁pdf】Machine Learning For Dummies, 2nd Edition
    雖然機器學習的專業知識並不意味著你可以創建自己的圖靈測試證明機器人(就像電影《機械總動員》中那樣),但它是人工智慧的一種形式,是快速大規模識別機會和解決問題的最令人興奮的技術手段之一