深入了解那些知名的端到端機器學習平臺

2020-12-25 讀芯術

全文共6177字,預計學習時長16分鐘

圖源:unsplash

機器學習(ML)被稱為技術債務的高利率信用卡。對於特定的業務問題,使用適用的模型會相對容易一些,但是要使該模型在可伸縮的生產環境中運行,並能夠處理不斷變化的混亂數據語義和關係,以及以可靠的自動化方式演進模式,則完全是另一回事。

對於機器學習生產系統而言,只有5%的實際代碼是模型本身。將一組機器學習解決方案轉變為端到端的機器學習平臺的,是一種運用了加速建模、自動化部署和確保生產中的可伸縮性和可靠性的技術的架構。

筆者此前講過lean D/MLOps,數據和機器學習操作,因為沒有數據的機器學習操作是沒有意義的,所以端到端機器學習平臺需要進行整體構建。CI/CD基金會啟動了一個MLOps特別興趣小組(SIG)。其端到端機器學習平臺確定的步驟如下圖所示:

不過,其中掩蓋了一些不太重要的細節。例如,服務可能需要不同的技術取決於它是否是實時完成的。可伸縮的解決方案通常將模型放在一個負載均衡器後的服務集群的多個機器上的容器內運行。因此,上述圖表中的單個框並不意味著實際平臺的單個步驟、容器或組件。

這並不是對圖中步驟進行批評,而是一個警示:看似簡單的事情在實踐中可能並不那麼容易。

圖表中沒有模型(配置)管理。可以考慮諸如版本控制、實驗管理、運行時統計、用於培訓、測試和驗證數據集的數據沿襲跟蹤,從頭開始或從模型快照、超參數值、精度度量等等對模型進行再培訓的能力。

此外,圖中缺失的另一個關鍵點是檢查模型偏差的能力,例如,根據不同的維度來分割模型的關鍵性能指標。許多公司也需要能夠熱交換一個模型或並行運行多個模型。前者至關重要,可以避免模型在後臺更新時,用戶的請求進入伺服器時失敗。而後者對於A/B測試或模型驗證也舉足輕重。

從CI/CD中我們可以得出另一個觀點,它提到了版本化數據和代碼的需要,這一點經常被忽略。

谷歌:TFX

谷歌開發TensorFlow eXtended(TFX)的主要動機是將機器學習模型的生產時間從數月縮短到幾周。谷歌工程師和科學家為此焦頭爛額,因為「當機器學習需要應用於生產時,實際的工作流程將變得更加複雜。」

TensorFlow和TFX均可免費使用,不過後者在2019年才發布,比谷歌提供的ML基礎設施晚了兩年,遠不如前者成熟。

模型性能度量用於部署安全服務模型。因此,如果新模型的性能不如現有模型,它就無法投入生產。按照TFX的說法,該模型並非幸運兒。有了TFX,整個過程都是自動化的。

以下是一個開源TFX組件的基本概述:

· ExampleGen提取並分割輸入數據集。

· StatisticsGen為數據集計算統計數據。

· SchemaGen檢查統計數據並創建數據模式。

· ExampleValidator在數據集中查找異常值和缺失值。

· Transform對數據集執行特徵工程。

· Trainer使用TensorFlow對模型進行訓練。

· Evaluator分析訓練結果。

· ModelValidator確保模型的高安全性。

· Pusher將模型部署到服務基礎設施中。

TensorFlow服務是一個c++後端,服務於TensorFlow SavedModel文件。為了最小化訓練/服務偏差,TensorFlow轉換會「凍結」計算圖中的值,這樣在訓練中發現的相同值會在服務中使用。當訓練在運行時間是單一的固定值時,DAG可能會有若干個操作。

圖源:unsplash

Uber: Michelangelo

大約在2015年,Uber的ML工程師注意到機器學習系統中隱藏的技術債務。Uber已經建立了一個一次性的自定義系統,與ML模型集成在一起,這在大型工程組織中不是很容易擴展。用他們自己的話來說,沒有合適的系統來建立可靠、統一和可重複的管道以創建和管理大規模的訓練和預測數據。

