資料科學家經常會建立複雜的機器學習模型,實現最先進的機器學習解決方案。但是,這些技術的運算成本高昂,且在過去需要具備廣泛的背景知識、經驗和人力。 最近,在 GTC 上,AWS 資深資料科學家 Nick Erickson 主持了一場講座,分享將 AutoGluon、RAPIDS 與 NVIDIA GPU 運算的整合,如何簡化實現最先進的機器學習準確度,同時提高效能與降低成本。 本文章概述 Nick 講座的一些重點:
- AutoML 是什麼?AutoGluon 有何不同之處?
- AutoGluon 如何在 Kaggle 預測競賽中,使用三行程式碼勝過 99% 的人類資料科學團隊,而無須專家知識?
- AutoGluon 與 RAPIDS 的整合,如何將訓練速度加快 40 倍,將推論速度加快 10 倍?
AutoGluon 是什麼?
AutoGluon 是開放原始碼 AutoML 函式庫,支持易於使用與易於擴充的 AutoML,並著重於自動堆疊整體化、深度學習,以及涵蓋文字、影像和表格資料的實際應用。AutoGluon 適合機器學習初學者和專家,讓您可以:
- 使用幾行程式碼,為原始資料快速製作深度學習和傳統機器學習解決方案的原型。
- 在適當的情況下自動利用最先進的技術,而無須專家知識。
- 利用自動超參數調整、模型選擇/整體化、架構搜尋和資料處理。
- 輕鬆改進/調整訂製模型和資料工作流程,或針對使用案例自訂 AutoGluon。
本文章著重於 AutoGluon-Tabular,一種 AutoGluon API,僅需要幾行 Python,即可在未經處理的表格資料集(例如 CSV 檔案)上,訓練高度準確的機器學習模型。 為了能瞭解 AutoGluon-Tabular 如何做到這一點,我們將會先解釋一些概念。
何謂監督式機器學習?
監督式機器學習是以有標籤訓練執行個體做為輸入及建立模型,以根據已知之範例的其他資訊(稱為執行個體的特徵),正確預測各個訓練範例的標籤。此做法之目的是建立準確的模型,自動標記具有未知標籤的未來資料。
在表格資料集中,欄代表變數(又稱為特徵)的測量值,列代表個別資料點。 例如,下表所示的小型資料集包含三個欄位:「有工作」、「有房子」和「收入」。在此範例中,「收入」是標籤(有時候稱為預測的目標變數),其他欄位則是嘗試預測收入的特徵。
監督式機器學習是一個探索性迭代過程,涉及資料準備、特徵工程、驗證分割、遺漏值處理、訓練、測試、超參數調整、整體化和評估機器學習模型,之後才能將模型運用於生產,以進行預測。
AutoML 是什麼
在過去,實現最先進的機器學習效能,需要廣泛的背景知識、經驗和人力。AutoML 會依據工具和自動化程度,使用不同的演算法技術,嘗試為機器學習工作流程尋找最佳特徵、超參數、演算法及/或演算法組合。從業人員和企業將耗時的機器學習工作流程自動化,即可應用機器學習,更快速、更輕鬆地解決業務問題。
使用 AutoGluon Tabular 分為 3 步驟執行 AutoML
AutoGluon Tabular 可以自動建立最先進的模型,使用兩個函數:fit () 和 predict (),根據同一列中的其他欄位,預測特定欄位的值,如下所示。
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)
fit() 函數研究資料集、執行資料預處理、適配多個模型,並進行組合以產生高準確度模型。更完整的試用範例,請參閱預測表格欄位的 AutoGluon 快速入門教學 。
AutoGluon憑藉此簡單的程式碼,擊敗其他 AutoML 框架及許多頂尖資料科學家。 針對來自 Kaggle 和 OpenML AutoML 基準之 50 個分類和迴歸任務進行測試的廣泛評估顯示,AutoGluon 比 TPOT、H2O、AutoWEKA、auto-sklearn 和 Google AutoML Tables 更快速、更穩健、更準確。此外,在兩個熱門的 Kaggle 競賽中,AutoGluon 僅在原始資料上進行 4 小時的訓練,就擊敗了 99% 的參賽資料科學家。
AutoGluon 有何不同?
大多數 AutoML 框架都著重於選擇組合演算法和最佳化超參數(Combined Algorithm Selection and Hyperparameter,CASH)的任務,以提供策略,從各種可能性中尋找最佳模型及其超參數。但是,CASH 具有一些缺點:
- 其需要多次反覆的模型訓練,且捨棄大部分模型,對最終結果沒有貢獻。
- 調整超參數的次數越多,過度適配驗證資料的風險越高。
- 在整體化時,調整超參數較没有幫助。
相較之下,AutoGluon-Tabular 優於其他框架,可以仰賴專業資料科學家使用的方法贏得競賽:將多個模型整體化及堆疊成多層。
整體化如何運作?
整體學習方法結合了多種機器學習演算法,以獲得更好的模型。為了進一步瞭解此概念,讓我們回顧由決策樹組成整體的隨機森林。 決策樹建立了一個預測目標標籤的模型,方式是評估 if-then-else 和 true/false 特徵問題的樹狀結構,並估計評估做出正確決策之機率需要的最少問題數量。決策樹可以用於分類,以預測類別,或用於迴歸,以預測連續數值。例如,下方的決策樹(根據上表)嘗試使用特徵「有工作」和「有房子」的兩個決策節點,預測標籤「收入」。
決策樹的優點為容易解讀,但是存有過度適配和準確性的問題。建立一個準確的模型是介於適配不足與過度適配之間-模型預測符合訓練資料的行為方式,且可以概化,以準確預測未看見的資料。 決策樹嘗試尋找最佳分割,而將資料子集化,卻導致粗糙分割。 例如,下圖左側的資料集將要預測點的顏色,點越亮,值就越高。右側所示的決策樹,將資料分成粗糙的區塊。 後,我們將探討如何透過整體化,改進決策樹。
整體化是經過驗證的方法,可以透過結合預測和改進概化,提高模型的準確度。隨機森林是常見用於分類和迴歸的整體學習方法。隨機森林使用稱為 bagging(bootstrap aggregating,自舉匯聚)的技術,從資料集和特徵的隨機自舉樣本,建立平行的完整決策樹。預測方式是匯聚來自所有樹狀結構的輸出,減少變異數及提高預測準確度。最終預測是所有決策樹預測的多數類別或均值迴歸。隨機性是森林成功的關鍵,bagging 可以確保決策樹各不相同,以減少在個別樹狀結構上看到的過度適配問題。
為了瞭解這如何提供更好的預測,讓我們看一個範例。以下是圖 6 所示之資料集的四種決策樹,測試資料點的預測顏色各不相同。我們可以看到,它們都提供了近似解,其概化程度無法做出準確的預測。
將四個決策樹組合及平均化時,粗糙的邊界會消失與平順化,如下方的隨機森林範例所示。現在,測試資料點的預測顏色與其他樹狀結構預測的顏色混合。
隨機森林中的所有決策樹都為次佳,在隨機方向上都錯誤。在將決策樹平均化時,錯誤原因會互相抵消,稱為變異數抵消。結果提高了品質,因為它們反映出大多數樹狀結構達成的決策。平均化可以限制誤差,即使有些樹狀結構錯誤,有些樹狀結構正確,因此,這一群樹狀結構集體朝著正確方向移動。 將許多不相關的決策樹組合時,會產生具有高預測能力的模型,以防止過度適配。這些概念是 AutoGluon 採用之常見機器學習演算法的基礎,例如隨機森林、XGBoost、Catboost 以及 LightGBM。
多層堆疊整體化
您可以透過整體化更進一步,由經驗豐富的機器學習從業人員,將 RandomForest、CatBoost、k 近鄰等輸出結合,進一步提高模型準確度。在機器學習競賽社群中,很難找到透過單一模型贏得的競賽,每一個獲勝的解決方案都包含由模型組成的整體。 堆疊技術是使用「基礎」迴歸或分類模型集合的聚合預測做為特徵,訓練中繼分類器或迴歸器「堆疊器」模型。
多層堆疊將堆疊器模型輸出的預測做為輸入,饋送至其他更高層的堆疊器模型。在多層中迭代此過程,一直是許多 Kaggle 競賽中的致勝策略。多層堆疊整體強大,卻很難穩健使用和實行,目前除 Autogluon 外,無任何 AutoML 框架採用。 不需要專家知識,AutoGluon 是使用 k 折 bagging 自動聚集和訓練新穎的多層堆疊整體化形式,如圖 11 所示。運作方式如下:
- 基礎:第一層有多個使用 k 折整體 bagging(將於下文探討)進行個別訓練及 bagging 的基礎模型。
- 串接:將基礎層模型預測與輸入特徵串接做為輸入,以訓練下一層。
- 堆疊:在串接層輸出上訓練多個堆疊器模型。不同於傳統的堆疊策略,AutoGluon 重新使用與堆疊器相同的基礎層模型類型(具有相同的超參數值)。此外,堆疊器模型不僅是使用上一層模型的預測做為輸入,同時以原始資料特徵本身做為輸入。
- 權重:最終堆疊層套應用整體選擇,以加權方式,匯聚堆疊器模型的預測。跨高容量模型堆疊匯聚預測,可以進一步防止過度適配。
k 折整體 Bagging
AutoGluon 透過針對堆疊各層的所有模型進行 k 折整體 bagging,使用所有的可用資料進行訓練和驗證,以提高堆疊效能。k 折整體 bagging 與 k 折交叉驗證類似,是一種將訓練資料集最大化的方法,通常適用於調整超參數,以確定最佳模型參數。k 折交叉驗證,將資料隨機分成 k 個分割區(折疊)。每一個折疊使用一次做為驗證資料集,其餘部分(Out-Of-Fold,OOF)則用於訓練。使用 OOF 訓練集訓練模型,並透過驗證集評估模型,產生 k 個模型準確度測量值。AutoGluon 針對所有模型進行 bagging,以及從訓練期間未看見之分割區上的每一個模型取得 OOF 預測,而不是確定最佳模型,並捨棄其餘的模型。可以建立每一個模型的 k 折預測,做為下一層的中繼特徵。
為了進一步提高預測準確度及減少過度適配,AutoGluon-Tabular 在訓練資料的 n 個不同隨機分割上重複 k 折 bagging 過程,以將重複 bag 的所有 OOF 預測平均化。選擇數字 n 的方式是在呼叫 fit() 函數時,估計在指定時間限制內可以完成多少輪。
為何 AutoGluon 需要 GPU 加速
多層堆疊整體化可以提高準確度,但是,必須訓練數百個模型,此任務的運算密集程度高於基本機器學習使用案例,且成本比加權整體化高 10 至 20 倍。在過去,複雜性和運算需求會導致許多生產使用案例和大型資料集無法實行多層堆疊整體化。在擁有 AutoGluon 和 NVIDIA GPU 運算之後,情況已不再如此。 CPU 架構僅由幾個具有大量快取記憶體的核心組成,可以同時處理數個軟體執行緒。相較之下,GPU 是由數百個核心組成,可以同時處理數千個執行緒。在機器學習工作流程中,GPU 的效能比 CPU 快 20 倍以上,並可徹底改變深度學習領域。
NVIDIA 開發出 RAPIDS(開放原始碼資料分析和機器學習加速平台),完全以 GPU 執行端對端資料科學訓練工作流程。它仰賴 NVIDIA® CUDA® 基元最佳化低階運算,同時透過 Pandas、Scikit-Learn API 等人性化 Python 介面,展現 GPU 平行性和高記憶體頻寬。 使用 RAPIDS 的 cuML,支援隨機森林、XGBoost 等許多常見的機器學習演算法,適用於單 GPU 和大型資料中心部署。對於大型資料集而言,以 GPU 為基礎的建置可以加快機器學習模型訓練-隨機森林可以加快達 45 倍、支援向量機超過 100 倍、k 近鄰高達 600 倍。這些加速可以將夜間工作轉變為互動式工作、允許探索更大的資料集,且能在過去訓練單一模型需要的時間內嘗試數十種模型變體。
AutoGluon 的最新版本與 RAPIDS 整合,充分利用 NVIDIA GPU 運算的潛力。AutoGluon可以透過這些整合,在 GPU 上訓練常見的機器學習演算法及提高效能,以使更多受眾可以使用高效能 AutoML。
AutoGluon + RAPIDS 基準
在梯度提升機(GBM)基準測試套件中使用的 1.15 億列航空公司資料集,相較於使用 CPU 的 AutoGluon,顯示AutoGluon + RAPIDS 可將訓練加快 25 倍,而準確率為 81.92%,比 XGBoost 基準高 7%。因為固定啟動成本變得較不重要,使 GPU 偏好較長的訓練時間。
為了達到 81.92% 的準確率,AutoGluon + RAPIDS 使用 GPU 訓練 4 小時,CPU 則是 4.5 天。
使用 GPU 的 AutoGluon + RAPIDS,不僅速度更快,且成本更低,僅需要 CPU 的 ¼,即可訓練至相同的準確率(AWS EC2 定價:p3.2xlarge 0.9180 美元/小時,m5.2xlarge 0.1480 美元/小時)。
開始使用
開始使用 AutoGluon 和 RAPIDS:
- 啟動搭載 p3.2xlarge GPU 的 AWS EC2 執行個體
- 為 CUDA 選擇深度學習 AMI
- 安裝 RAPIDS
- 安裝 AutoGluon-Tabular
- 試用使用 Otto Group Product Classification Challenge 資料的 AutoGluon + RAPIDS Python notebook
- AutoGluon 網站提供眾多教學,讓開發人員可以利用機器學習處理表格、文字和影像資料(涵蓋分類/迴歸等基本任務以及物件偵測等進階任務)。
結論
AutoGluon AutoML 工具套件可以輕鬆地針對複雜的業務問題,訓練和部署先進、準確的機器學習模型。此外,AutoGluon 與 RAPIDS 整合,可以充分利用 NVIDIA GPU 運算的潛力,將複雜模型的訓練速度加快 40 倍,將預測速度加快 10 倍。
若需要更多資訊,請參閱以下資源
- AutoGluon 網站
- AutoGluon Github 儲存庫
- More Progress for Big Impact in the Latest RAPIDS Release
- RAPIDS Accelerates Data Science End-to-End
- Accelerating Random Forests Up to 45x Using cuML
- Gradient Boosting, Decision Trees, and XGBoost with CUDA
- Fast, Accurate, and Simple Models for Tabular Data via Augmented Distillation whitepaper
- AutoGluon-Tabular:Robust and Accurate AutoML for Structured Data whitepaper
- XGBoost on GPUs
- Relentlessly Improving Performance | 作者:Josh Patterson | RAPIDS AI