Führen Sie die automatische Modelloptimierung mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence durch. Vertikale Suche. Ai.

Führen Sie die automatische Modelloptimierung mit Amazon SageMaker JumpStart durch

Im Dezember 2020 AWS angekündigt die allgemeine Verfügbarkeit von Amazon SageMaker-JumpStart, eine Fähigkeit von Amazon Sage Maker die Ihnen den schnellen und einfachen Einstieg in Machine Learning (ML) erleichtert. Im März 2022 wir auch angekündigt die Unterstützung für APIs in JumpStart. JumpStart bietet mit einem Klick die Feinabstimmung und Bereitstellung einer Vielzahl vortrainierter Modelle für beliebte ML-Aufgaben sowie eine Auswahl an End-to-End-Lösungen, die allgemeine Geschäftsprobleme lösen. Diese Funktionen entlasten jeden Schritt des ML-Prozesses und machen es einfacher, hochwertige Modelle zu entwickeln und die Zeit bis zur Bereitstellung zu verkürzen.

In diesem Beitrag zeigen wir, wie Sie mit JumpStart eine automatische Modelloptimierung durchführen.

Automatische Modellabstimmung von SageMaker

Traditionell implementieren ML-Ingenieure eine Trial-and-Error-Methode, um den richtigen Satz von Hyperparametern zu finden. Trial-and-Error beinhaltet das Ausführen mehrerer Jobs nacheinander oder parallel, während die für die Ausführung des Experiments erforderlichen Ressourcen bereitgestellt werden.

Mit der Automatische Modellabstimmung von SageMaker, können ML-Ingenieure und Data Scientists die zeitaufwändige Aufgabe der Optimierung ihres Modells entlasten und SageMaker die Experimente ausführen lassen. SageMaker nutzt die Elastizität der AWS-Plattform, um effizient und gleichzeitig mehrere Trainingssimulationen auf einem Datensatz auszuführen und die besten Hyperparameter für ein Modell zu finden.

Die automatische Modelloptimierung von SageMaker findet die beste Version eines Modells, indem viele Trainingsjobs auf Ihrem Datensatz mithilfe des Algorithmus und ausgeführt werden Bereiche von Hyperparametern, die Sie angeben. Es wählt dann die Hyperparameterwerte aus, die zu einem Modell führen, das die beste Leistung liefert, gemessen an a Metrisch die du wählst.

Die automatische Modelloptimierung verwendet entweder a Bayesianisch (Standard) oder a zufällig Suchstrategie, um die besten Werte für Hyperparameter zu finden. Bayessche Suche behandelt Hyperparameter-Tuning wie a Regression Problem. Bei der Auswahl der besten Hyperparameter für den nächsten Trainingsjob berücksichtigt es alles, was es bisher über das Problem weiß, und lässt den Algorithmus die bekanntesten Ergebnisse verwerten.

In diesem Beitrag verwenden wir die standardmäßige Bayes'sche Suchstrategie, um die Schritte zu demonstrieren, die zum Ausführen der automatischen Modelloptimierung mit JumpStart unter Verwendung von erforderlich sind LichtGBM Modell.

JumpStart unterstützt derzeit 10 Beispiel-Notebooks mit automatischer Modelloptimierung. Es unterstützt auch vier gängige Algorithmen für die tabellarische Datenmodellierung. Die Aufgaben und Links zu ihren Beispielnotebooks sind in der folgenden Tabelle zusammengefasst.

Aufgabe Vortrainierte Modelle Unterstützt benutzerdefinierte Datensätze Frameworks unterstützt Beispiel Notebooks
Bildklassifizierung ja ja PyTorch, TensorFlow Einführung in JumpStart – Bildklassifizierung
Objekterkennung ja ja PyTorch, TensorFlow, MXNet Einführung in JumpStart – Objekterkennung
Semantische Segmentierung ja ja MXNet Einführung in JumpStart – Semantische Segmentierung
Textklassifizierung ja ja TensorFlow Einführung in JumpStart – Textklassifizierung
Satzpaarklassifizierung ja ja TensorFlow, umarmendes Gesicht Einführung in JumpStart – Satzpaarklassifizierung
Frage beantworten ja ja PyTorch Einführung in JumpStart – Fragen beantworten
Tabellarische Einordnung ja ja LightGBM, CatBoost, XGBoost, Linear Learner Einführung in JumpStart – Tabellarische Klassifizierung – LightGBM, CatBoost
Einführung in JumpStart – Tabellarische Klassifizierung – XGBoost, Linear Learner
Tabellarische Regression ja ja LightGBM, CatBoost, XGBoost, Linear Learner Einführung in JumpStart – tabellarische Regression – LightGBM, CatBoost
Einführung in JumpStart – Tabellarische Regression – XGBoost, Linear Learner

