0

過去十年中,機器學習(ML)已經讓無數應用和服務發生了天翻地覆的變化。隨著其在實際應用中的重要性日益增強,這使人們意識到需要從機器學習系統(MLOps)視角考察機器學習遇到的新挑戰。
那么這些新挑戰是什么呢?
近日,加州大學一位年僅17歲的博士生,在一篇博文中指出:
機器學習系統是ML在實踐中的新領域,該領域在計算機系統和機器學習之間發揮著橋梁性的作用。所以,應從傳統系統的思維中考察數據收集、驗證以及模型訓練等環節的“新情況”。

圖注:機器學習系統架構
以下是原文,AI科技科技評論做了不改變愿意的編譯和刪減
雖然研究人員偏向于使用現成的數據集,例如CIFAR或SQuAD,但從模型訓練的角度來看,從業者往往需要手動標記和生成自定義數據集。但是,創建這樣的數據集非常昂貴,尤其是在需要領域專業知識的情況下。
因此,數據收集是對系統開發者來說是機器學習中的一項主要挑戰。
當前,對這個挑戰最成功的解決方案之一借用了系統和機器學習的研究。例如SnorkelAI采用了 "弱監督數據編程 "(weakly-supervised data programming)的方法,將數據管理技術與自我監督學習的工作結合了起來。
具體操作是:SnorkelAI將數據集的創建重新構想為編程問題,用戶可以指定弱監督標簽的函數,然后將其合并和加權以生成高質量的標簽。專家標記的數據(高質量)和自動標記的數據(低質量)可以被合并和跟蹤,這樣能夠考慮到不同水平的標簽質量,以確保模型訓練被準確加權。

圖注:SnorkelAI結合了不同來源的標簽,使模型能夠大限度聚集和改進混合質量的標簽。
這一技術讓人聯想到數據庫管理系統中的數據融合,通過識別系統和ML的共同問題(組合數據來源),我們可以將傳統的系統技術應用于機器學習。
數據驗證是數據收集的后續工作。數據質量是機器學習的關鍵問題,用一句俗話來說,就是 "垃圾進,垃圾出(garbage in, garbage out)"。因此,要想系統產生高質量的模型,必須確保輸入的數據也是高質量的。
解決這個問題,所需要的不僅是調整機器學習方法,更需要有調整系統的思維。幸運的是,雖然對ML來說數據驗證是一個新問題,但數據驗證在業界早已有討論:
引用TensorFlow數據驗證(TFDV)的論文:
TFDV的解決方案采用來自數據管理系統的 "戰斗考驗 (battle-tested)"解決方案——模式化。數據庫強制執行屬性,以確保數據輸入和更新符合特定的格式。同樣,TFDV的數據模式也對輸入到模型中的數據執行規則。

圖注:TensorFlow數據驗證的基于模式的ML數據驗證系統使用戶能夠防止生產系統中的數據輸入出現異常。
當然,也有一些差異,反映了機器學習系統與傳統模式的不同。考慮到數據分布的變化,ML模式需要隨著時間的推移而演變和調整,還需要考慮在系統的生命周期內可能對模型本身做出的改變。
很明顯,機器學習帶來了一種新型的系統挑戰。但是,這些系統帶來了很多舊東西的同時也帶來了新的東西。在我們尋求重塑車輪之前,我們應該利用已有的東西。
ML從業者可能會驚訝于將模型訓練作為系統優化的一個領域。畢竟,如果說機器學習應用中有一個領域真正依賴于ML技術,那就是訓練。但即便是這樣,系統研究也要發揮作用。
以模型并行化為例。隨著Transformers的興起,ML模型的規模都有了極大的增加。幾年前,BERT-Large僅僅只超過了345M的參數,而現在Megatron-LM擁有超過萬億的參數。
這些模型的絕對內存成本可以達到數百GB,且單一的GPU已經承受不住。傳統的解決方案,即模型并行化,采取了一個相對簡單的方法:為了分配內存成本,將模型劃分到不同的設備。

傳統的模型并行化會受到神經網絡架構順序的影響。高效并行計算的機會是有限的。
但這種技術是有問題的:模型本質是順序的,訓練它需要在各層中前后傳遞數據。一次只能使用一個層,也只能使用一個設備。這意味著會導致設備利用率不足。
系統研究如何提供幫助?
考慮一個深度神經網絡。將其分解為最基本的組件,可以將它看作一系列轉換數據的運算器。訓練僅指我們通過運算器傳遞數據,產生梯度,并通過運算器反饋梯度,然后不斷更新的過程。
在這一級別上,該模型開始進行類似于其他階段的操作——例如,CPU的指令流水線(instruction pipeline)。有兩個系統,GPipe和Hydra,試圖利用這種并行的方式來應用系統優化的可擴展性和并行性。
GPipe采用CPU指令并行的方式,將模型訓練變成一個流水線問題。模型的每個分區都被認為是流水線的不同階段,分階段進行小型批次通過分區,以最大限度地提高利用率。

