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