Schritt 4: Trainieren eines Modells - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schritt 4: Trainieren eines Modells

DieAmazon SageMaker Python SDKstellt Framework-Schätzer und generische Schätzer zur Verfügung, um Ihr Modell zu trainieren und gleichzeitig den Lebenszyklus für maschinelles Lernen (ML) zu orchestrieren, der auf die SageMaker-Funktionen für Schulungen undAWS-Infrastrukturen wie Amazon Elastic Container Registry (Amazon ECR), Amazon Elastic Compute Cloud (Amazon EC2), Amazon Simple Storage Service (Amazon S3). Weitere Informationen zu SageMaker integrierte Framework-Schätzer und Algorithmus-Schätzer, sieheFrameworksundAlgorithmen von Erstanbieternbeziehungsweise imAmazon SageMaker Python SDK-Dokumentation.

Auswählen des Schulungsalgorithmus

Um den richtigen Algorithmus für Ihren Datensatz auszuwählen, müssen Sie in der Regel verschiedene Modelle auswerten, um die für Ihre Daten am besten geeigneten Modelle zu finden. Der Einfachheit halber der SageMakerXGBoost-AlgorithmusDer integrierte Algorithmus wird in diesem Tutorial ohne Vorauswertung von Modellen verwendet.

Tipp

Wenn Sie... SageMaker um ein geeignetes Modell für Ihren tabellarischen Datensatz zu finden, verwenden Sie Amazon SageMaker Autopilot, der eine Lösung für maschinelles Lernen automatisiert. Weitere Informationen finden Sie unter Automatisieren Sie die Modellentwicklung mit Amazon SageMaker Autopilot.

Erstellen und Ausführen eines Schulungsauftrags

Nachdem Sie herausgefunden haben, welches Modell verwendet werden soll, beginnen Sie mit der Konstruktion eines SageMaker Schätzer für das Training. Dieses Tutorial verwendet den integrierten XGBoost-Algorithmus für SageMaker Generischer Schätzer.