流水線并行是順序模型并行中最先進的技術,它使訓練在小型批次中并行。但同步開銷可能很昂貴,特別是在前向和后向的轉換中。
然而,請注意,在反向傳播中,階段是以相反的順序重復使用的。這意味著,在前向流水線完全暢通之前,反向傳播不能開始。盡管如此,這種技術可以在很大程度上加快模型的并行訓練:8個GPU可以加速5倍!
Hydra采取了另一種方法,將可擴展性和并行性分離成兩個不同的步驟。數據庫管理系統中的一個常見概念是 "溢出",即將多余的數據發送到內存層次的較低的級別。Hydra利用了模型并行中的順序計算,并提出不活躍的模型分區不需要在GPU上。相反,它將不需要的數據交給DRAM,將模型分區在GPU上交換,從而模擬傳統模型并執行。

Hydra的模型溢出技術(Hydra’s model spilling technique )將深度學習訓練的成本分給DRAM而不是GPU內存,同時保持了GPU執行的加速優勢。
這使我們可以一次只使用一個GPU進行訓練模型。那么,在此基礎上引入一定程度的任務并行性是微不足道的。每個模型,無論其大小,一次只需要一個GPU,所以系統可以同時充分利用每個GPU。其結果是在8個GPU的情況下,速度提高了7.4倍以上,接近最佳狀態。
但模型并行化只是系統研究幫助模型訓練的開始。其他有前景的貢獻包括數據并行(如PyTorch DDP)、模型選擇(如Cerebro或模型選擇管理系統)、分布式框架(Spark或Ray)等等。因此,模型訓練是一個可以通過系統研究進行優化的領域。
說到底,構建機器學習模型是為了使用。模型服務和預測是機器學習實踐中最關鍵的方面之一,也是系統研究影響最大的空間之一。
預測分為兩個主要設定:離線部署和在線部署。離線部署相對簡單,它涉及不定期運行單一且大批量預測工作。常見的設定包括商業智能、保險評估和醫療保健分析。在線部署屬于網絡應用,在這種應用中,需要快速、低延遲的預測,以滿足用戶查詢的快速響應。
這兩種設定都有各自的需求和要求。一般來說,離線部署需要高吞吐量的訓練程序來快速處理大量樣本。另一方面,在線部署一般需要在單個預測上有極快的周轉時間,而不是同時有許多預測。
系統研究改變了我們處理這兩項任務的方式。以Krypton為例,它把視頻分析重新想象為 "多查詢優化"(MQO)任務的工具。
MQO并不是一個新領域——幾十年來它一直是關系型數據庫設計的一部分。總體思路很簡單:不同的查詢可以共享相關的組件,然后這些組件可以被保存和重復使用。Krypton指出,CNN的推論通常是在成批量的相關圖像上進行的,例如視頻分析。
通常情況下,視頻的特征是高幀率,這意味著連續幀往往是比較相似的。幀1中的大部分信息在幀2中仍然存在。這里與MQO有一個明顯的平行關系:我們有一系列任務,它們之間有共享的信息。
Krypton在第1幀上運行一個常規推理,然后將CNN在預測時產生的中間數據具體化,或保存起來。隨后的圖像與第1幀進行比較,以確定圖像的哪些地方發生了大的變化,哪些需要重新計算。一旦確定了補丁程序,Krypton就會通過CNN計算補丁的 "變化域",從而確定在模型的整個狀態下,哪些神經元輸出發生了變化。這些神經元會隨著變化后的數據重新運行。其余的數據則只從基本幀中重復使用!
結果是:端到端訓練提速超過4倍,數據滯后造成的精度損失很小。這種運行時間的改進對于需要長期運行的流媒體應用至關重要。
Krypton在關注模型推理方面并不是唯一的。其他作品,如Clipper和TensorFlow Extended,通過利用系統優化和模型管理技術,提供高效和健全的預測,解決了同樣的高效預測服務問題。
機器學習已經徹底改變了我們使用數據和與數據互動的方式。它提高了企業的效率,從根本上改變了某些行業的前景。但是,為了使機器學習繼續擴大其影響范圍,某些流程必須得到改善。系統研究通過將數據庫系統、分布式計算和應用部署領域的數十年工作引入機器學習領域,能夠提高機器學習的表現。
雖然機器學習非常新穎和令人興奮,但它的許多問題卻不是。通過識別相似之處和改善舊的解決方案,我們可以使用系統來重新設計ML。
作者簡介

Kabir Nagrecha是加州大學圣地亞哥分校的博士生,由Arun Kumar指導。
13歲時,通過提前入學計劃進入大學。從那時起,就一直在工業界和學術界從事機器學習領域的研究。
曾獲得加州大學圣地亞哥分校卓越研究獎、CRA杰出本科生研究員等榮譽。目前正在蘋果的Siri小組實習。他的研究側重于通過使用系統技術實現深度學習的可擴展性。

雷鋒網雷鋒網雷鋒網
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。