0
本文作者: 我在思考中 | 2021-10-09 17:28 |
過去十年中,機器學(xué)習(xí)(ML)已經(jīng)讓無數(shù)應(yīng)用和服務(wù)發(fā)生了天翻地覆的變化。隨著其在實際應(yīng)用中的重要性日益增強,這使人們意識到需要從機器學(xué)習(xí)系統(tǒng)(MLOps)視角考察機器學(xué)習(xí)遇到的新挑戰(zhàn)。
那么這些新挑戰(zhàn)是什么呢?
近日,加州大學(xué)一位年僅17歲的博士生,在一篇博文中指出:
機器學(xué)習(xí)系統(tǒng)是ML在實踐中的新領(lǐng)域,該領(lǐng)域在計算機系統(tǒng)和機器學(xué)習(xí)之間發(fā)揮著橋梁性的作用。所以,應(yīng)從傳統(tǒng)系統(tǒng)的思維中考察數(shù)據(jù)收集、驗證以及模型訓(xùn)練等環(huán)節(jié)的“新情況”。
圖注:機器學(xué)習(xí)系統(tǒng)架構(gòu)
以下是原文,AI科技科技評論做了不改變愿意的編譯和刪減
雖然研究人員偏向于使用現(xiàn)成的數(shù)據(jù)集,例如CIFAR或SQuAD,但從模型訓(xùn)練的角度來看,從業(yè)者往往需要手動標(biāo)記和生成自定義數(shù)據(jù)集。但是,創(chuàng)建這樣的數(shù)據(jù)集非常昂貴,尤其是在需要領(lǐng)域?qū)I(yè)知識的情況下。
因此,數(shù)據(jù)收集是對系統(tǒng)開發(fā)者來說是機器學(xué)習(xí)中的一項主要挑戰(zhàn)。
當(dāng)前,對這個挑戰(zhàn)最成功的解決方案之一借用了系統(tǒng)和機器學(xué)習(xí)的研究。例如SnorkelAI采用了 "弱監(jiān)督數(shù)據(jù)編程 "(weakly-supervised data programming)的方法,將數(shù)據(jù)管理技術(shù)與自我監(jiān)督學(xué)習(xí)的工作結(jié)合了起來。
具體操作是:SnorkelAI將數(shù)據(jù)集的創(chuàng)建重新構(gòu)想為編程問題,用戶可以指定弱監(jiān)督標(biāo)簽的函數(shù),然后將其合并和加權(quán)以生成高質(zhì)量的標(biāo)簽。專家標(biāo)記的數(shù)據(jù)(高質(zhì)量)和自動標(biāo)記的數(shù)據(jù)(低質(zhì)量)可以被合并和跟蹤,這樣能夠考慮到不同水平的標(biāo)簽質(zhì)量,以確保模型訓(xùn)練被準(zhǔn)確加權(quán)。
圖注:SnorkelAI結(jié)合了不同來源的標(biāo)簽,使模型能夠大限度聚集和改進混合質(zhì)量的標(biāo)簽。
這一技術(shù)讓人聯(lián)想到數(shù)據(jù)庫管理系統(tǒng)中的數(shù)據(jù)融合,通過識別系統(tǒng)和ML的共同問題(組合數(shù)據(jù)來源),我們可以將傳統(tǒng)的系統(tǒng)技術(shù)應(yīng)用于機器學(xué)習(xí)。
數(shù)據(jù)驗證是數(shù)據(jù)收集的后續(xù)工作。數(shù)據(jù)質(zhì)量是機器學(xué)習(xí)的關(guān)鍵問題,用一句俗話來說,就是 "垃圾進,垃圾出(garbage in, garbage out)"。因此,要想系統(tǒng)產(chǎn)生高質(zhì)量的模型,必須確保輸入的數(shù)據(jù)也是高質(zhì)量的。
解決這個問題,所需要的不僅是調(diào)整機器學(xué)習(xí)方法,更需要有調(diào)整系統(tǒng)的思維。幸運的是,雖然對ML來說數(shù)據(jù)驗證是一個新問題,但數(shù)據(jù)驗證在業(yè)界早已有討論:
引用TensorFlow數(shù)據(jù)驗證(TFDV)的論文:
TFDV的解決方案采用來自數(shù)據(jù)管理系統(tǒng)的 "戰(zhàn)斗考驗 (battle-tested)"解決方案——模式化。數(shù)據(jù)庫強制執(zhí)行屬性,以確保數(shù)據(jù)輸入和更新符合特定的格式。同樣,TFDV的數(shù)據(jù)模式也對輸入到模型中的數(shù)據(jù)執(zhí)行規(guī)則。
圖注:TensorFlow數(shù)據(jù)驗證的基于模式的ML數(shù)據(jù)驗證系統(tǒng)使用戶能夠防止生產(chǎn)系統(tǒng)中的數(shù)據(jù)輸入出現(xiàn)異常。
當(dāng)然,也有一些差異,反映了機器學(xué)習(xí)系統(tǒng)與傳統(tǒng)模式的不同??紤]到數(shù)據(jù)分布的變化,ML模式需要隨著時間的推移而演變和調(diào)整,還需要考慮在系統(tǒng)的生命周期內(nèi)可能對模型本身做出的改變。
很明顯,機器學(xué)習(xí)帶來了一種新型的系統(tǒng)挑戰(zhàn)。但是,這些系統(tǒng)帶來了很多舊東西的同時也帶來了新的東西。在我們尋求重塑車輪之前,我們應(yīng)該利用已有的東西。
ML從業(yè)者可能會驚訝于將模型訓(xùn)練作為系統(tǒng)優(yōu)化的一個領(lǐng)域。畢竟,如果說機器學(xué)習(xí)應(yīng)用中有一個領(lǐng)域真正依賴于ML技術(shù),那就是訓(xùn)練。但即便是這樣,系統(tǒng)研究也要發(fā)揮作用。
以模型并行化為例。隨著Transformers的興起,ML模型的規(guī)模都有了極大的增加。幾年前,BERT-Large僅僅只超過了345M的參數(shù),而現(xiàn)在Megatron-LM擁有超過萬億的參數(shù)。
這些模型的絕對內(nèi)存成本可以達到數(shù)百GB,且單一的GPU已經(jīng)承受不住。傳統(tǒng)的解決方案,即模型并行化,采取了一個相對簡單的方法:為了分配內(nèi)存成本,將模型劃分到不同的設(shè)備。
傳統(tǒng)的模型并行化會受到神經(jīng)網(wǎng)絡(luò)架構(gòu)順序的影響。高效并行計算的機會是有限的。
但這種技術(shù)是有問題的:模型本質(zhì)是順序的,訓(xùn)練它需要在各層中前后傳遞數(shù)據(jù)。一次只能使用一個層,也只能使用一個設(shè)備。這意味著會導(dǎo)致設(shè)備利用率不足。
系統(tǒng)研究如何提供幫助?
考慮一個深度神經(jīng)網(wǎng)絡(luò)。將其分解為最基本的組件,可以將它看作一系列轉(zhuǎn)換數(shù)據(jù)的運算器。訓(xùn)練僅指我們通過運算器傳遞數(shù)據(jù),產(chǎn)生梯度,并通過運算器反饋梯度,然后不斷更新的過程。
在這一級別上,該模型開始進行類似于其他階段的操作——例如,CPU的指令流水線(instruction pipeline)。有兩個系統(tǒng),GPipe和Hydra,試圖利用這種并行的方式來應(yīng)用系統(tǒng)優(yōu)化的可擴展性和并行性。
GPipe采用CPU指令并行的方式,將模型訓(xùn)練變成一個流水線問題。模型的每個分區(qū)都被認為是流水線的不同階段,分階段進行小型批次通過分區(qū),以最大限度地提高利用率。
流水線并行是順序模型并行中最先進的技術(shù),它使訓(xùn)練在小型批次中并行。但同步開銷可能很昂貴,特別是在前向和后向的轉(zhuǎn)換中。
然而,請注意,在反向傳播中,階段是以相反的順序重復(fù)使用的。這意味著,在前向流水線完全暢通之前,反向傳播不能開始。盡管如此,這種技術(shù)可以在很大程度上加快模型的并行訓(xùn)練:8個GPU可以加速5倍!
Hydra采取了另一種方法,將可擴展性和并行性分離成兩個不同的步驟。數(shù)據(jù)庫管理系統(tǒng)中的一個常見概念是 "溢出",即將多余的數(shù)據(jù)發(fā)送到內(nèi)存層次的較低的級別。Hydra利用了模型并行中的順序計算,并提出不活躍的模型分區(qū)不需要在GPU上。相反,它將不需要的數(shù)據(jù)交給DRAM,將模型分區(qū)在GPU上交換,從而模擬傳統(tǒng)模型并執(zhí)行。
Hydra的模型溢出技術(shù)(Hydra’s model spilling technique )將深度學(xué)習(xí)訓(xùn)練的成本分給DRAM而不是GPU內(nèi)存,同時保持了GPU執(zhí)行的加速優(yōu)勢。
這使我們可以一次只使用一個GPU進行訓(xùn)練模型。那么,在此基礎(chǔ)上引入一定程度的任務(wù)并行性是微不足道的。每個模型,無論其大小,一次只需要一個GPU,所以系統(tǒng)可以同時充分利用每個GPU。其結(jié)果是在8個GPU的情況下,速度提高了7.4倍以上,接近最佳狀態(tài)。
但模型并行化只是系統(tǒng)研究幫助模型訓(xùn)練的開始。其他有前景的貢獻包括數(shù)據(jù)并行(如PyTorch DDP)、模型選擇(如Cerebro或模型選擇管理系統(tǒng))、分布式框架(Spark或Ray)等等。因此,模型訓(xùn)練是一個可以通過系統(tǒng)研究進行優(yōu)化的領(lǐng)域。
說到底,構(gòu)建機器學(xué)習(xí)模型是為了使用。模型服務(wù)和預(yù)測是機器學(xué)習(xí)實踐中最關(guān)鍵的方面之一,也是系統(tǒng)研究影響最大的空間之一。
預(yù)測分為兩個主要設(shè)定:離線部署和在線部署。離線部署相對簡單,它涉及不定期運行單一且大批量預(yù)測工作。常見的設(shè)定包括商業(yè)智能、保險評估和醫(yī)療保健分析。在線部署屬于網(wǎng)絡(luò)應(yīng)用,在這種應(yīng)用中,需要快速、低延遲的預(yù)測,以滿足用戶查詢的快速響應(yīng)。
這兩種設(shè)定都有各自的需求和要求。一般來說,離線部署需要高吞吐量的訓(xùn)練程序來快速處理大量樣本。另一方面,在線部署一般需要在單個預(yù)測上有極快的周轉(zhuǎn)時間,而不是同時有許多預(yù)測。
系統(tǒng)研究改變了我們處理這兩項任務(wù)的方式。以Krypton為例,它把視頻分析重新想象為 "多查詢優(yōu)化"(MQO)任務(wù)的工具。
MQO并不是一個新領(lǐng)域——幾十年來它一直是關(guān)系型數(shù)據(jù)庫設(shè)計的一部分。總體思路很簡單:不同的查詢可以共享相關(guān)的組件,然后這些組件可以被保存和重復(fù)使用。Krypton指出,CNN的推論通常是在成批量的相關(guān)圖像上進行的,例如視頻分析。
通常情況下,視頻的特征是高幀率,這意味著連續(xù)幀往往是比較相似的。幀1中的大部分信息在幀2中仍然存在。這里與MQO有一個明顯的平行關(guān)系:我們有一系列任務(wù),它們之間有共享的信息。
Krypton在第1幀上運行一個常規(guī)推理,然后將CNN在預(yù)測時產(chǎn)生的中間數(shù)據(jù)具體化,或保存起來。隨后的圖像與第1幀進行比較,以確定圖像的哪些地方發(fā)生了大的變化,哪些需要重新計算。一旦確定了補丁程序,Krypton就會通過CNN計算補丁的 "變化域",從而確定在模型的整個狀態(tài)下,哪些神經(jīng)元輸出發(fā)生了變化。這些神經(jīng)元會隨著變化后的數(shù)據(jù)重新運行。其余的數(shù)據(jù)則只從基本幀中重復(fù)使用!
結(jié)果是:端到端訓(xùn)練提速超過4倍,數(shù)據(jù)滯后造成的精度損失很小。這種運行時間的改進對于需要長期運行的流媒體應(yīng)用至關(guān)重要。
Krypton在關(guān)注模型推理方面并不是唯一的。其他作品,如Clipper和TensorFlow Extended,通過利用系統(tǒng)優(yōu)化和模型管理技術(shù),提供高效和健全的預(yù)測,解決了同樣的高效預(yù)測服務(wù)問題。
機器學(xué)習(xí)已經(jīng)徹底改變了我們使用數(shù)據(jù)和與數(shù)據(jù)互動的方式。它提高了企業(yè)的效率,從根本上改變了某些行業(yè)的前景。但是,為了使機器學(xué)習(xí)繼續(xù)擴大其影響范圍,某些流程必須得到改善。系統(tǒng)研究通過將數(shù)據(jù)庫系統(tǒng)、分布式計算和應(yīng)用部署領(lǐng)域的數(shù)十年工作引入機器學(xué)習(xí)領(lǐng)域,能夠提高機器學(xué)習(xí)的表現(xiàn)。
雖然機器學(xué)習(xí)非常新穎和令人興奮,但它的許多問題卻不是。通過識別相似之處和改善舊的解決方案,我們可以使用系統(tǒng)來重新設(shè)計ML。
作者簡介
Kabir Nagrecha是加州大學(xué)圣地亞哥分校的博士生,由Arun Kumar指導(dǎo)。
13歲時,通過提前入學(xué)計劃進入大學(xué)。從那時起,就一直在工業(yè)界和學(xué)術(shù)界從事機器學(xué)習(xí)領(lǐng)域的研究。
曾獲得加州大學(xué)圣地亞哥分校卓越研究獎、CRA杰出本科生研究員等榮譽。目前正在蘋果的Siri小組實習(xí)。他的研究側(cè)重于通過使用系統(tǒng)技術(shù)實現(xiàn)深度學(xué)習(xí)的可擴展性。
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。