這就是他們創造Michelangelo的原因。它依賴於Uber的數據湖——事務性和日誌數據,支持離線(批處理)和在線(流)預測。對於脫機預測,包含的Spark作業生成批預測,而對於在線部署,模型在預測服務集群中提供服務,該集群通常由負載均衡器後面的數百臺機器組成,客戶機將單個或批預測請求作為rpc發送到該集群。

為每個實驗存儲與模型管理相關的元數據,例如,訓練師的運行時統計信息、模型配置、沿襲、分布和特性的相對重要性、模型評估指標、標準評估圖表、學習的參數值和匯總統計信息等。

Michelangelo可以在同一個服務容器中部署多個模型,這允許從舊模型版本到新模型版本的安全轉換,以及對模型的並行A/B測試。

Michelangelo的最初版本並不支持深度學習在GPU上進行訓練,但其開發團隊解決了這一遺漏問題。當前平臺使用了Spark的ML管道序列化,但是有一個用於在線服務的附加接口,該接口添加了一個單例(在線)評分方法,可以既輕量級又能夠處理緊密型SLA,例如用於欺詐檢測和預防。它通過繞過Spark SQL的Catalyst優化器的開銷來實現這一點。

值得注意的是,谷歌和Uber都為服務構建了內部協議緩衝區解析器和表示物,避免了默認實現中存在的瓶頸。

Airbnb: Bighead

基於類似原因,Airbnb在2016/2017年建立了自己的ML基礎架構團隊。首先,儘管他們只有幾款模型正在構建中,但每一款模型的構建都可能需要長達三個月的時間。第二,模型之間不存在一致性。第三,線上和線下的預測差異極大。Bighead是其努力的頂峰:

數據管理由內部工具Zipline處理。Redspot是一個託管的、集裝的、多用戶的Jupyter Notebook服務。Bighead庫用於數據轉換和管道提取,為通用模型框架提供了包裝器。其通過轉換保存元數據,因此可用於跟蹤沿襲。

Deep Thought是一個用於在線預測的REST API。Kubernetes對服務進行精心優化。對於離線預測,Airbnb則使用他們自己的自動裝置。

Netflix也面臨著與上述公司類似的問題。他們的解決方案是運用Metaflow,這是一個為數據科學家提供的Python庫,用於處理數據管理和模型訓練,而不提供預測服務。因此,它不是用於機器學習的端到端平臺,可能更適合於公司內部的用例,而不是面向用戶的用例。當然,它可以與由Kubernetes或AWS SageMaker支持的Seldon結合轉化為一個成熟的解決方案。

數據科學家將工作流程寫成DAG步驟,就像數據工程師使用Airflow一樣。和Airflow一樣,可以使用任何數據科學庫,因為Metaflow只執行Python代碼。Metaflow在後臺分布處理和訓練。所有的代碼和數據都會自動快照到S3中,以確保每個模型和實驗都有版本歷史。Pickle是默認的模型序列化格式。

開源版本還沒有內置的調度器。其鼓勵用戶「主要依賴於垂直可伸縮性」,儘管他們可以使用AWS SageMaker實現水平可伸縮性,它與AWS緊密耦合。

Lyft:Flyte

圖源:unsplash

Lyft已開放了其雲本地平臺Flyte,在這個平臺上數據和機器學習操作融合在一起。這與我的D/MLOps方法相一致——數據(Ops)之於MLOps就像燃料之於火箭:沒有它將徒勞無功。

Flyte是建立於Kubernetes之上。它是由Lyft內部使用的,可以擴展到至少7000個獨特的工作流,每個月執行超過100,000次,100萬個任務和1000萬個容器。

Flyte中的所有實體都是不可變的,因此可以跟蹤數據沿襲、重現實驗和削減部署。重複任務可以利用任務緩存來節省時間和金錢。目前支持的任務包括Python、Hive、Presto和Spark以及sidecars。從原始碼來看,似乎是EKS。他們的數據目錄也是Amundsen,這與Spotify的Lexikon很像。

