度小滿自動機器學習平台實踐

PHPz
發布: 2023-04-12 21:40:01
轉載
1095 人瀏覽過

度小滿自動機器學習平台實踐

隨著AI 技術的發展,不同業務涉及的AI 技術越來越多樣,同時AI 模型參數量逐年爆發式成長,如何克服AI 演算法落地面臨的開發成本高、對人工依賴強、演算法不穩定及落地週期長等問題,成為困擾人工智慧從業人員的難題。而「自動機器學習平台」是解決 AI 落地壓力的關鍵方法。今天會和大家分享下度小滿在建立自動機器學習平台 ATLAS 的實務經驗。

一、機器學習平台

#先介紹度小滿機器學習平台的背景、發展過程以及現狀。

1、業務場景

度小滿自動機器學習平台實踐

#度小滿是一家金融科技公司,公司內部的業務場景主要分為三個面向:

  • 智慧風控:涉及關係資料探勘、文本資料探勘、情緒分析等NLP 技術,及人臉辨識等CV 技術。
  • 智慧獲客:涉及常見的廣告獲客技術,如個人化定價、個人化推薦、創意廣告以及使用者畫像。
  • 智慧經營:涉及圖神經網路、因果推論及 OCR 等 AI 演算法技術。

由於業務涉及的 AI 技術非常多樣,因此為 AI 演算法落地帶來了很大的挑戰。

2、AI 演算法落地難題

度小滿自動機器學習平台實踐

AI 演算法落地存在一個不可能三角:很難同時實現演算法開發的高效率、低成本和高品質。

  • AI 演算法成本高:首先 AI 演算法開發的門檻很高。如金融風控當中所使用的 OCR 技術、人臉辨識技術進入門檻很高,並不是所有公司都能掌握,只有少數公司能做到頂尖水準。其次 AI 演算法硬體資源消耗大。 如訓練一個人臉辨識模型,或一個大規模的 NLP 模型,需要投入大量的運算資源,這是一個無形的門檻。
  • AI 演算法效果不穩定:AI 演算法效果依賴專家經驗,不同的人會產出不同的結果,存在不穩定因素。
  • AI 演算法交付週期長:一個成熟的演算法從開發到部署上線開發週期動輒長達數月以上,並且很多時候需要根據豐富的業務場景做客製化開發,最後模型的產出與演算法落地之間存在著鴻溝。

面對這些AI落地的難題,我認為唯一的解決方案是使用機器學習平台。

3、AI 演算法生產流程

#下面從AI 演算法的生產流程來理解AI 演算法落地過程中遇到的具體困難。

度小滿自動機器學習平台實踐

AI 演算法落地主要分為資料管理、模型訓練、演算法最佳化及部署發布四個部分,其中模型訓練和演算法最佳化之間是一個反覆迭代的過程。

在演算法開發的每一個步驟裡面,對參與該步驟的人員的技術要求的差異很大:

  • 資料管理:請技術人員瞭解業務,並且瞭解資料治理,及大數據相關技術。
  • 模型訓練與演算法最佳化:要求理解演算法模型的基本原理、擁有演算法最佳化的經驗。
  • 部署發布:要求熟悉後端開發和 web server 相關技術。

從各個步驟所需的技術堆疊可以看出,很難有一個或兩三個技術人員完全掌握所有的技術,並且每一個涉及人工的步驟,都是造成生產不穩定的生產瓶頸。而使用機器學習平台可以解決這兩個問題。

4、機器學習平台ATLAS

#我們的機器學習平台ATLAS 貫穿AI 生產的全流程,旨在取代AI 演算法落地過程中的人工參與,達到高效率產出、給AI 演算法研發提能增效的目標。

度小滿自動機器學習平台實踐

ATLAS 涉及以下四個平台:

  • 標註平台:負責生產訓練可用的標註資料;
  • #資料平台:負責大規模資料治理;
  • #訓練平台:負責模型的訓練最佳化;
  • #部署平台:提供高效率、低成本、高可用的部署方案。

這四個平台之間也是循環迭代的關係。以下分別介紹這幾個平台的設計細節及運作流程。

5、ATLAS:資料與訓練

度小滿自動機器學習平台實踐

資料與訓練部分涵蓋了標註平台、資料平台和訓練平台。

(1) 標註平台

標註平台主要為AI 演算法的訓練提供標註數據,自從深度學習誕生以來,模型已經具有了很高的複雜度,AI 演算法效果的瓶頸從模型設計上轉移到了數據質量和數量上,所以數據的高效生產是在AI 演算法落地中至關重要的環節。

