本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
XGBoost
-
其對各種資料類型、關係、分佈的強大處理。
-
您可以微調的各種超參數。
您可以使用 XGBoost 為問題進行迴歸、分類 (二進位和多類) 和排名。
您可以使用 XGBoost 演算法的新版本做為下列其中一項:
-
Amazon SageMaker AI 內建演算法。
-
在本機環境中執行訓練指令碼的架構。
相較於原始版本,此實作的記憶體使用量更小、記錄更順暢、超參數驗證更完善,以及指標集更大。它提供在受管 XGBoost 環境中estimator
執行訓練指令碼的 XGBoost。SageMaker AI XGBoost 的目前版本是以原始 XGBoost 版本 1.0、1.2、1.3、1.5 和 1.7 為基礎。
如需 Amazon SageMaker AI XGBoost 演算法的詳細資訊,請參閱下列部落格文章:
支援的版本
-
架構 (開放原始碼) 模式:1.2-1、1.2-2、1.3-1、1.5-1、1.7-1
-
演算法模式:1.2-1、1.2-2、1.3-1、1.5-1、1.7-1
警告
由於所需的運算容量,SageMaker AI XGBoost 1.7-1 版與 P2 執行個體系列中用於訓練或推論的 GPU 執行個體不相容。
重要
當您擷取 SageMaker AI XGBoost 映像 URI 時,請勿使用 :latest
或 :1
做為映像 URI 標籤。您必須指定其中一個 支援的版本,才能選擇 SageMaker AI 受管 XGBoost 容器,其中包含您想要使用的原生 XGBoost 套件版本。若要尋找遷移至 SageMaker AI XGBoost 容器的套件版本,請參閱 Docker 登錄檔路徑和範例程式碼。然後選擇您的 AWS 區域,然後導覽至 XGBoost (演算法) 區段。
警告
XGBoost 0.90 版本已停用。不再對 XGBoost 0.90 進行安全性更新或錯誤修正。強烈建議您將 XGBoost 版本升級至其中一個較新的版本。
注意
SageMaker AI 不支援 XGBoost v1.1。當測試輸入的功能少於 LIBSVM 輸入中的訓練資料時,XGBoost 1.1 具有執行預測的中斷功能。這項功能在 XGBoost v1.2 已恢復。請考慮使用 SageMaker AI XGBoost 1.2-2 或更新版本。
注意
您可以使用 XGBoost 1.0-1 版,但並未正式支援。
XGBoost 演算法的 EC2 執行個體建議
SageMaker AI XGBoost 支援 CPU 和 GPU 訓練和推論。建議的執行個體取決於訓練和推論需求,以及 XGBoost 演算法的版本。請選擇以下選項,以取得詳細的資訊:
培訓
SageMaker AI XGBoost 演算法支援 CPU 和 GPU 訓練。
CPU 訓練
SageMaker AI XGBoost 1.0-1 或更早版本僅使用 CPUs 進行訓練。這是一個記憶體限制型 (相對於運算限制型) 的演算法。因此,一般用途的運算執行個體 (如 M5) 相較於運算最佳化執行個體 (如 C4),是較好的選擇。此外,我們建議您在所選執行個體中需有足夠的總記憶體才可保留訓練資料。它支援使用磁碟空間來處理不符合主要記憶體的資料。這是 libsvm 輸入模式可用的out-of-core功能的結果。即使如此,將快取檔案寫入磁碟也會減慢演算法處理時間。
GPU 訓練
SageMaker AI XGBoost 1.2-2 版或更新版本支援 GPU 訓練。雖然每個執行個體的成本較高,但 GPU 的訓練速度更快,更具成本效益。
SageMaker AI XGBoost 1.2-2 版或更新版本支援 P2, P3, G4dn 和 G5 GPU 執行個體系列。
SageMaker AI XGBoost 1.7-1 版或更新版本支援 P3, G4dn 和 G5 GPU 執行個體系列。請注意,由於運算容量需求,1.7-1 版或更新的版本不支援 P2 執行個體系列。
若要利用 GPU 訓練:
-
將執行個體類型指定為其中一個 GPU 執行個體 (例如 P3)
-
在您現有的 XGBoost 指令碼
gpu_hist
中將tree_method
超參數設定為
分散式訓練
SageMaker AI XGBoost 支援 CPU 和 GPU 執行個體進行分散式訓練。
分散式 GPU 訓練
若要在多個執行個體上執行 CPU 訓練,請將估算器的參數 instance_count
設定為大於 1 的值。輸入資料必須分割予全數的執行個體。
分割輸入資料予多個執行個體
使用以下步驟分割輸入資料:
-
將輸入資料分解成較小的檔案。檔案數目至少應等於用於分散式訓練的執行個體總數。使用多個較小的檔案 (而不是一個大型檔案) 也會減少訓練工作資料下載時間。
-
建立您的訓練輸入
時,請將分配參數設定為 ShardedByS3Key
。如果訓練任務中指定了 n 個執行個體,則每個執行個體都會取得 S3 中大約 1/n 的檔案數量。 S3
分散式 GPU 訓練
您可以將分散式訓練用於單一 GPU 或多 GPU 執行個體。
單一 GPU 執行個體分散式訓練
SageMaker AI XGBoost 1.2-2 版到 1.3-1 版僅支援單一 GPU 執行個體訓練。這表示即使您選取了一個多 GPU 執行個體,每個執行個體也只會使用一個 GPU。
在以下情況下,您必須在執行個體總數之間分割輸入資料:
-
您使用 XGBoost 1.2-2 版到 1.3-1 版。
-
您不需要使用多 GPU 執行個體。
如需詳細資訊,請參閱分割輸入資料予多個執行個體。
注意
SageMaker AI XGBoost 1.2-2 到 1.3-1 版在每個執行個體中僅使用一個 GPU,即使您選擇多 GPU 執行個體也一樣。
用多 GPU 執行個體進行分散式訓練
從 1.5-1 版開始,SageMaker AI XGBoost 使用 Dask
使用下列步驟以 Dask 進行訓練:
您可以省略訓練輸入
中的 distribution
參數,或將其設定為FullyReplicated
。定義超參數時,請將
use_dask_gpu_training
設定為"true"
。
重要
Dask 的分散式訓練僅支援 CSV 和 Parquet 輸入格式。如果您使用其他資料格式 (例如 LIBSVM 或 PROTOBUF),則訓練工作會失敗。
對於 Parquet 資料,請確保欄的名稱儲存為字串。名稱為其他資料類型的欄將無法載入。
重要
Dask 的分散式訓練不支援管道模式。如果指定管道模式,則訓練工作會失敗。
使用 Dask 訓練 SageMaker AI XGBoost 時,需要注意幾個考量事項。請務必將您的資料分割成較小的檔案。Dask 讀取每個 Parquet 檔案時,將其視為一個分割區。每個 GPU 都有 Dask 工作者。因此,檔案數量應大於 GPUs 總數 (執行個體計數 * 每個執行個體的 GPUs 數量)。有大量的檔案也會降低效能。如需詳細資訊,請參閱 Dask 最佳實務
輸出的變化
指定的超參數 tree_method
會決定用於 XGBoost 訓練的演算法。樹方法 approx
、hist
和 gpu_hist
都是近似法,且使用草圖進行分位數計算。如需詳細資訊,請參閱 XGBoost 文件中的樹方法
Inference
SageMaker AI XGBoost 支援 CPU 和 GPU 執行個體進行推論。如需推論執行個體類型的相關資訊,請參閱 Amazon SageMaker AI ML 執行個體類型