AWS、Azure、GCP和Co

公共雲領域的主要參與者都有自己的機器學習平臺,除了Oracle,他們只為特定的用例和行業提供封閉的基於機器學習的模型。

AWS SageMaker是一個全堆棧的機器學習解決方案,支持TensorFlow、Keras、PyTorch和MXNet。使用SageMaker Neo,可以將模型部署到雲端和邊緣。它有一個內置的功能,可以通過Amazon MechanicalTurk對S3中存儲的數據附上標籤。

谷歌沒有託管平臺,但是通過TFX、Kubeflow和AI平臺,可以將在CPU、GPU和TPUs上運行的模型所需的組件組合在一起,調優超參數,並自動部署到生產環境中。Spotify甚至選擇了TFX/Kubeflow-on-GCP選項。

除了TensorFlow,還有對scikit-learn和XGBoost的支持。自定義容器允許使用任何框架,如PyTorch。SageMaker Ground Truth的標籤服務目前處於測試階段。

Azure機器學習支持多種框架,如scikit-learn、Keras、PyTorch、XGBoost、TensorFlow和MXNet。其擁有自己的D/MLOps套件,其中包含大量的圖形。喜歡模型開發的人可以使用拖放界面,不過也附帶了各種警告。模型和實驗管理,如預期的那樣由微軟通過註冊表完成。使用Azure Kubernetes服務進行生產部署,控制轉出也是可能的。

IBM Watson ML提供了指向和點擊機器學習選項(SPSS)和對常見框架組的支持。作為兩大主要參與者之一,模型是在CPU或GPU上訓練的,超參數調優也包含在框中。該平臺沒有很多關於數據和模型驗證的細節,因為這些在其他IBM產品中是可用的。

儘管阿里巴巴的人工智慧機器學習平臺標榜著兩個流行詞,但它並沒有改進文檔,關於最佳實踐的部分寫的是用例而非建議。

不管怎樣,它在拖放方面下了功夫,特別是在數據管理和建模方面,這可能對一個自動化的端到端ML平臺幫助不大。該平臺支持諸如TensorFlow、MXNet和Caffe等框架,但它也支持大量的傳統算法。正如所料,它還包括一個超參數調諧器。

模型序列化使用PMML、TensorFlow的SavedModel格式或Caffe格式完成。請注意,採用PMML、ONNX或PFA文件的評分引擎可能會支持快速部署,但它有引入培訓/服務傾斜的風險,因為服務的模型是從不同的格式加載的。

其他平臺

H2O提供了一個使用POJO或MOJO進行數據操作、多種算法、交叉驗證、超參數調優網格搜索、特性排序和模型序列化的平臺。

valohai——芬蘭語:輕鯊,是一個管理機器學習平臺,其可在私有、公共、混合或多雲設置上運行。

每個操作(或執行)都對Docker Image運行一個命令,類似於Kubeflow。二者主要區別在於,Valohai直接管理Kubernetes部署集群,而Kubeflow要求開發人員執行這一任務。

然而,Kubeflow和TFX認為他們提供了一些與TensorFlow相關的工具。使用Valohai,需要重用現有的Docker Image,或者滾動自己的Docker Image,這意味著可使用任何機器學習框架,但是自由度必須與可維護性考慮相權衡。

因此,可以通過Spark、Horovod、TensorFlow或任何適配個人需求和基礎設施的工具來分配訓練,但這些都由個人決定。這還意味著要負責確保數據轉換的兼容性,以避免訓練/服務傾斜。注意,它目前只支持對象存儲。

Iguazio提到了從筆記本或IDE在幾秒鐘內部署的能力,儘管這似乎錯過了最常見的場景:CI/CD管道,甚至是包含TFX的Pusher組件的平臺本身。它使用Kubeflow進行工作流編制。

Iguazio確實具備功能商店,可為鍵值對和時間序列提供統一的API。儘管大多數大型科技公司都有特色商店,但許多可用的產品卻並不具備。