ATLAS 的資料標註平台主要有兩方面的能力特性:多場景覆蓋和智慧標註。

#
  • 多場景覆蓋:ALTAS 標註平台涵蓋了公司內部業務涉及的所有演算法場景。包括 OCR 當中文字偵測、文字辨識、人臉偵測及人臉比對,CV 領域的影像分類,NLP 領域的實體關係、文字標籤等任務的資料標註。
  • 智慧標註:為了提升資料標註的效率,ATLAS 標註平台也提供智慧標註。包括智慧預標註和智能糾錯。智慧預標註是指利用已經訓練好的模型預先給資料進行標註,然後再人工審核,提高標註效率。智能糾錯是指參考預標註結果,對置信度低的標註結果啟動重標流程。

(2) 資料平台

資料平台主要實現大規模資料治理,在治理的過程中能夠兼顧彈性,動態地匹配樣本。在保存了上億用戶的5000維度以上的特徵的基礎上,可以做到一個線上的即時查詢。動態配對樣本可以滿足不同場景的樣本選擇和資料的選擇要求。

(3) 訓練平台

訓練平台是一個很重要的設施,分為五個層:

  • 調度層:訓練平台涉及硬體資源的管理,最底層的調度層就負責這些資源的調度。
  • 控制層:在調度層之上是控制層,透過把機器學習的任務變成一些工作流程來實現非同步和分散式工作流程控制。
  • 功能層:實作了一些機器學習平台的基礎功能,包括 AutoML、平行運算、圖形運算。
  • 應用層:基於底層的一些技術能力,將 AI 演算法開發的技術和能力套件封裝成各種不同的特定功能管線。
  • 使用者層:在應用程式層之上,使用者可以使用這些預先設定好的基礎功能來完成工作目標。

6、ATLAS:部署上線

度小滿自動機器學習平台實踐

我們的部署採用類Serverless 的架構,之所以說它是類Serverless 是因為它並不是完全的Serverless 的服務。因為我們的服務面向的並不是廣泛通用的應用場景,只面向模型的線上服務,所以不需要考慮更多的場景相容。

在API 介面這一層提供了模型會接觸到的三個部分:

  • 基本的特徵加工
  • 模型本身的預測
  • 對於外部資料存取的能力

對使用者來說,只有圖中橘色部分是使用者需要關注的,平台提供的API 可以減少開發成本,並且可以相容於幾乎市面上所有的演算法。借助 API 開發一個模型,從開發完成到落地上線可以在一天之內甚至半天內完成。在此之上我們透過叢集管理,可以為平台提供良好的穩定性保障、流量管理和容量管理。

7、ATLAS:最佳化迭代

#下面示範在 ATLAS 上的兩個最佳化迭代的場景。

#

度小滿自動機器學習平台實踐

  • 場景一:線上模型持續迭代

例如在一個OCR 模型的落地過程中,舊模型部署之後會產生一些bad case,這些bad case 和已有的標註資料融合之後成為新的資料集,再透過AutoML 優化管線優化舊模型產生新模型,新模型部署之後再循環往復。透過這樣的循環可以讓模型保持額外的1%的準確率的提升,由於 OCR 的模型精度很高,一般會在95%以上,所以1%也是很大的提升。

  • 場景二:AutoML 指導最佳化

##對於簡單重複的最佳化流程使用全流程AutoML 替代,對需要專家經驗參與的場景使用AutoML 作為輔助最佳化,並且使用全流程AutoML 的結果作為Baseline,選擇最優的模型部署上線。在我們公司內部有60%以上的場景透過這樣的優化方式獲得效能提升,提升效果從1%到5%不等。

二、自動機器學習

#下面介紹我們運用了哪些AutoML 的技術,以及我們所做的改進。

1、專家建模與AutoML

#首先介紹AutoML 相比傳統的專家建模有哪些優勢。

度小滿自動機器學習平台實踐

AutoML 的優點分為三個面向:

  • 效率面:AutoML 可以大幅縮短AI 演算法研發週期,一天之內可以產出傳統專家建模數月才能產出的模型;
  • 門檻方面:AutoML 可以減少或完全不需要專家的參與,降低了研發門檻;
  • ##穩定性面向:專家建模依賴人工經驗,最佳化效果不穩定,而AutoML 可以排除經驗的影響,充分挖掘演算法潛力。
2、AutoML簡介

以下來介紹 AutoML 中常用的技術。