So führen Sie einen Modellschulungsauftrag aus

  1. Importieren Sie dasAmazon SageMaker Python SDKund rufen Sie zunächst die grundlegenden Informationen aus Ihrem aktuellen SageMaker -Sitzung.

    import sagemaker region = sagemaker.Session().boto_region_name print("AWS Region: {}".format(region)) role = sagemaker.get_execution_role() print("RoleArn: {}".format(role))

    Dies gibt die folgenden Informationen zurück:

    • region— Die StrömungAWSRegion, in der die SageMaker-Notebook-Instanz ausgeführt wird.

    • role— Die IAM-Rolle, die von der Notebook-Instance verwendet wird.

    Anmerkung

    Überprüfen Sie die SageMaker Python-SDK-Version durch Ausführensagemaker.__version__aus. Dieses Tutorial basiert aufsagemaker>=2.20aus. Wenn das SDK veraltet ist, installieren Sie die neueste Version, indem Sie den folgenden Befehl ausführen:

    ! pip install -qU sagemaker

    Wenn Sie diese Installation in Ihrem Beenden ausführen SageMaker Studio- oder Notebook-Instanzen müssen Sie den Kernel manuell aktualisieren, um die Anwendung des Versionsupdates abzuschließen.

  2. Erstellen Sie einen XGBoost-Schätzer mitsagemaker.estimator.Estimator-Klasse. Im folgenden Beispielcode heißt der XgBoost-Schätzerxgb_modelaus.

    from sagemaker.debugger import Rule, rule_configs from sagemaker.session import TrainingInput s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1") print(container) xgb_model=sagemaker.estimator.Estimator( image_uri=container, role=role, instance_count=1, instance_type='ml.m4.xlarge', volume_size=5, output_path=s3_output_location, sagemaker_session=sagemaker.Session(), rules=[Rule.sagemaker(rule_configs.create_xgboost_report())] )

    So erstellen Sie den SageMaker Geben Sie die folgenden Parameter an:

    • image_uri— Geben Sie den URI für das Schulungscontainer an. In diesem Beispiel fehlt bei der Aktion SageMaker XGBoost Schulungscontainer URI wird mitsagemaker.image_uris.retrieveaus.

    • role— DieAWS Identity and Access Management(IAM) -Rolle SageMaker verwendet, um Aufgaben in Ihrem Namen auszuführen (z. B. Lesen der Schulungsergebnisse, Aufrufen von Modellartefakten von Amazon S3 und Schreiben der Schulungsergebnisse an Amazon S3).

    • instance_countundinstance_type— Typ und Anzahl der Amazon EC2 ML-Compute-Instances, die für die Modellschulung verwendet werden sollen. Verwenden Sie für diese Trainingsübung eine einzigeml.m4.xlarge-Instanz, die über 4 CPUs, 16 GB Arbeitsspeicher, einen Amazon Elastic Block Store (Amazon EBS) -Speicher und eine hohe Netzwerkleistung verfügt. Weitere Informationen zu EC2-Compute-Instance-Typen finden Sie unter.Amazon EC2-Instance-Typenaus. Weitere Informationen zur Fakturierung finden Sie unterAmazon SageMaker Preisgestaltungaus.

    • volume_size— Die Größe des EBS-Speicher-Volume in GB, das an die Schulungs-Instance angefügt werden soll. Diese muss groß genug sein, um Trainingsdaten speichern zu können, wenn Sie verwendenFile-Modus (FileModus ist standardmäßig aktiviert).

    • output_path— Der Pfad zum S3-Bucket, in dem SageMaker das Modellartefakt und die Schulungsergebnisse speichert.

    • sagemaker_session— Das Sitzungsobjekt, das Interaktionen mit verwaltet SageMaker API-Operationen und andereAWSService, den der Schulungsjob verwendet.

    • rules— Geben Sie eine Liste der SageMaker Integrierte Debugger-Regeln. In diesem Beispiel fehlt bei der Aktioncreate_xgboost_report()rule erstellt einen XGBoost-Bericht, der Einblicke in den Trainingsfortschritt und die Ergebnisse liefert. Weitere Informationen finden Sie unter SageMaker Debugger XgBoost Schulungsbericht.

    Tipp

    Wenn Sie ein verteiltes Training von großen Deep-Learning-Modellen wie Faltungsneuronalen Netzen (CNN) und Modellen der Natural Language Processing (NLP) durchführen möchten, verwenden Sie SageMaker Verteilt für Datenparallelität oder Modellparallelität. Weitere Informationen finden Sie unter Amazon SageMaker Verteilte Schulungsbibliotheken.

  3. Stellen Sie die Hyperparameter für den XGBoost-Algorithmus ein, indem Sie dasset_hyperparameters-Methode des Schätzers. Eine vollständige Liste der XGBoost-Hyperparameter finden Sie unterXGBoost-Hyperparameteraus.

    xgb_model.set_hyperparameters( max_depth = 5, eta = 0.2, gamma = 4, min_child_weight = 6, subsample = 0.7, objective = "binary:logistic", num_round = 1000 )
    Tipp

    Sie können die Hyperparameter auch mit dem SageMaker Funktion zur Hyperparameter-Optimierung Weitere Informationen finden Sie unter Durchführen der automatischen Modelloptimierung mit SageMaker.

  4. Verwenden derTrainingInput-Klasse, um einen Dateneingabefluss für das Training zu konfigurieren. Der folgende Beispielcode zeigt, wie Sie konfigurierenTrainingInputObjekte zur Verwendung der Schulungs- und Validierungsdatensätze, die Sie auf Amazon S3 hochgeladen haben, imTeilen Sie den Datensatz in Train-, Validierungs- und TestdatasetsAbschnitts erstellt.

    from sagemaker.session import TrainingInput train_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/train.csv"), content_type="csv" ) validation_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv"), content_type="csv" )
  5. Zum Starten der Modellschulung rufen Sie den Schätzer anfitMethode mit den Schulungs- und Validierungsdatensätzen. Durch Setzenwait=True, derfit-Methode zeigt Fortschrittsprotokolle an und wartet, bis das Training abgeschlossen ist.

    xgb_model.fit({"train": train_input, "validation": validation_input}, wait=True)

    Weitere Informationen zur Modellschulung finden Sie unter Trainieren eines Modells mit Amazon SageMaker. Dieser Schulungsauftrag für das Tutorial kann bis zu 10 Minuten dauern.

    Nachdem der Schulungsauftrag erledigt ist, können Sie einen XGBoost-Schulungsbericht und einen Profilerstellungsbericht herunterladen, der von SageMaker Debugger. Der XGBoost-Schulungsbericht bietet Ihnen Einblicke in den Trainingsfortschritt und die Ergebnisse, wie die Verlustfunktion in Bezug auf Iteration, Funktionsbedeutung, Verwirrungsmatrix, Genauigkeitskurven und andere statistische Ergebnisse des Trainings. Zum Beispiel finden Sie die folgende Verlustkurve aus dem XGBoost-Trainingsbericht, der deutlich darauf hinweist, dass ein Problem mit der Überanpassung vorliegt.

    Führen Sie den folgenden Code aus, um den S3-Bucket-URI anzugeben, in dem die Debugger-Schulungsberichte generiert werden, und prüfen Sie, ob die Berichte vorhanden sind.

    rule_output_path = xgb_model.output_path + "/" + xgb_model.latest_training_job.job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursive

    Laden Sie die Debugger XGBoost-Schulungs- und Profilerstellungsberichte in den aktuellen Workspace herunter:

    ! aws s3 cp {rule_output_path} ./ --recursive

    Führen Sie das folgende iPython-Skript aus, um den Datei-Link des XgBoost-Schulungsberichts abzurufen:

    from IPython.display import FileLink, FileLinks display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))

    Das folgende iPython-Skript gibt die Dateiverknüpfung des Debugger-Profilerstellungsberichts zurück, der Zusammenfassungen und Details der Ressourcennutzung der EC2-Instanz, der Ergebnisse der Erkennung von Systemengpässen und Ergebnissen der Python-Betriebsprofilerstellung enthält:

    profiler_report_name = [rule["RuleConfigurationName"] for rule in xgb_model.latest_training_job.rule_job_summary() if "Profiler" in rule["RuleConfigurationName"]][0] profiler_report_name display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))
    Tipp

    Wenn die HTML-Berichte keine Plots im JupyterLab anzeigen, müssen Sie wählenVertraue HTMLganz oben in den Berichten.

    Um Trainingsprobleme wie Überanpassung, verschwindende Farbverläufe und andere Probleme zu identifizieren, die verhindern, dass Ihr Modell konvergiert, verwenden Sie SageMaker Debuggen Sie und ergreifen Sie automatisierte Aktionen, während Sie Ihre ML-Modelle prototypisieren und trainieren. Weitere Informationen finden Sie unter AmazonSageMakerDebugger. Um eine vollständige Analyse der Modellparameter zu finden, lesen Sie dieErklärbarkeit mit Amazon SageMaker DebuggerBeispiel Notizbuch.

Sie verfügen jetzt über ein geschultes XGBoost-Modell. SageMaker speichert das Modellartefakt in Ihrem S3-Bucket. Um den Speicherort des Modellartefakts zu ermitteln, führen Sie den folgenden Code aus, um das Attribut model_data desxgb_model-Schätzer:

xgb_model.model_data
Tipp

Um Verzerrungen zu messen, die in jeder Phase des ML-Lebenszyklus auftreten können (Datenerfassung, Modellschulung und -optimierung sowie Überwachung der zur Vorhersage bereitgestellten ML-Modelle), verwenden Sie SageMaker Klären. Weitere Informationen finden Sie unter Amazon SageMaker Erklärbarkeit des Modells klären. Für ein end-to-end Beispiel dafür finden Sie imFairness und Erklärbarkeit mit SageMaker KlärenBeispiel Notizbuch.