Lösungsüberblick

Dieser technische Workflow gibt einen Überblick über die verschiedenen Funktionen und Schritte von Amazon Sagemaker, die zum automatischen Optimieren eines JumpStart-Modells erforderlich sind.

Führen Sie die automatische Modelloptimierung mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence durch. Vertikale Suche. Ai.

In den folgenden Abschnitten bieten wir eine Schritt-für-Schritt-Anleitung zum Ausführen der automatischen Modelloptimierung mit JumpStart unter Verwendung des LightGBM-Algorithmus. Wir bieten eine Begleitung Notizbuch für diese anleitung.

Wir durchlaufen die folgenden High-Level-Schritte:

  1. Rufen Sie das vortrainierte JumpStart-Modell und den Image-Container ab.
  2. Festlegen von statischen Hyperparametern.
  3. Definieren Sie die abstimmbaren Hyperparameterbereiche.
  4. Initialisieren Sie die automatische Modelloptimierung.
  5. Führen Sie den Optimierungsjob aus.
  6. Stellen Sie das beste Modell an einem Endpunkt bereit.

Rufen Sie das vortrainierte JumpStart-Modell und den Image-Container ab

In diesem Abschnitt wählen wir das LightGBM-Klassifizierungsmodell zur Feinabstimmung. Wir verwenden den Instanztyp ml.m5.xlarge, auf dem das Modell ausgeführt wird. Anschließend rufen wir den Trainings-Docker-Container, die Quelle des Trainingsalgorithmus und das vorab trainierte Modell ab. Siehe folgenden Code:

training_instance_type = "ml.m5.xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=train_model_id,
    model_version=train_model_version,
    image_scope=train_scope,
    instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

Festlegen von statischen Hyperparametern

Wir rufen jetzt die Standard-Hyperparameter für dieses LightGBM-Modell ab, wie von JumpStart vorkonfiguriert. Wir überschreiben auch die num_boost_round Hyperparameter mit einem benutzerdefinierten Wert.

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values

Definieren Sie die abstimmbaren Hyperparameterbereiche

Als nächstes definieren wir die zu seinden Hyperparameterbereiche optimiert durch automatisches Modelltuning. Wir definieren den Hyperparameternamen wie vom Modell erwartet und dann die Wertebereiche, die für diesen Hyperparameter versucht werden sollen. Automatisches Modell-Tuning zieht Samples (gleich der max_jobs Parameter) aus dem Raum der Hyperparameter, wobei eine Technik namens Bayes'sche Suche verwendet wird. Für jede gezogene Hyperparameter-Stichprobe erstellt der Tuner einen Trainingsjob, um das Modell mit dieser Konfiguration zu evaluieren. Siehe folgenden Code:

hyperparameter_ranges = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "early_stopping_rounds": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

Initialisieren Sie die automatische Modelloptimierung

Wir beginnen mit der Erstellung eines Estimator -Objekt mit allen erforderlichen Assets, die den Trainingsjob definieren, z. B. das vorab trainierte Modell, das Trainingsbild und das Trainingsskript. Dann definieren wir a HyperparameterTuner -Objekt, um mit SageMaker-APIs zur Hyperparameter-Optimierung zu interagieren.

Das HyperparameterTuner akzeptiert als Parameter das Estimator-Objekt, die Zielmetrik, auf deren Grundlage der beste Satz von Hyperparametern entschieden wird, die Gesamtzahl der Trainingsjobs (max_jobs) zum Starten des Hyperparameter-Tuning-Jobs und die maximal auszuführenden parallelen Trainingsjobs (max_parallel_jobs). Trainingsjobs werden mit dem LightGBM-Algorithmus und den minimalen Hyperparameterwerten ausgeführt mlogloss Metrik gewählt wird. Weitere Informationen zum Konfigurieren der automatischen Modelloptimierung finden Sie unter Best Practices für das Hyperparameter-Tuning.

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
) tuner = HyperparameterTuner(
    estimator=tabular_estimator,
    objective_metric_name="multi_logloss",
    hyperparameter_ranges=hyperparameter_ranges,
    metric_definitions=[{"Name": "multi_logloss", "Regex": "multi_logloss: ([0-9\.]+)"}],
    strategy="Bayesian",
    max_jobs=10,
    max_parallel_jobs=2,
    objective_type="Minimize",
    base_tuning_job_name=training_job_name,
)