度小滿自動機器學習平台實踐

#AutoML 常用的技術包含三個面向:

  • 超參優化:最常用的是黑盒子優化和多保真優化;
  • 元學習:從任務性質或先驗模型來進行學習;
  • 網路結構搜尋:專門針對神經網路的場景,涉及不同的搜尋空間和搜尋演算法。

在實際工作過程中,會根據不同的任務場景選擇不同的技術,而這些技術可以結合使用。

下面幾個部分分別介紹這三方面的技術。

3、自動機器學習平台:自動最佳化管線

首先是超參優化部分。實際上在我們的自動優化管線當中,是將整個機器學習管線作為自動優化的目標,而不僅僅是針對超參優化。包括自動化的特徵工程、模型選擇、模型訓練和自動整合等,這樣相比單獨的超參優化,降低了過度擬合的可能性。

除此之外,我們自己實作了一個AutoML 的框架Genesis,來相容主流的AI 演算法和Aut​​oML 工具,且對擴充友好,能夠把平台中不同的能力模組相互正交,使得他們之間可以自由組合,實現更靈活的自動優化管線。

4、自動機器學習平台:元學習系統

度小滿自動機器學習平台實踐

我們的系統中也使用了元學習方法,以下介紹元學習方法的必要性和應用的重點場景。

(1) 元學習的必要性

在累積了大量實驗數據之後,我們發現資料集在元特徵空間呈現明顯的聚集性,所以我們假設在元特徵空間分佈接近的資料集的最優解也會接近。基於這個假設,我們使用歷史任務的超參來指導新任務的參數最佳化,發現超參搜尋收斂速度會更快,且在有限的預算下,演算法效果可以額外提升1%。

(2) 應用場景

  • #場景一:已有數據集衍生

在大數據的應用程式場景中,有時會需要對已有資料集進行合併,例如將資料集A 和資料集B 合併產生新的資料集C,如果以資料集A 和資料集B 的超參作為資料集C 的冷啟動來指導資料集C 的超參優化,一方面可以鎖定搜尋空間 ,另一方面可以達到最優的參數最佳化結果。

  • 場景二:資料集重複取樣

度小滿自動機器學習平台實踐

##在實際開發過程中有時會需要對資料集進行取樣,再對採樣後的資料集進行超參優化,因為採樣後的資料的元特徵空間分佈與原始資料是接近的,所以用原始資料集的超參去指導採樣資料的超參優化,就可以提高最佳化效率。

5、自動機器學習平台:深度學習最佳化
。最後是我們針對深度學習場景所做的自動最佳化。分為超參優化和NAS 的探索兩個面向:

####深度學習超參優化########## ###########深度學習的開發瓶頸在於訓練時間,一次迭代時間需要數小時到數天,那麼使用傳統貝葉斯優化需要迭代二、三十次,訓練時長長達一個月到幾個月。所以我們會在深度學習超參最佳化的部分使用 Hyperband 方法為貝葉斯最佳化提供種子,加速超參搜尋進程。在此基礎之上,我們還會運用歷史資料的資訊來優化冷啟動,以及用歷史的替代模型做集成,都會比隨機初始化以更快收斂速度達到全局最優解。 ##########
  • NAS探索

#在實際開發場景中,不同的部署場景對模型的規模和時間效能要求不同,其次神經網路結構的最佳化是模型最佳化的重要部分,我們需要排除這個步驟裡的人工幹擾。所以我們提出了這個基於權重糾纏的One-shot NAS 的方法,搜尋效率可以達到經典的DARTS 方法的3倍以上的,並且搜尋到的子網模型的參數量和計算成本都是可控的,我們可以在目標之內選擇合適的模型。除此之外,我們也支援 MobileNet、ResNet 等多元空間來滿足不同的 CV 任務需求。

三、規模與效率

#最後來討論我們在機器學習平台建立過程中碰到的規模和效率的問題。

1、深度學習困境

#我們之所以會關注規模和效率問題,是因為深度學習面臨著模型規模與計算需求的衝突。

度小滿自動機器學習平台實踐

#更多的模型參數意味著更好的模型表現是產業的共識。而深度學習存在如下的摩爾定律:

  • 模型參數規模一年翻十倍
  • #硬體效能18個月翻倍

#所以高速成長的運算需求與硬體效能之間的鴻溝必須透過優化來解決。

2、資料並行

#最常用的最佳化方法就是並行,包括資料並行、模型並行等。其中最常用的是資料並行的技術。

度小滿自動機器學習平台實踐

