XGBoost-Algorithmus mit Amazon SageMaker AI
XGBoost
-
Er bietet einen robusten Umgang mit einer Vielzahl von Datentypen, Beziehungen und Verteilungen.
-
Er ermöglicht die Optimierung einer Vielzahl von Hyperparametern.
Sie können XGBoost für Regressions-, Binär- und Multiclass-Klassifizierungs- und Ranglistenprobleme verwenden.
Es gibt zwei Anwendungsmöglichkeiten für die neue Version des XGBoost-Algorithmus:
-
als integrierter Algorithmus in Amazon SageMaker AI;
-
als Framework zum Ausführen von Trainingsskripten in Ihren lokalen Umgebungen.
Diese Implementierung bietet einen kleineren Speicherbedarf, eine bessere Protokollierung, eine verbesserte Hyperparameter-Validierung und einen größeren Satz von Metriken als die ursprünglichen Versionen. Sie bietet auch einen XGBoost estimator, der ein Trainingsskript in einer verwalteten XGBoost-Umgebung ausführt. Die aktuelle Version von SageMaker AI XGBoost basiert auf den ursprünglichen XGBoost-Versionen 1.0, 1.2, 1.3, 1.5 und 1.7.
Weitere Informationen zum XGBoost-Algorithmus von Amazon SageMaker AI finden Sie in den folgenden Blogeinträgen:
Unterstützte Versionen
-
Framework-Modus (Open Source): 1.2-1, 1.2-2, 1.3-1, 1.5-1, 1.7-1
-
Algorithmusmodus: 1.2-1, 1.2-2, 1.3-1, 1.5-1, 1.7-1
Warnung
Aufgrund der erforderlichen Rechenkapazität ist Version 1.7-1 von SageMaker AI XGBoost nicht mit GPU-Instances aus der P2-Instance-Familie für Training oder Inferenz kompatibel.
Wichtig
Wenn Sie den XGBoost-Image-URI von SageMaker AI abrufen, verwenden Sie nicht :latest oder :1 für das Bild-URI-Tag. Sie müssen eine der Unterstützte Versionen angeben, um den von SageMaker AI verwalteten XGBoost-Container mit der nativen XGBoost-Paketversion auszuwählen, die Sie verwenden möchten. Informationen zur Paketversion, die in die XGBoost-Container von SageMaker AI migriert wurde, finden Sie unter Docker-Registry-Pfade und Beispielcode. Wählen Sie dann Ihre AWS-Region aus und navigieren Sie zum Abschnitt XGBoost (Algorithmus).
Warnung
Die XGBoost-Versionen 0.90 sind veraltet. Der Support für Sicherheitsupdates oder Bugfixes für XGBoost 0.90 wird eingestellt. Wir empfehlen Ihnen dringend, die XGBoost-Version auf eine der neueren Versionen zu aktualisieren.
Anmerkung
XGBoost v1.1 wird auf SageMaker AI nicht unterstützt. XGBoost 1.1 ist nicht mehr in der Lage, Vorhersagen auszuführen, wenn die Testeingabe weniger Features hat als die Trainingsdaten in den LIBSVM-Eingaben. Diese Funktion wurde in XGBoost v1.2 wiederhergestellt. Erwägen Sie die Verwendung von SageMaker AI XGBoost 1.2-2 oder höher.
Anmerkung
Sie können XGBoost v1.0-1 verwenden, diese Version wird jedoch nicht offiziell unterstützt.
EC2-Instance-Empfehlung für den XGBoost-Algorithmus
SageMaker AI XGBoost unterstützt CPU- und GPU-Training und Inferenz. Die Instance-Empfehlungen hängen von den Trainings- und Inferenzanforderungen sowie von der Version des XGBoost-Algorithmus ab. Wählen Sie eine der folgenden Optionen aus, um mehr Informationen zu erhalten:
Training
SageMaker AI XGBoost unterstützt CPU- und GPU-Training.
CPU-Training
SageMaker AI XGBoost 1.0-1 oder früher trainiert nur mit CPUs. Es handelt sich um einen speichergebundenen Algorithmus (im Gegensatz zu einem rechnergebundenen). Daher ist eine Allzweck-Datenverarbeitungs-Instance (z. B. M5) die bessere Wahl gegenüber einer rechneroptimierten Instance (z. B. C4). Des Weiteren empfehlen wir, dass Sie in ausgewählten Instances genügend Gesamtspeicher zur Verfügung haben, um das Trainingsdaten aufzunehmen. Diese Version unterstützt die Verwendung von Festplattenspeicher zur Verarbeitung von Daten, die nicht in den Hauptspeicher passen. Dies ist ein Ergebnis des Feature Out-of-Core, das im libsvm-Eingabemodus verfügbar ist. Trotzdem verlangsamt das Schreiben von Cache-Dateien auf die Festplatte die Verarbeitungszeit des Algorithmus.
GPU-Training
SageMaker AI XGBoost Version 1.2-2 oder höher unterstützt GPU-Training. Trotz höherer Kosten pro Instance trainieren GPUs schneller und sind damit kostengünstiger.
SageMaker AI XGBoost Version 1.2-2 oder höher unterstützt die GPU-Instance-Familien P2, P3, G4dn und G5.
SageMaker AI XGBoost Version 1.7-1 oder höher unterstützt die GPU-Instance-Familien P3, G4dn und G5. Beachten Sie, dass Version 1.7-1 oder höher aufgrund von Rechenkapazitätsanforderungen die P2-Instance-Familie nicht unterstützt.
So nutzen Sie die Vorteile des GPU-Trainings:
-
Geben Sie den Instance-Typ als eine der GPU-Instance an (z. B. P3).
-
Stellen Sie den Hyperparameter
tree_methodin Ihrem vorhandenen XGBoost-Skript aufgpu_hist
Verteilte Trainings
SageMaker AI XGBoost unterstützt CPU- und GPU-Instances für verteilte Trainings.
Verteilte GPU-Training
Um das CPU-Training auf mehreren Instances auszuführen, setzen Sie den instance_count Parameter für die Schätzfunktion auf einen Wert größer als eins. Die Eingabedaten müssen auf die Gesamtzahl der Instances aufgeteilt werden.
Teilen Sie die Eingabedaten auf mehrere Instances auf
Teilen Sie die Eingabedaten mithilfe der folgenden Schritte auf:
-
Teilen Sie die Eingabedaten in kleinere Dateien auf. Die Anzahl der Dateien sollte mindestens der Anzahl der Instances entsprechen, die für verteilte Trainings verwendet werden. Durch die Verwendung mehrerer kleinerer Dateien im Gegensatz zu einer großen Datei wird auch die Zeit für das Herunterladen von Daten für den Trainingsauftrag verringert.
-
Stellen Sie bei der Erstellung Ihres TrainingInput
den Verteilungsparameter auf ShardedByS3Keyein. Jede Instance erhält ungefähr 1/n der Anzahl der Dateien in S3, wenn im Trainingsjob n Instances angegeben sind.
Verteiltes GPU-Training
Sie können verteilte Trainings entweder mit einer oder mehreren GPU-Instances verwenden.
Verteiltes Training mit Einzel-GPU-Instances
Die SageMaker AI XGBoost-Versionen 1.2-2 bis 1.3-1 unterstützen nur Trainings für Einzel-GPU-Instances. Das bedeutet, dass selbst wenn Sie eine Multi-GPU-Instance auswählen, nur eine GPU pro Instance verwendet wird.
In folgenden Fällen müssen Sie Ihre Eingabedaten auf die Gesamtzahl der Instances aufteilen:
-
Sie verwenden die XGBoost-Versionen 1.2-2 bis 1.3-1.
-
Sie benötigen keine Multi-GPU-Instances.
Weitere Informationen finden Sie unter Teilen Sie die Eingabedaten auf mehrere Instances auf.
Anmerkung
Die Versionen 1.2-2 bis 1.3-1 von SageMaker AI XGBoost verwenden nur eine GPU pro Instance, auch wenn Sie eine Multi-GPU-Instance wählen.
Verteilte Trainings mit Einzel-GPU-Instances
Ab Version 1.5-1 bietet SageMaker AI XGBoost verteilte GPU-Trainings mit Dask
Trainieren Sie mit Dask und gehen Sie dazu wie folgt vor:
Lassen Sie den
distributionParameter in Ihrem TrainingInputentweder weg oder setzen Sie ihn auf FullyReplicated.Stellen Sie bei der Definition Ihrer Hyperparameter
use_dask_gpu_trainingbis"true"ein.
Wichtig
Das verteilte Training mit Dask unterstützt nur die Eingabeformate CSV und Parquet. Wenn Sie andere Datenformate wie LIBSVM oder PROTOBUF verwenden, schlägt der Trainingsauftrag fehl.
Stellen Sie bei Parquet-Daten sicher, dass die Spaltennamen als Zeichenfolgen gespeichert werden. Spalten, die Namen anderer Datentypen haben, können nicht geladen werden.
Wichtig
Das verteilte Training mit Dask unterstützt den Pipe-Modus nicht. Wenn der Pipe-Modus angegeben ist, schlägt der Trainingsauftrag fehl.
Beim Training von SageMaker AI XGBoost mit Dask sind einige Überlegungen zu beachten. Achten Sie darauf, Ihre Daten in kleinere Dateien aufzuteilen. Dask liest jede Parquet-Datei als Partition. Für jede GPU gibt es einen Dask-Worker. Daher sollte die Anzahl der Dateien größer sein als die Gesamtzahl der GPUs (Anzahl der Instances x Anzahl der GPUs pro Instance). Eine sehr große Anzahl von Dateien kann auch die Leistung beeinträchtigen. Weitere Informationen finden Sie unter Bewährte Methoden für Dask
Variationen in der Ausgabe
Der angegebene tree_method Hyperparameter bestimmt den Algorithmus, der für die XGBoost-Training verwendet wird. Bei den Baummethoden approx, hist und gpu_hist handelt es sich allesamt um Näherungsmethoden, bei denen das Skizzieren zur Quantilberechnung verwendet wird. Weitere Informationen finden Sie unter Baummethoden
Inferenz
SageMaker AI XGBoost unterstützt CPU- und GPU-Instances für die Inferenz. Informationen zu den Instance-Typen für Inferenzen finden Sie unter ML-Instance-Typen von Amazon SageMaker AI