XGBoost Amazon SageMaker AI によるアルゴリズム - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

XGBoost Amazon SageMaker AI によるアルゴリズム

XGBoost (eXtreme 勾配ブースティング) は、勾配ブーストツリーアルゴリズムの一般的で効率的なオープンソース実装です。勾配ブースティングは教師あり学習アルゴリズムの 1 つで、より単純なモデルのセットからの推定を複数組み合わせることで、ターゲット変数の正確な予測を試みます。このXGBoostアルゴリズムは、次の理由で機械学習のコンペティションでうまく機能します。

  • さまざまなデータ型、関係、分布の堅牢な処理。

  • ファインチューニングできるさまざまなハイパーパラメータ。

回帰、分類 (バイナリおよびマルチクラス)、およびランク付けの問題XGBoostに を使用できます。

XGBoost アルゴリズムの新しいリリースは、次のいずれかの方法で使用できます。

  • Amazon SageMaker AI 組み込みアルゴリズム。

  • ローカル環境でトレーニングスクリプトを実行するフレームワークとして使用する。

この実装では、元のバージョンよりも、メモリのフットプリントが縮小し、ログ記録が強化され、ハイパーパラメータ検証が向上し、メトリクスセットが拡大しています。マネージドXGBoost環境でトレーニングスクリプトXGBoostestimatorを実行する を提供します。 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

警告

必要なコンピューティング性能のため、バージョン 1.7-1 の SageMaker AI XGBoostは P2 GPUインスタンスファミリーのインスタンスと互換性がありません。

重要

SageMaker AI XGBoostイメージ を取得するときはURI、イメージURIタグ:1:latestまたは を使用しないでください。使用するネイティブXGBoostパッケージバージョンを持つ SageMaker AI マネージドXGBoostコンテナを選択するサポートバージョンには、 のいずれかを指定する必要があります。 SageMaker AI XGBoostコンテナに移行されたパッケージバージョンを確認するには、「Docker Registry Paths and Example Code」を参照してください。次に、 を選択し AWS リージョン、 XGBoost (アルゴリズム) セクションに移動します。

警告

XGBoost 0.90 バージョンは廃止されました。XGBoost 0.90 のセキュリティ更新またはバグ修正のサポートは終了しました。XGBoost バージョンを新しいバージョンにアップグレードすることを強くお勧めします。

注記

XGBoost v1.1 は SageMaker AI ではサポートされていません。 XGBoost 1.1 には、テスト入力の特徴量がLIBSVM入力のトレーニングデータよりも少ない場合に予測を実行する機能が壊れています。この機能は v1.2 XGBoost で復元されました。 SageMaker AI XGBoost 1.2-2 以降の使用を検討してください。

注記

XGBoost v1.0-1 を使用できますが、公式にはサポートされていません。

EC2 XGBoostアルゴリズムの インスタンスレコメンデーション

SageMaker AI は、 CPU とGPUトレーニングと推論XGBoostをサポートしています。インスタンスのレコメンデーションは、トレーニングと推論のニーズ、およびXGBoostアルゴリズムのバージョンによって異なります。詳細については、次のいずれかのタブを選択してください。

トレーニング

SageMaker AI XGBoostアルゴリズムは CPUと GPUトレーニングをサポートします。

CPU トレーニング

SageMaker AI XGBoost 1.0-1 以前は、 を使用してのみトレーニングを行いますCPUs。これは (CPU バウンドではなく) メモリバウンドアルゴリズムです。そのため、コンピューティング最適化インスタンス (C4 など) よりも汎用コンピューティングインスタンス (M5 など) を選択することをお勧めします。さらに、トレーニングデータを保持するために、選択したインスタンスに十分なメモリを用意することを推奨します。メインメモリに収まらないデータを扱う場合はディスク領域を使用できます。これは、libsvm 入力モードで利用できる機能の結果 out-of-coreです。ただし、ディスクにキャッシュファイルを書き込むとアルゴリズムの処理速度が低下します。

GPU トレーニング

SageMaker AI XGBoostバージョン 1.2-2 以降では、GPUトレーニングがサポートされています。インスタンスあたりのコストは高くなりますが、GPUsトレーニングはより迅速に行い、コスト効率が向上します。

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インスタンスの 1 つとして指定する (P3 など)

  • 既存のXGBoostスクリプトgpu_histtree_methodハイパーパラメータを に設定する