功能商店處於核心位置,具有可在多個模型之間共享以加速模型開發的可隨時重用的功能。它可以在企業規模上實現特性工程自動化。例如,可以從時間戳中提取許多特性:年、季節、月、星期、時間、是否為本地假日、自最新相關事件以來所經過的時間、特定事件在固定窗口中發生的頻率,等等。

SwiftStack AI通過RAPIDS套件面向NVIDIA gpu的高吞吐量深度學習。RAPIDS提供了庫,比如cuML,允許人們使用熟悉的scikit-learn API,但受益於GPU加速支持的算法,以及用於GPU驅動的圖形分析的cuGraph。

AI層是D/MLOps的API,其內置了對多個數據源、程式語言和機器學習框架的支持。

MLflow由Databricks支持,這解釋了與Spark的緊密集成。它提供了一組有限的部署選項。例如,在PySpark中將模型導出為矢量化的UDF的能力對實時系統來說不是最合理的,因為Python UDF帶來了Python運行時環境和JVM之間的通信開銷。

儘管開銷沒有使用標準PySpark UDFs那麼大,因在Python和JVM之間的傳輸中使用了Apache Arrow(一種內存中的柱狀格式),也不是無關緊要的。如果使用Spark Sreaming作為默認的數據提取解決方案,那麼使用Spark的微批處理模型可能很難實現亞秒延遲。

對日誌記錄的支持仍然處於實驗階段,這對於D/MLOps來說是非常重要的。從文檔可以看出,MLflow並不關注數據和模型驗證,至少不是平臺的標準部分。有一個MLflow的託管版本(在AWS和Azure上)提供了更多的特性。

D2iQ的KUDO for Kubeflow是一個基於Kubeflow的面向企業客戶的平臺。與開源的Kubeflow不同,它自帶Spark和Horovod,以及對TensorFlow、PyTorch和MXNet等主要框架進行預構建和完全測試的CPU/GPU圖像。數據科學家可以在筆記本中部署表單,而不需要切換情景。

圖源:unsplash

默認情況下,它支持多用戶使用。集成了Istio和Dex以實現額外的安全性和身份驗證。Kubeflow的KUDO位於Konvoy之上,是D2iQ的託管Kubernetes平臺。它可以運行在雲、On-Prem、混合或在邊緣,還可用於氣隙集群的埠。