#ATLAS 平台的資料平行技術有下列特徵:

  • 作為ATLAS 基礎功能,可以實現無感使用;
  • 不僅能支援人工神經網路模型,也支援Boosting 模型,如XGB、LGBM 等;
  • #支援多種通訊架構的最佳化並行效率;

度小滿自動機器學習平台實踐

######### ########就優化效果來說,對於神經網路模型和Boosting 模型,吞吐都有線性的提升,而且對於神經網路模型來說,並行訓練提高了可訓練規模,可以加快收斂速度,最終能夠提高模型精度。 ##################3、模型並行################還有一些模型不能只靠資料並行解決訓練效率問題,還需要引進模型並行技術。 ###########################ATLAS 的模型並行主要分為兩個面向:#########
  • 場景一:層內並行

#一些網路模型的全連接層參數規模非常大,如arcFace 的分類規模高達幾十、上百萬甚至上千萬,這樣的一個全連接層不可能透過一張GPU 卡覆蓋。這時需要引入層內並行技術,不同節點計算同一張量的不同部分。

  • 場景二:層間並行(管線並行)

同時也會用到層間平行技術,也就是在不同的節點上面計算網路的不同層的數據,將沒有依賴的運算前置來減少計算過程中的IDLE(GPU 等待時間)。

4、圖並行

#除了可以用張量描述的線性資料以外,我們做了一些圖資料並行訓練的探索。

度小滿自動機器學習平台實踐

對圖資料來說,不管是取樣或其他操作都需要動態跨節點,而且圖資料一般規模都很大,我們內部的圖數據達到了百億的規模,這樣的圖數據的計算很難在單機上完成。

圖資料分散式計算的瓶頸在於映射表,傳統的映射表的空間複雜度為O(n),如10億點10億條邊的圖資料佔記憶體160GB,形成分散式訓練的規模天花板。我們提出了一個空間複雜度為 O(1)的方法,透過重排節點和邊的 ID,只保留映射邊界,達到圖並行訓練規模可任意擴展的效果。

5、訓練效率

#同時我們也做了一些訓練效率的最佳化。

度小滿自動機器學習平台實踐

  • GPU 使用率最佳化

##GPU 使用率最佳化

  • GPU 的許多時間都消耗在讀取數據,GPU 空等,透過事前訓練、事中監控預警、事後分析可以讓GPU 平均使用率提升一倍。

反向傳播重計算

我們也使用了反向傳播重計算技術。對於一些參數非常多的模型,在正向傳播的過程中,我們並沒有保存所有的層的計算結果,僅保留部分節點的 checkpoint,在反向傳播時空白參數節點從 checkpoint 開始重新計算。透過這種方式可以減少50%以上的記憶體資源,訓練效率提高35%以上。

度小滿自動機器學習平台實踐

四、總結與思考

最後談談在機器學習平台的建置中的經驗與思考。

#########我######們總結以下一些經驗:###
  • 首先,機器學習平台是解決我們AI演算法落地的一個最有效的方案;

#因為我們AI 演算法落地涉及到的,技術和內容是方方面面的,我不可能要求任意任一個環節上的同學都會了解整個全局,那我們一定要有一個平台能提供這些基礎的能力來幫助大家去解決這些問題。

  • 其次,我們認為 AutoML 的應用是機器學習平台的核心建構能力;

因為只有把自動化或AutoML 的應用做得好了,才能夠更有效的去解放演算法專家的生產力,讓演算法專家可以去做一些更深入的演算法,或是能力的建構來提高機器學習的上限。

  • 最後,就是在這個設計過程中,因為是更多的是考慮一個內部應用的場景,我們的功能和能力的設計,會針對我們的業務實際,優先滿足業務的要求。

展望未來:

  • #首先,將ATLAS 的能力適配上更多的場景,做到更高的效率。
  • 其次,我們將探索3D 並行等訓練優化技術在超大規模語言模型上面的應用,使我們的演算法效果和行業前沿AI 演算法的水平接近。

五、問答環節

#Q1:開源的AutoML框架,我們嘗試過哪些推薦哪些?