分散トレーニング

SageMaker AI は、分散トレーニング用の CPUおよび GPUインスタンスXGBoostをサポートしています。

分散CPUトレーニング

複数のインスタンスでCPUトレーニングを実行するには、推定器の instance_countパラメータを 1 より大きい値に設定します。入力データをインスタンスの総数で割る必要があります。

入力データを複数のインスタンスに分割

次の手順を使用して入力データを分割します。

  1. 入力データを小さなファイルに分割します。ファイルの数は分散トレーニングに使用されるインスタンスの数と等しいか、それ以上である必要があります。1 つの大きなファイルではなく、小さいファイルを複数使用すると、トレーニングジョブのデータダウンロード時間も短縮されます。

  2. を作成するときはTrainingInput、 ディストリビューションパラメータを に設定しますShardedByS3Key。これにより、トレーニングジョブで n 個のインスタンスが指定されている場合、各インスタンスが取得するのは S3 のファイル数の約 1/n になります。

分散GPUトレーニング

分散トレーニングは、単一GPUインスタンスまたはマルチGPUインスタンスで使用できます。

単一GPUインスタンスでの分散トレーニング

SageMaker AI XGBoostバージョン 1.2-2 から 1.3-1 では、単一GPUインスタンスのトレーニングのみがサポートされています。つまり、マルチGPUインスタンスを選択した場合でも、インスタンスごとに 1 つのみGPUが使用されます。

次の場合は、入力データをインスタンスの総数で割る必要があります。

  • XGBoost バージョン 1.2-2 から 1.3-1 を使用します。

  • マルチGPUインスタンスを使用する必要はありません。

詳細については、「入力データを複数のインスタンスに分割」を参照してください。

注記

バージョン 1.2-2 から 1.3-1 の SageMaker AI では、マルチGPUインスタンスを選択した場合でも、インスタンスGPUごとに 1 つのXGBoostみが使用されます。

マルチGPUインスタンスを使用した分散トレーニング

バージョン 1.5-1 以降、 SageMaker AI XGBoostは Dask による分散GPUトレーニングを提供しています。Dask では、1 つ以上のマルチGPUインスタンスを使用するGPUsときにすべてを利用できます。Dask は、GPU単一インスタンスを使用する場合にも機能します。

Dask でトレーニングを行うには、次の手順を使用します。

  1. distributionパラメータを省略TrainingInputするか、 に設定しますFullyReplicated

  2. ハイパーパラメータを定義するときは、use_dask_gpu_training"true"に設定します。

重要

Dask による分散トレーニングは、 CSVおよび Parquet 入力形式のみをサポートします。LIBSVM や などの他のデータ形式を使用するとPROTOBUF、トレーニングジョブは失敗します。

Parquet データの場合は、列名が文字列として保存されていることを確認してください。他のデータ型の名前を持つ列は読み込めません。

重要

Dask による分散トレーニングではパイプモードはサポートされません。パイプモードが指定されている場合、トレーニングジョブは失敗します。

Dask XGBoostで SageMaker AI をトレーニングするときに注意すべき考慮事項がいくつかあります。データは必ず小さいファイルに分割してください。Dask は各 Parquet ファイルをパーティションとして読み取ります。ごとに Dask ワーカーがありますGPU。その結果、ファイル数は の合計数 (インスタンス数 * GPUs インスタンスGPUsあたりの の数) よりも大きくなります。ファイル数が非常に多いと、パフォーマンスが低下する可能性もあります。詳細については、「Dask Best Practices」を参照してください。

出力のバリエーション

指定されたtree_methodハイパーパラメータによって、XGBoostトレーニングに使用されるアルゴリズムが決まります。approxhist、および gpu_hist の 3 つの方法はすべて近似法であり、分位数の計算にはスケッチを使用します。詳細については、 XGBoostドキュメントの「ツリーメソッド」を参照してください。スケッチは近似アルゴリズムです。そのため、分散トレーニングの対象となるワーカーの数などの要因によって、モデルにばらつきが生じることが予想されます。変動の有意性はデータによって異なります。

推論

SageMaker AI は推論のために CPU および GPUインスタンスXGBoostをサポートします。推論のインスタンスタイプの詳細については、「Amazon SageMaker AI ML インスタンスタイプ」を参照してください。