Im vorhergehenden Code weisen wir den Tuner an, höchstens 10 Experimente auszuführen (max_jobs) und nur zwei gleichzeitige Experimente gleichzeitig (max_parallel_jobs). Beide Parameter halten Ihre Kosten und Schulungszeit unter Kontrolle.

Führen Sie den Optimierungsjob aus

Um den SageMaker-Tuning-Job zu starten, rufen wir die fit-Methode des Hyperparameter-Tuner-Objekts auf und übergeben die Amazon Simple Storage-Service (Amazon S3) Pfad der Trainingsdaten:

tuner.fit({"training": training_dataset_s3_path}, logs=True)

Während die automatische Modelloptimierung nach den besten Hyperparametern sucht, können Sie deren Fortschritt entweder auf der SageMaker-Konsole oder auf überwachen Amazon CloudWatch. Wenn das Training abgeschlossen ist, werden die fein abgestimmten Artefakte des besten Modells an den Amazon S3-Ausgabespeicherort hochgeladen, der in der Trainingskonfiguration angegeben ist.

Stellen Sie das beste Modell an einem Endpunkt bereit

Wenn der Tuning-Job abgeschlossen ist, wurde das beste Modell ausgewählt und in Amazon S3 gespeichert. Wir können dieses Modell jetzt bereitstellen, indem wir die Methode deploy von aufrufen HyperparameterTuner -Objekt und Übergeben der erforderlichen Parameter, wie z. B. die Anzahl der Instanzen, die für den erstellten Endpunkt verwendet werden sollen, deren Typ, das bereitzustellende Image und das auszuführende Skript:

tuner.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    entry_point="inference.py",
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    endpoint_name=endpoint_name,
    enable_network_isolation=True
)

Wir können jetzt den erstellten Endpunkt testen, indem wir Rückschlussanforderungen stellen. Sie können den Rest des Prozesses in der Begleitdatei verfolgen Notizbuch.

Zusammenfassung

Mit der automatischen Modelloptimierung in SageMaker können Sie die beste Version Ihres Modells finden, indem Sie Trainingsjobs auf dem bereitgestellten Datensatz mit einem der unterstützten Algorithmen ausführen. Mit der automatischen Modelloptimierung können Sie die Zeit für die Optimierung eines Modells verkürzen, indem Sie automatisch nach der besten Hyperparameterkonfiguration innerhalb der von Ihnen angegebenen Hyperparameterbereiche suchen.

In diesem Beitrag haben wir den Wert der Ausführung der automatischen Modelloptimierung auf einem vorab trainierten JumpStart-Modell unter Verwendung von SageMaker-APIs aufgezeigt. Wir haben den LightGBM-Algorithmus verwendet und maximal 10 Trainingsjobs definiert. Wir haben auch Links zu Beispiel-Notebooks bereitgestellt, die die ML-Frameworks zeigen, die die JumpStart-Modelloptimierung unterstützen.

Weitere Einzelheiten zur Optimierung eines JumpStart-Modells mit automatischer Modelloptimierung finden Sie in unserem Beispiel Notizbuch.


Über den Autor

Führen Sie die automatische Modelloptimierung mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence durch. Vertikale Suche. Ai.Doug Mbaya ist Senior Partner Solution Architect mit Fokus auf Daten und Analytik. Doug arbeitet eng mit AWS-Partnern zusammen und hilft ihnen bei der Integration von Daten- und Analyselösungen in die Cloud.

Führen Sie die automatische Modelloptimierung mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence durch. Vertikale Suche. Ai.Kruthi Jayasimha Rao ist Partner Solutions Architect im Scale-PSA-Team. Kruthi führt technische Validierungen für Partner durch, um ihnen Fortschritte im Partnerpfad zu ermöglichen.

Führen Sie die automatische Modelloptimierung mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence durch. Vertikale Suche. Ai.Giannis Mitropoulos ist Softwareentwicklungsingenieur für SageMaker Automatische Modelloptimierung.

Führen Sie die automatische Modelloptimierung mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence durch. Vertikale Suche. Ai.Dr. Ashish Khetan ist Senior Applied Scientist mit Amazon SageMaker-JumpStart und Integrierte Amazon SageMaker-Algorithmen und hilft bei der Entwicklung von Algorithmen für maschinelles Lernen. Er ist ein aktiver Forscher auf dem Gebiet des maschinellen Lernens und der statistischen Inferenz und hat viele Artikel auf den Konferenzen NeurIPS, ICML, ICLR, JMLR und ACL veröffentlicht.

Zeitstempel:

Mehr von AWS Maschinelles Lernen