在Kubernet中,Kubeflow中的KUDO是用KUDO定義的操作符集合,KUDO是一個聲明性工具包,用於使用YAML創建Kubernetes操作符,而非Go。Kubernetes統一聲明操作符(KUDOs)的Cassandra、Elastic、Flink、Kafka、Redis等都是開源的,可以與平臺集成。

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 語音翻譯也能端到端?深度學習這條路有戲!
    端到端技術是當前語音翻譯的研究前沿,科大訊飛聯合優化語音識別和機器翻譯的新技術路線,理論上更具前景,一旦技術研究成功,將為翻譯機器性能的提升帶來極大促進。提問:語音翻譯涉及哪些步驟?你或許會說,語音識別和機器翻譯——沒錯,傳統的語音翻譯通常採用語音識別和機器翻譯級聯的方式實現,對輸入語音先進行語音識別得到文本結果,然後再基於文本進行機器翻譯,這也是當前語音翻譯採用的主流方法。
  • 聊聊C端轉型B端產品那些事
    03 B端產品有哪些方向既然想要轉型B端產品,那就應該了解一下目前在B端市場具體有哪些類型的產品,其實在分類上有很多不同的歸納,以下這三個方向是我結合自己的理解和認知劃分的,第一類大的方向就是面向企業內部的業務平臺,很多人可能覺得這不屬於B端,但是其實這是體量最大的方向,比方說很多人可能目前都會涉及到的訂單系統
  • 「學習強國」學習平臺電視端在浙江率先上線
    浙江新聞客戶端記者 陸斯超今天下午,「學習強國」浙江學習平臺上線兩周年主題活動暨「學習強國」學習平臺電視端上線儀式在浙江日報報業集團舉行。活動回顧了浙江學習平臺兩年來的建設成果。據悉,浙江學習平臺自2019年1月上線以來,按照學習強國學習平臺的功能定位,主動適應新形勢新變化新要求,在運營推廣方面不斷創新理念,著力推動學習平臺廣泛覆蓋、常態運用,在全省掀起學習之風,營造學習氛圍,各項工作成效明顯。
  • 吳恩達deeplearning.ai新課上線:TensorFlow移動和web端機器學習
    該專項課程總共分為四個部分,主旨在於幫助學習者了解如何讓機器學習模型從實驗階段走向實際應用。首先,你可以了解到在瀏覽器和行動裝置中訓練模型。同時,你可以學習如何僅用幾行代碼使用內置數據集、完成數據分割和處理各種非結構化數據的工作。最後,你還能了解很多應用場景,並了解 TensorFlow Serving、TensorFlow Hub、TensorBoard 等。
  • 谷歌AI推出端到端純語音翻譯技術,有望成為未來的「機器同傳」
    該模型是一個基於注意力機制(Attention)的端到端語音翻譯神經網絡。它不同於傳統語音翻譯技術,在翻譯的過程中省略了中間步驟,完全不需要進行語音轉文字和完成翻譯的文字轉語音,而是根據翻譯內容,嘗試匹配不同語言的語音頻譜圖(speech spectrogram),直接完成語音之間的轉換。
  • 購買端泵雷射打標機需要了解到哪些方面
    如果需要去購買端泵雷射打標機,也是應該要讓自己能夠提前去了解到有關哪些問題,會比較好,提前了解到相應的一些問題了,以後也就能夠很好地去幫助大家解決一些不必要的麻煩,能夠讓自己感覺到更加放心,那麼購買端泵雷射打標機需要了解到哪些方面?
  • 基於元學習和人機協同的端到端對話模型
    圍繞 Dialog Studio,我們有系列文章:【1】一個中心+三大原則 -- 小蜜這樣做智能對話開發平臺【2】自然語言理解-從規則到深度學習【3】Few-shot Learning 最新進展【4】EMNLP
  • 帶你讀論文 | 端到端語音識別模型
    隨著端到端神經網絡在機器翻譯、語音生成等方面的進展,端到端的語音識別也達到了和傳統方法可比的性能。不同於傳統方法將語音識別任務分解為多個子任務(詞彙模型,聲學模型和語言模型),端到端的語音識別模型基於梅爾語譜作為輸入,能夠直接產生對應的自然語言文本,大大簡化了模型的訓練過程,從而越來越受到學術界和產業界的關注。
  • CVPR 2018 | 騰訊AI Lab、MIT等機構提出TVNet:可端到端學習視頻的運動表徵
    參與:Panda儘管端到端的特徵學習已經取得了重要的進展,但是人工設計的光流特徵仍然被廣泛用於各類視頻分析任務中。為了彌補這個不足,由來自騰訊 AI Lab、MIT、清華、史丹福大學的研究者完成併入選 CVPR 2018 Spotlight 論文的一項研究提出了一種能從數據中學習出類光流特徵並且能進行端到端訓練的神經網絡:TVNet。機器之心對本論文進行了摘要介紹,詳情請參閱原論文。另外,該研究成果的 TensorFlow 實現已經發布在 GitHub 上。
  • 阿德萊德大學博士後劉禹良:端到端可訓練任意形狀的實時場景文本...
    因此,如何設計一個簡單而有效的端到端框架,用於在圖像中定向或彎曲的場景文本定位,並在確保快速的推斷時間的同時,同達到了與最先進方法相媲美甚至更好的性能的方法非常關鍵。ABCNet,是一種基於貝塞爾曲線的、端到端可識別任意形狀的場景文本識別網絡。
  • 虛擬教育走進英語學習場景,「MageVR」打造「VR端+手機端」學習...
    36氪近期接觸的項目「MageVR」,是北京等賢科技開發的一款虛擬實境學習產品,面向B端和C端提供近千節精品課程和優質的VR互動體驗。在「MageVR」聯合創始人關天智看來,VR軟體市場目前還沒有一個統一標準,比較混亂。
  • 桌面端1.0讓工作學習「輕+快」
    隨著全球化日益深入,快速理解、獲取外語信息愈發重要。但由於信息渠道多樣,在翻譯過程中需頻繁切換工具,導致信息翻譯速度和理解效率低下,這也成為當前電腦工作、學習時使用翻譯的痛點。百度翻譯桌面端語種展示首先,「極簡模式」一鍵即可切換。極簡模式下產品在電腦中僅有輸入框大小,不僅可設置懸浮在當前工作學習界面上,還能隨意拖動,不遮擋翻譯內容,實現高效翻譯。
  • 學界| 谷歌新論文提出預測器架構:端到端的學習與規劃
    選自arxiv.org機器之心編譯參與:Jane W論文:預測器:端到端的學習和規劃(The Predictron: End-To-End Learning and Planning)摘要人工智慧的主要挑戰之一是在有規劃的情況下有效地學習模型。
  • 阿里正式開源輕量級深度學習端側推理引擎「MNN」
    阿里近日正式開源了輕量級深度學習端側推理引擎「MNN」。與 Tensorflow、Caffe2 等同時覆蓋訓練和推理的通用框架相比,MNN 更注重在推理時的加速和優化,在大規模機器學習應用中具有優勢。本文詳細闡述了MNN背後的技術框架和規劃。 近日,阿里正式開源輕量級深度學習端側推理引擎「MNN」。
  • 讓AI造福金融,支付寶端到端AI系統SQLFlow實踐
    導語:端到端機器學習是一種由輸入端的數據直接得到輸出端結果的AI系統,它可以對業務人員屏蔽複雜技術細節,同時給模型以更多自動調節空間,增加模型整體契合度。近兩年來,端到端機器學習成為AI領域研發熱點,螞蟻集團於2019年4月發布端到端AI系統SQLFlow開源項目,受到業界廣泛關注。
  • D2iQ新品KUDO for Kubeflow企業級K8s機器學習平臺
    (原標題:D2iQ新品KUDO for Kubeflow企業級K8s機器學習平臺)
  • 全球端到端,冷鏈跨國追溯!卡奧斯食安碼接入國家級平臺,助力全球...
    為進一步強化新冠病毒輸入風險「物防」措施,國家市場監管總局隨即建成並上線運行全國進口冷鏈食品追溯管理平臺。在此背景下,卡奧斯食安碼(簡稱「食安碼」)憑藉其「來源可溯、去向可查、數據保真」的優勢,將接入全國進口冷鏈食品追溯管理平臺,實現全球端到端跨國追溯。
  • 語音識別新範式:完全的「端到端」模型,優勢在哪裡?
    語音識別新範式以自然語言處理的子領域「語音識別」為例,從 2012 年引入深度學習技術開始,語音識別的研究熱點經歷了三個階段:2011 年前後,基於 DNN+HMM(深度神經網絡+隱馬爾科夫模型)的語音識別 2014 年前後,基於 LSTM+CTC(長短時記憶網絡+連接時序分類)的不完全端到端語音識別
  • DeepMind端到端對抗語音合成
    機器之心 & ArXiv Weekly Radiostation參與:杜偉、楚航、羅若天本周的重要論文包括哈佛大學首屆計算機科學傑出博士論文,以及DeepMind提出的端到端對抗語音生成。
  • Ingenu推出了智慧城市計劃,提供即時可用的端到端智能城市平臺
    無線的下一個階段5G是建議的無線通信標準的下一階段,雖然它目前正在開發中,但它被視為當前4G系統的必要發展,這是由於物聯網(IoT)技術的出現,無線數據的大量增加,物聯網傳感器構成了智能城市戰略的支柱,從路燈到井蓋的所有內容都產生了需要傳輸,分析和利用的數據。