為了獲得最先進(jìn)的機(jī)器學(xué)習(xí)( ML )解決方案,數(shù)據(jù)科學(xué)家通常建立復(fù)雜的 ML 模型。然而, 這些技術(shù)的計算成本很高,直到最近還需要廣泛的背景知識、經(jīng)驗(yàn)和人力。
最近,在 GTC21 , AWS 高級數(shù)據(jù)科學(xué)家 尼克·埃里克森 給出了一個 session 分享如何結(jié)合 AutoGluon , RAPIDS 和 NVIDIA GPU 計算簡化實(shí)現(xiàn)最先進(jìn)的 ML 精度,同時提高性能和降低成本。 這篇文章概述了尼克會議的一些要點(diǎn):
AutoML 是什么? AutoGluon 有什么不同?
在 Kaggle 預(yù)測比賽中, AutoGluon 如何在僅僅三行代碼的情況下就超過 99% 的人類數(shù)據(jù)科學(xué)團(tuán)隊(duì), 不需要專家知識?
AutoGluon 與 RAPIDS 的集成如何使訓(xùn)練速度提高 40 倍,推理速度提高 10 倍?
什么是AutoGluon?
AutoGluon 是一個開放源代碼的 AutoML 庫,它支持易于使用和易于擴(kuò)展的 AutoML ,重點(diǎn)放在自動堆棧合并、深度學(xué)習(xí)和跨文本、圖像和表格數(shù)據(jù)的真實(shí)應(yīng)用程序上。面向 ML 初學(xué)者和專家, AutoGluon 使您能夠:
用幾行代碼為您的原始數(shù)據(jù)快速構(gòu)建深度學(xué)習(xí)和經(jīng)典 ML 解決方案的原型。
在沒有專家知識的情況下自動使用最先進(jìn)的技術(shù)(如適用)。
利用自動超參數(shù)調(diào)整、模型選擇/裝配、架構(gòu)搜索和數(shù)據(jù)處理。
輕松改進(jìn)/調(diào)整您的定制模型和數(shù)據(jù)管道,或?yàn)槟挠美ㄖ?AutoGluon 。
本文主要關(guān)注 AutoGluon Tabular ,這是一個 AutoGluon API ,它只需要幾行 Python 就可以在未處理的表格數(shù)據(jù)集(如 CSV 文件)上訓(xùn)練高度精確的機(jī)器學(xué)習(xí)模型。 為了理解 AutoGluon Tabular 是如何做到這一點(diǎn)的,我們將首先解釋一些概念。
什么是監(jiān)督機(jī)器學(xué)習(xí)?
有監(jiān)督機(jī)器學(xué)習(xí) 將一組帶標(biāo)簽的訓(xùn)練實(shí)例作為輸入,并構(gòu)建一個模型,該模型旨在基于我們知道的關(guān)于該實(shí)例的其他信息(稱為實(shí)例的特征)正確預(yù)測每個訓(xùn)練實(shí)例的標(biāo)簽。這樣做的目的是建立一個精確的模型,可以自動用未知的標(biāo)簽標(biāo)記未來的數(shù)據(jù)。
圖 1 :有監(jiān)督機(jī)器學(xué)習(xí)使用標(biāo)記數(shù)據(jù)建立模型,對未標(biāo)記數(shù)據(jù)進(jìn)行預(yù)測。
在表格數(shù)據(jù)集中,列表示變量的度量(又稱特征),行表示單個數(shù)據(jù)點(diǎn)。 例如,下表顯示了一個包含三列的小數(shù)據(jù)集:“有工作”、“擁有房子”和“收入”。在本例中,“ income ”是標(biāo)簽(有時稱為預(yù)測的目標(biāo)變量),其他列是用于嘗試預(yù)測收入的特征。
表 1 :收入數(shù)據(jù)集
有監(jiān)督機(jī)器學(xué)習(xí)是一個迭代的、探索性的過程,它涉及到數(shù)據(jù)準(zhǔn)備、特征工程、驗(yàn)證拆分、缺失值處理、訓(xùn)練、測試、超參數(shù)調(diào)整、集成和評估 ML 模型,然后才能將模型用于生產(chǎn)中進(jìn)行預(yù)測。
圖 2 :機(jī)器學(xué)習(xí)是一個迭代過程,包括特征提取、訓(xùn)練和評估,然后才能部署模型進(jìn)行預(yù)測。
什么是 AutoML
歷史上,實(shí)現(xiàn)最先進(jìn)的 ML 性能需要廣泛的背景知識、經(jīng)驗(yàn)和人力。根據(jù)自動化的工具和級別, AutoML 使用不同的算法技術(shù)來嘗試為 ml 管道找到最佳的特性、超參數(shù)、算法和/或算法組合。通過 automating 耗時的 ML 管道,從業(yè)者和企業(yè)可以應(yīng)用機(jī)器學(xué)習(xí)更快更容易地解決業(yè)務(wù)問題。
AutoML 分三步進(jìn)行, AutoGluon 表格
自動膠合板 可用于自動構(gòu)建最先進(jìn)的模型,該模型使用兩個函數(shù) fit () 和 predict () 根據(jù)同一行中的其他列預(yù)測特定列的值,如下所示。
from autogluon.tabular import TabularPredictor, TabularDataset
# load dataset
train_data = TabularDataset(DATASET_PATH)
# fit the model
predictor = TabularPredictor(label=LABEL_COLUMN_NAME).fit(train_data)
# make predictions on new data
prediction = predictor.predict(new_data)
函數(shù)的作用是:研究數(shù)據(jù)集,執(zhí)行數(shù)據(jù)預(yù)處理,擬合多個模型,并將它們結(jié)合起來生成一個高精度的模型。有關(guān)要嘗試的更完整的示例,請參見 關(guān)于預(yù)測表中列的 AutoGluon 快速入門教程。
圖 3 : AutoGluon fit ()函數(shù)自動構(gòu)建一個 ML 模型,該模型可用于基于 predict ()函數(shù)同一行中的其他列來預(yù)測特定列的值。
用這個簡單的代碼, AutoGluon 擊敗了其他 AutoML 框架和許多頂尖的數(shù)據(jù)科學(xué)家。 廣泛的評估 通過對 Kaggle 和 OpenML AutoML 基準(zhǔn)測試的 50 個分類和回歸任務(wù)進(jìn)行測試,發(fā)現(xiàn) AutoGluon 比 TPOT 、 H2O 、 AutoWEKA 、 AutoSklearn 和 Google AutoML 表更快、更健壯、更準(zhǔn)確。同樣在兩個受歡迎的 Kaggle 比賽中, AutoGluon 在僅僅 4 小時的原始數(shù)據(jù)訓(xùn)練后就擊敗了 99% 的數(shù)據(jù)科學(xué)家。
圖 4 : AutoGluon 的性能超過了其他 AutoML 框架和許多頂尖的 Kaggle 數(shù)據(jù)科學(xué)家。
自粘膠有什么不同?
大多數(shù) AutoML 框架致力于將算法選擇和超參數(shù)優(yōu)化( CASH )結(jié)合起來,提供從各種可能性中尋找最佳模型及其超參數(shù)的策略。然而,現(xiàn)金有一些缺點(diǎn):
它需要許多重復(fù)的模型訓(xùn)練,而且大多數(shù)模型都被丟棄了,而沒有對最終結(jié)果做出貢獻(xiàn)。
超參數(shù)調(diào)優(yōu)做得越多,驗(yàn)證數(shù)據(jù)擬合過度的風(fēng)險就越高。
超參數(shù)調(diào)整在加密時不太有用。
相比之下, AutoGluon Tabular 依靠專家數(shù)據(jù)科學(xué)家使用的方法來贏得競爭:將多個模型集合起來,并將它們堆疊在多個層中,從而優(yōu)于其他框架。
Ensembling 是如何工作的?
集成學(xué)習(xí)方法結(jié)合多種機(jī)器學(xué)習(xí)( ML )算法來獲得更好的模型。為了更好地理解這一點(diǎn),讓我們看看隨機(jī)森林,它是決策樹的集合。
決策樹通過評估 if-then-else 和真/假特征問題樹,并估計評估做出正確決策的概率所需的最小問題數(shù),創(chuàng)建預(yù)測目標(biāo)標(biāo)簽的模型。決策樹可用于分類以預(yù)測類別,或用于回歸以預(yù)測連續(xù)數(shù)值。例如,下面的決策樹(基于上表)嘗試使用特征“ has job ”和“ owns house ”的兩個決策節(jié)點(diǎn)來預(yù)測標(biāo)簽“ income ”。
圖 5 :一個簡單的決策樹模型,有兩個決策節(jié)點(diǎn)和三片葉子。
決策樹的優(yōu)點(diǎn)是易于解釋,但存在過度擬合和準(zhǔn)確性問題。建立一個精確的模型是介于兩者之間的 以及過度擬合——模型預(yù)測與訓(xùn)練數(shù)據(jù)的行為方式相匹配,并且被廣泛化,足以對看不見的數(shù)據(jù)進(jìn)行準(zhǔn)確預(yù)測。
決策樹試圖找到最佳分割來對數(shù)據(jù)進(jìn)行子集劃分,這會導(dǎo)致嚴(yán)重的分割。 例如,給定下面左邊的數(shù)據(jù)集,我們想預(yù)測一個點(diǎn)的顏色,點(diǎn)越亮,值就越高。如右圖所示,決策樹會將數(shù)據(jù)分割成多個塊。 下一步,我們將研究如何使用 ensembling 改進(jìn)決策樹。
圖 6 :左邊的示例數(shù)據(jù)集,目標(biāo)是預(yù)測點(diǎn)的顏色,點(diǎn)越亮,值越高。此數(shù)據(jù)集的決策樹 右邊是將數(shù)據(jù)分割成粗糙的塊。
Ensembling 是一種通過組合預(yù)測和改進(jìn)泛化來提高模型精度的行之有效的方法。 隨機(jī)森林 是一種流行的分類和回歸集成學(xué)習(xí)方法。 Random forest 使用一種稱為 bagging ( bootstrap aggregating )的技術(shù),從數(shù)據(jù)集和特征的隨機(jī) bootstrap 樣本并行地構(gòu)建完整的決策樹。 通過對所有樹的輸出進(jìn)行聚合來進(jìn)行預(yù)測,減少了方差,提高了預(yù)測精度。最終的預(yù)測是所有決策樹預(yù)測的多數(shù)類或均值回歸。 隨機(jī)性對森林的成功至關(guān)重要, bagging 確保沒有決策樹是相同的,減少了單個樹的過度擬合問題。
圖 7 : Random forest 使用一種稱為 bagging 的技術(shù)從數(shù)據(jù)集和特性的隨機(jī)引導(dǎo)樣本構(gòu)建決策樹。
為了理解這是如何給出更好的預(yù)測,讓我們看一個例子。這里是圖 6 中所示的數(shù)據(jù)集的四個不同的決策樹,測試數(shù)據(jù)點(diǎn)的預(yù)測顏色不同。我們可以看到,每一種方法都給出了解的近似值,而這種近似值不足以作出精確的預(yù)測。
圖 8 : 圖 6 所示的數(shù)據(jù)集有四個不同的決策樹,一個測試數(shù)據(jù)點(diǎn)有不同的預(yù)測顏色 。
當(dāng)這四個決策樹被合并并平均在一起時,粗糙的邊界消失了,并且像下面的隨機(jī)森林示例一樣被平滑。現(xiàn)在 測試數(shù)據(jù)點(diǎn)的預(yù)測顏色是來自其他樹預(yù)測的顏色的混合。
圖 9 :隨機(jī)森林 模型 對于 圖 8 中的四個決策樹 。
隨機(jī)林中的所有決策樹都是次優(yōu)的,它們在隨機(jī)方向上都是錯誤的。當(dāng)平均決策樹時,它們錯誤的原因相互抵消,這稱為方差抵消。 結(jié)果質(zhì)量更高,因?yàn)樗鼈兎从沉舜蠖鄶?shù)樹做出的決定。平均值限制了誤差,即使有些樹是錯的,有些樹是對的,所以這組樹一起朝著正確的方向移動。
當(dāng)許多不相關(guān)的決策樹組合在一起時,它們產(chǎn)生的模型具有很高的預(yù)測能力,能夠抵抗過度擬合。這些概念是流行的機(jī)器學(xué)習(xí)算法的基礎(chǔ),例如 隨機(jī)森林, XGBoost , Catboost 和 LightGBM 這些都是由自動膠所使用的。
多層疊加
你可以更進(jìn)一步與 ensembling ,經(jīng)驗(yàn)豐富的機(jī)器學(xué)習(xí)實(shí)踐者 將 RandomForest 、 CatBoost 、 k 近鄰和其他的輸出結(jié)合起來,以進(jìn)一步提高模型精度。在 ML 競爭社區(qū)很難找到一個單一的模型贏得的競爭,每一個獲勝的解決方案都包含了模型的集合。
Stacking 是一種使用“基本”回歸或分類模型集合的聚合預(yù)測作為訓(xùn)練元分類器或回歸“堆棧”模型的特征的技術(shù)。
圖 10 :堆疊技術(shù)。
多層堆垛機(jī)將堆垛機(jī)模型輸出的預(yù)測結(jié)果作為輸入輸入到其他更高層的堆垛機(jī)模型中。在許多 Kaggle 比賽中,在多個層次上迭代這個過程是一個獲勝的策略。多層疊加集成功能強(qiáng)大,但很難使用和實(shí)現(xiàn),目前除了 Autogluon 之外,其他任何 AutoML 框架都沒有使用它。
無需專家知識, AutoGluon 自動組裝和訓(xùn)練一種新形式的多層堆疊,如圖 11 所示,采用 k 折疊裝袋。其工作原理如下:
底座: 第一層有多個基礎(chǔ)模型,這些模型分別經(jīng)過訓(xùn)練,并使用 k-fold 集成裝袋(下文討論)。
連接:將基礎(chǔ)層模型預(yù)測與輸入特征連接起來,作為下一層的訓(xùn)練輸入。
堆垛:多個堆垛機(jī)模型在 concat 層輸出上進(jìn)行訓(xùn)練。與傳統(tǒng)的堆疊策略不同, AutoGluon 重用與 stackers 相同的基本層模型類型(具有相同的超參數(shù)值)。 此外,堆垛機(jī)模型不僅將前一層模型的預(yù)測作為輸入,而且還將原始數(shù)據(jù)特征本身作為輸入。
加權(quán):最后的堆疊層應(yīng)用集合選擇以加權(quán)的方式聚合堆疊機(jī)模型的預(yù)測。 在高容量模型堆棧中聚合預(yù)測可以提高對過度擬合的恢復(fù)能力
圖 11 : AutoGluon 的多層堆疊集成。
k-fold Ensembling 套袋
AutoGluon 通過將所有可用數(shù)據(jù)用于訓(xùn)練和驗(yàn)證,通過在堆棧的所有層對所有模型進(jìn)行 k 折集成裝袋來提高堆棧性能。 k-fold ensemble bagging 類似于 k-fold cross validation,這是一種最大化訓(xùn)練數(shù)據(jù)集的方法,通常用于超參數(shù)調(diào)整以確定最佳模型參數(shù)。通過 k 折交叉驗(yàn)證,數(shù)據(jù)被隨機(jī)分成 k 個分區(qū)(折疊)。每個折疊一次用作驗(yàn)證數(shù)據(jù)集,而其余的 (Out-Of-Fold – OOF) 用于訓(xùn)練。模型使用 OOF 訓(xùn)練集進(jìn)行訓(xùn)練并使用驗(yàn)證集進(jìn)行評估,從而產(chǎn)生 k 個模型精度測量值。 AutoGluon 不是確定最佳模型并丟棄其余模型,而是將所有模型打包并從訓(xùn)練期間未看到的分區(qū)上的每個模型獲得 OOF 預(yù)測。這為每個模型創(chuàng)建了 k 折預(yù)測,用作下一層的元特征。
圖 12 : k 折整體裝袋。
為了進(jìn)一步提高預(yù)測精度和減少過度擬合, AutoGluon 表格 在訓(xùn)練數(shù)據(jù)的 n 個不同的隨機(jī)分區(qū)上重復(fù) k 次裝袋過程,平均重復(fù)袋子上的所有 OOF 預(yù)測。在調(diào)用 fit ()函數(shù)時,通過估計在指定的時間限制內(nèi)可以完成多少輪來選擇 n 。
為什么 AutoGluon 需要 GPU 加速
多層堆棧集成提高了精度,然而,這意味著要訓(xùn)練數(shù)百個模型,這比基本的 ML 用例需要更多的計算密集型任務(wù),并且比加權(quán)集成要貴 10 到 20 倍。 在過去,復(fù)雜性和計算需求使得多層堆棧集成很難在許多生產(chǎn)用例和大型數(shù)據(jù)集上實(shí)現(xiàn)。對于 AutoGluon 和 NVIDIA GPU 計算 ,情況不再如此。
在體系結(jié)構(gòu)上, CPU 由幾個內(nèi)核組成,這些內(nèi)核有大量的高速緩存,一次可以處理幾個軟件線程。相反, GPU 由數(shù)百個內(nèi)核組成 可以同時處理數(shù)千個線程。 GPU 的性能超過 20 倍 在 ML 工作流程中比 CPU 更快,并徹底改變了深度學(xué)習(xí)領(lǐng)域。
圖 13 : CPU 由幾個核組成,而 GPU 則由幾百個核組成。
NVIDIA 開發(fā)了 RAPIDS ——一個開源的數(shù)據(jù)分析和機(jī)器學(xué)習(xí)加速平臺,用于在 GPUs 中完全執(zhí)行端到端的數(shù)據(jù)科學(xué)培訓(xùn)管道。它依賴于 NVIDIA ? [[ZCK0 號]? 用于低級計算優(yōu)化的原語,但通過用戶友好的 Python 接口(如 pandas 和 sciketlearnapi )公開了 GPU 并行性和高內(nèi)存帶寬。
使用 RAPIDS 的 cuML , 流行的機(jī)器學(xué)習(xí)算法,比如隨機(jī)森林, XGBoost 和其他許多產(chǎn)品都支持單 GPU 和大型數(shù)據(jù)中心部署。對于大型數(shù)據(jù)集,這些基于 GPU 的實(shí)現(xiàn)可以加快機(jī)器學(xué)習(xí)模型的訓(xùn)練速度—通過 在隨機(jī)森林的情況下高達(dá) 45 倍 ,超過 100x 支持向量機(jī) 和 k 近鄰最高可達(dá) 600 倍 。這些加速可以將夜間作業(yè)轉(zhuǎn)換為交互式作業(yè),允許探索更大的數(shù)據(jù)集,并且可以在以前訓(xùn)練單個模型所需的時間內(nèi)嘗試幾十種模型變體。
圖 14 :帶有 GPU 和 RAPIDS 的數(shù)據(jù)科學(xué)管道。
AutoGluon 的 最新版本 通過與 RAPIDS 集成,充分利用了 NVIDIA GPU 計算的潛力。通過這些集成, AutoGluon 能夠在 GPU 上訓(xùn)練流行的 ml 算法并提高性能, 使更廣泛的受眾能夠訪問高性能的 AutoML 。
AutoGluon + RAPIDS 基準(zhǔn)
對于 1 。 15 億行航空公司數(shù)據(jù)集 用于梯度增壓機(jī) ( GBM ) 基準(zhǔn)測試套件 , AutoGluon + RAPIDS 的訓(xùn)練速度比 cpu 上的 AutoGluon 快 25 倍,準(zhǔn)確率為 81 。 92% ,比 XGBoost 基線高 7% 。 GPU 更喜歡更長的培訓(xùn)時間,因?yàn)楣潭ǖ膯映杀咀兊貌荒敲粗匾?/p>
圖 15 : AutoGluon + RAPIDS 比 CPU 上的 AutoGluon 加速訓(xùn)練 25 倍,準(zhǔn)確率為 81 。 92% 。
為了獲得 81 。 92% 的準(zhǔn)確率, gpu 上的 AutoGluon + RAPIDS 訓(xùn)練時間為 4 小時,而 cpu 為 4 。 5 天。
圖 16 : GPU 上的 AutoGluon + RAPIDS 訓(xùn)練時間為 4 小時,而 CPU 為 4 。 5 天。
GPU 上的 AutoGluon + RAPIDS 不僅速度更快,而且成本更低,? 盡可能多的 CPU 訓(xùn)練到相同的精度( AWS EC2 定價: p3 。 2XL $ 0 。 9180 /小時, m5 。 2XL $ 0 。 1480 /小時)。
圖 17 : GPU 上的 AutoGluon + RAPIDS 成本更低,? 盡可能多的 CPU 訓(xùn)練到同樣的精度。
開始吧
要開始使用 AutoGluon 和 RAPIDS :
啟動 帶 p3 。 2XL 的 AWS EC2 實(shí)例 GPU
為 CUDA 選擇深度學(xué)習(xí) AMI
安裝 RAPIDS
安裝 AutoGluon 表格
試試這個 AutoGluon + RAPIDS Python 筆記本使用來自 Otto 集團(tuán)產(chǎn)品分類挑戰(zhàn)賽的數(shù)據(jù)
AutoGluon 網(wǎng)站 為開發(fā)人員提供了大量的教程,幫助他們利用機(jī)器學(xué)習(xí)來處理表格、文本和圖像數(shù)據(jù)(包括分類/回歸等基本任務(wù),以及對象檢測等更高級的任務(wù))。
Conclusion
AutoGluon AutoML 工具箱使培訓(xùn)和部署尖端技術(shù)變得很容易 復(fù)雜業(yè)務(wù)問題的精確機(jī)器學(xué)習(xí)模型。此外, AutoGluon 與 RAPIDS 的集成充分利用了 NVIDIA GPU 計算的潛力,使復(fù)雜模型的訓(xùn)練速度提高了 40 倍,預(yù)測速度提高了 10 倍。
關(guān)于作者
Nick Becker 是 NVIDIA 的 RAPIDS 團(tuán)隊(duì)的高級軟件工程師和數(shù)據(jù)科學(xué)家,他致力于構(gòu)建 GPU 加速的數(shù)據(jù)科學(xué)產(chǎn)品。尼克有技術(shù)和政府方面的專業(yè)背景。在 NVIDIA 之前,他曾在數(shù)據(jù)科學(xué)初創(chuàng)公司 Enigma Technologies 工作。在《謎》之前,他曾在美國中央銀行聯(lián)邦儲備理事會( Federal Reserve Board of Governors )進(jìn)行經(jīng)濟(jì)學(xué)研究和預(yù)測。
Nick Erickson 是 Amazon 網(wǎng)絡(luò)服務(wù)人工智能的高級數(shù)據(jù)科學(xué)家。他是開源 AutoML 框架 autoglion 的主要開發(fā)人員和合著者。尼克正在尋求推進(jìn)對人工智能的科學(xué)理解,并利用不斷增長的計算能力來創(chuàng)建有利于社會的強(qiáng)大的自適應(yīng)程序。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5075瀏覽量
103541 -
人工智能
+關(guān)注
關(guān)注
1795文章
47642瀏覽量
239702 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8438瀏覽量
132938
發(fā)布評論請先 登錄
相關(guān)推薦
評論