A1:開源的AutoML 框架現在用的比較多的就是Optuna,也嘗試過Auto-Sklearn 和AutoWeka,然後給大家推薦一個網站是automl.org,因為其實實作在做這個領域的人還是比較少的,這個網站是幾個在AutoML 領域的專家教授建的一個網站,上面有很多的AutoML 的開源學習資料,大家都可以去參考。開源框架我們比較推薦的是我們用的Optuna 去做調參,因為它的演算法的來說的話就不是就這種最基礎的貝葉斯優化,它是一個TPE 的演算法,比較適合參數量非常大的一些場景,貝葉斯優化還是更適合參數比較少的一些場景,不過我的建議是說大家可能針對不同的場景嘗試一些不同的方法,因為就做更多嘗試之後,大家可能會對什麼場景適合什麼方法更有經驗。

Q2:機器學習平台的開發週期是多久?

A2:我們的機器學習平台從建造開始到現在已經經過3、4年的時間。最開始我們先解決部署應用的問題,然後後面是開始建立我們的生產能力,例如計算和訓練。如果從零開始搭建的話,我建議大家可​​以參考一些開源的框架先搭建起來,然後看看在使用過程中,針對自己的業務場景會遇到什麼樣的問題,好明確後面的開發方向。

Q3:交叉驗證的時候怎麼消除過擬合?

A3:這可能是一個更具體的演算法最佳化的問題,但在我們的最佳化管線裡面,我們是透過採樣的方法來訓練的,透過這樣的方式讓我們的任務能夠見到資料集的更多的角度,或者說方面,然後再透過把這些採樣之後訓練得到的top 模型整合起來,來讓我們的模型有更強的泛化能力,這在我們的場景裡面也是非常重要的一個方法。

#

Q4:我們建構整個機器學習學習平台,開發週期和人員投入大概是多少啊?

A4:這個開發週期剛剛講過,大概是三到四年的時間。然後人員投入的話,目前是有六、七個同學​​,在早期的話比這個人數還要少。

Q5:虛擬化GPU會不會對機器學習平台有提升?

A5:首先這個同學提到的虛擬化 GPU,應該是指資源的分割與隔離吧。我們做機器學習平台的話,虛擬化 GPU 應該是必須的能力,就是說我們一定要把資源做到虛擬化,才能做更好的資源調度和分配。然後在這個基礎之上的話,我們可能還會把我們的GPU 的顯存和它的運算資源去做分割,然後把不同大小的資源塊去分給不同任務使用,但這一點實際上我們沒有在訓練裡面去用,因為訓練的任務通常會對計算的能力有更高的要求,不會是一個更小的資源消耗的應用場景,我們在推理的場景裡面是會用到的。我們在實際應用過程中發現虛擬化技術沒有很好的開源免費的方案,有部分的雲端服務廠商會提供一些收費的方案,所以說我們自己在部署上使用的是分時復用的方案,就是把一些計算要求高的任務和一些計算要求低的任務去做混布,來做到分時的複用,在一定程度上能達到提高容量的效果。

Q6: 多節點分散式並行訓練加速比怎麼樣?能接近線性嗎?

A6:我們是可以接近一個線性的加速比的,就是我們自己測的話,比較好的時候大概可以達到一個80到90的程度。當然,如果節點數量非常多,可能還會需要做進一步的優化,現在可能大家發論文或看到論文裡面會提到說32個或64個節點可以達到80、90的加速比,那可能是要有一些更專門的優化。但我們在機器學習平台裡面的話,有可能會要針對更廣泛的場景,在實際的場景裡面,大多數的訓練可能是4個GPU 卡、8個GPU 卡,最多16個GPU 卡就能夠滿足要求。

Q7:使用 AutoML 時,使用者需要設定哪些參數?整個計算大概需要多少算力和時間?

A7:我們的 AutoML 最理想的情況,使用者是不需要設定任何參數的。當然我們會根據使用者的需求,允許使用者自己去調整,或確定一些參數。時間消耗的話,就是我們所有的 AutoML 場景,我們的目標都是希望在一天之內完成最佳化。然後算力的話,如果是一般的大數據建模,比如樹模型XGB、LGBM 這些的話,就是一台機器都可以搞定;如果是GPU 的任務的話,要看這個GPU 任務本身的一個規模,基本上就是原有的訓練規模的2到3倍的算力,就可以完成AutoML 的訓練。

Q8:有哪些開源的機器學習框架可以參考?

A8:這個問題剛剛提到過,就是像 Optuna,Auto-Sklearn 還有 AutoWeka 這些都是可以參考的。然後剛才有說到那個 automl.org 的這個網站,上面有很多資料,大家可以去學習。

Q9:與 EasyDL 的關係是什麼?

A9:EasyDL 是百度的,我們這個框架是完全自研的。

今天的分享就到這裡,謝謝大家。

以上是度小滿自動機器學習平台實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板