Inkrementelles Training mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Inkrementelles Training mit Amazon SageMaker JumpStart

Im Dezember 2020, AWS hat die allgemeine Verfügbarkeit von Amazon SageMaker JumpStart angekündigt, eine Fähigkeit von Amazon Sage Maker die Ihnen den schnellen und einfachen Einstieg in Machine Learning (ML) erleichtert. SageMaker-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 häufige Geschäftsprobleme lösen. Diese Funktionen entlasten jeden Schritt des ML-Prozesses, erleichtern die Entwicklung hochwertiger Modelle und verkürzen die Bereitstellungszeit.

Alle JumpStart-Inhalte waren zuvor nur über verfügbar Amazon SageMaker-Studio, die a bereitstellt benutzerfreundliche grafische Oberfläche um mit der Funktion zu interagieren. Neuerdings auch wir kündigte den Start an von einfach zu bedienen JumpStart-APIs als Erweiterung des SageMaker Python SDK, mit der Sie eine große Auswahl an JumpStart-unterstützten vortrainierten Modellen auf Ihren eigenen Datensätzen programmgesteuert bereitstellen und optimieren können. Diese Einführung schaltet die Verwendung von JumpStart-Funktionen in Ihren Code-Workflows, MLOps-Pipelines und überall dort frei, wo Sie mit SageMaker über das SDK interagieren.

Wir freuen uns, Ihnen in diesem Beitrag mitteilen zu können, dass alle trainierbaren JumpStart-Modelle jetzt inkrementelles Training unterstützen. Inkrementelles Training ermöglicht es Ihnen, ein Modell zu trainieren, das Sie bereits feinabgestimmt haben, indem Sie einen erweiterten Datensatz verwenden, der ein zugrunde liegendes Muster enthält, das in früheren Feinabstimmungsläufen nicht berücksichtigt wurde, was zu einer schlechten Modellleistung führte. Inkrementelles Training spart Zeit und Ressourcen, da Sie das Modell nicht von Grund auf neu trainieren müssen. Wenn Sie direkt in den JumpStart-API-Code springen möchten, den wir in diesem Beitrag erklären, können Sie auf die verweisen Beispiel Notizbuch.

JumpStart-Übersicht

JumpStart ist ein facettenreiches Produkt, das verschiedene Funktionen umfasst, die Ihnen helfen, schnell mit ML auf SageMaker zu beginnen. Zum Zeitpunkt der Erstellung dieses Artikels können Sie mit JumpStart Folgendes tun:

  • Stellen Sie vortrainierte Modelle für allgemeine ML-Aufgaben bereit – JumpStart ermöglicht es Ihnen, allgemeine ML-Aufgaben ohne Entwicklungsaufwand zu bewältigen, indem es eine einfache Bereitstellung von Modellen bereitstellt, die auf großen, öffentlich verfügbaren Datensätzen vortrainiert wurden. Die ML-Forschungsgemeinschaft hat große Anstrengungen unternommen, um einen Großteil der kürzlich entwickelten Modelle öffentlich zur Nutzung verfügbar zu machen; JumpStart hostet eine Sammlung von über 300 Modellen, die die 15 beliebtesten ML-Aufgaben wie Objekterkennung, Textklassifizierung und Textgenerierung abdecken, was es Anfängern leicht macht, sie zu verwenden. Diese Modelle stammen aus beliebten Modell-Hubs wie TensorFlow, PyTorch, Hugging Face und MXNet Hub.
  • Optimieren Sie vortrainierte Modelle – JumpStart ermöglicht Ihnen die Feinabstimmung vortrainierter Modelle, ohne dass Sie Ihren eigenen Trainingsalgorithmus schreiben müssen. Im ML wird die Fähigkeit bezeichnet, das in einer Domäne erlernte Wissen auf eine andere zu übertragen Transferlernen. Sie können Transfer Learning verwenden, um genaue Modelle für Ihre kleineren Datensätze zu erstellen, und zwar mit viel geringeren Schulungskosten als beim Training des ursprünglichen Modells. JumpStart enthält auch beliebte Trainingsalgorithmen auf Basis von LightGBM, CatBoost, XGBoost und Scikit-learn, die Sie von Grund auf für tabellarische Regression und Klassifizierung trainieren können.
  • Verwenden Sie vorgefertigte Lösungen – JumpStart bietet eine Reihe von 17 Lösungen für gängige ML-Anwendungsfälle wie Bedarfsprognosen und Industrie- und Finanzanwendungen, die Sie mit nur wenigen Klicks bereitstellen können. Lösungen sind End-to-End-ML-Anwendungen, die verschiedene AWS-Services aneinanderreihen, um einen bestimmten geschäftlichen Anwendungsfall zu lösen. Sie benutzen AWS CloudFormation Vorlagen und Referenzarchitekturen für eine schnelle Bereitstellung, was bedeutet, dass sie vollständig anpassbar sind.
  • Verwenden Sie Notebook-Beispiele für SageMaker-Algorithmen – SageMaker bietet eine Reihe integrierter Algorithmen, um Data Scientists und ML-Praktikern den Einstieg in das Training und die schnelle Bereitstellung von ML-Modellen zu erleichtern. JumpStart stellt Beispiel-Notebooks bereit, mit denen Sie diese Algorithmen schnell anwenden können.
  • Sehen Sie sich Schulungsvideos und Blogs an – JumpStart bietet auch zahlreiche Blogbeiträge und Videos, die Ihnen beibringen, wie Sie verschiedene Funktionen in SageMaker verwenden.

JumpStart akzeptiert benutzerdefinierte VPC-Einstellungen und AWS-Schlüsselverwaltungsservice (AWS KMS)-Verschlüsselungsschlüssel, damit Sie die verfügbaren Modelle und Lösungen sicher in Ihrer Unternehmensumgebung verwenden können. Sie können Ihre Sicherheitseinstellungen innerhalb von Studio oder über das SageMaker Python SDK an JumpStart übergeben.

Bildklassifizierung

Die Bildklassifizierung bezieht sich auf die Klassifizierung eines Bildes in eine der Klassenbezeichnungen im Trainingsdatensatz. Sie können das Modell auf jeden beliebigen Datensatz mit Bildern einer beliebigen Anzahl von Klassen feinabstimmen. Das für die Feinabstimmung auf JumpStart verfügbare Modell fügt eine Klassifizierungsebene an das entsprechende Feature-Extractor-Modell an und initialisiert die Ebenenparameter mit zufälligen Werten. Die Ausgabedimension der Klassifizierungsschicht wird basierend auf der Anzahl der Klassen in den Eingabedaten bestimmt. Der Feinabstimmungsschritt stimmt die Parameter der Klassifikationsschicht ab, während die Parameter des Merkmalsextraktionsmodells eingefroren bleiben, und gibt das feinabgestimmte Modell zurück. Das Ziel besteht darin, Vorhersagefehler bei den Eingabedaten zu minimieren.

Für unseren Datensatz ist die Eingabe ein Verzeichnis mit so vielen Unterverzeichnissen wie die Anzahl der Klassen. Jedes Unterverzeichnis sollte Bilder dieser Klasse im .jpg-Format enthalten. Das Eingabeverzeichnis sollte wie die folgende Hierarchie aussehen, wenn die Trainingsdaten Bilder aus zwei Klassen enthalten: roses und dandelion:

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

Die Namen der Ordner, Klassen und .jpg-Dateinamen können beliebig sein.

Wir bieten die tf_flowers1 Datensatz als Standarddatensatz für die Feinabstimmung des Modells. Dieser Datensatz umfasst Bilder von fünf Blumenarten. Der Datensatz wurde heruntergeladen von TensorFlow.

Exemplarische Vorgehensweise

Die folgenden Abschnitte bieten eine Schritt-für-Schritt-Demo zur Durchführung der Bildklassifizierung mit JumpStart, sowohl über die Studio-Benutzeroberfläche als auch über die JumpStart-APIs.

Wir gehen durch die folgenden Schritte:

  1. Greifen Sie über die Studio-Benutzeroberfläche auf JumpStart zu:
    1. Optimieren Sie das vortrainierte Modell.
    2. Stellen Sie das optimierte Modell bereit.
    3. Trainieren Sie das feinabgestimmte Modell inkrementell und stellen Sie es erneut bereit.
  2. Verwenden Sie JumpStart programmgesteuert mit dem SageMaker Python SDK:
    1. Optimieren Sie das vortrainierte Modell.
    2. Stellen Sie das optimierte Modell bereit.
    3. Trainieren Sie das feinabgestimmte Modell inkrementell und stellen Sie es erneut bereit.

Greifen Sie über die Studio-Benutzeroberfläche auf JumpStart zu

In diesem Abschnitt demonstrieren wir die Feinabstimmung und Bereitstellung von JumpStart-Modellen über die Studio-Benutzeroberfläche. Darüber hinaus zeigen wir, wie Sie ein Modell, das Sie zuvor fein abgestimmt haben, inkrementell trainieren können.

Optimieren Sie das vortrainierte Modell

Das folgende Video zeigt Ihnen, wie Sie ein vortrainiertes Bildklassifizierungsmodell auf JumpStart finden und optimieren. Die Modellseite enthält wertvolle Informationen über das Modell, seine Verwendung, das erwartete Datenformat und einige Details zur Feinabstimmung.

Zu Demonstrationszwecken optimieren wir das Modell anhand des standardmäßig bereitgestellten Datensatzes, nämlich der tf_flowers Datensatz, bestehend aus verschiedenen Blumensorten. Die Feinabstimmung Ihres eigenen Datensatzes umfasst die korrekte Formatierung der Daten (wie auf der Modellseite erläutert) und das Hochladen in Amazon Simple Storage-Service (Amazon S3) und Angabe des Speicherorts in der Datenquellenkonfiguration.

Wir verwenden die gleichen Hyperparameterwerte, die standardmäßig festgelegt sind (Anzahl der Epochen, Lernrate und Stapelgröße). Wir verwenden auch eine GPU-unterstützte ml.p3.2xlarge-Instanz als unsere SageMaker-Trainingsinstanz.

Sie können Ihren Trainingsjob direkt auf der Studio-Konsole überwachen und werden nach Abschluss benachrichtigt.

Stellen Sie das optimierte Modell bereit

Nach Abschluss des Trainings können Sie das optimierte Modell von derselben Seite aus bereitstellen, auf der sich auch die Trainingsauftragsdetails befinden. Um unser Modell bereitzustellen, wählen wir einen anderen Instanztyp, ml.p2.xlarge. Es bietet immer noch die GPU-Beschleunigung, die für eine niedrige Inferenzlatenz erforderlich ist, jedoch zu einem niedrigeren Preis. Nachdem Sie die SageMaker-Hosting-Instanz konfiguriert haben, wählen Sie Deploy. Es kann 5–10 Minuten dauern, bis Ihr persistenter Endpunkt betriebsbereit ist.

Dann ist Ihr Endpunkt betriebsbereit und bereit, auf Inferenzanfragen zu reagieren!

Um Ihre Zeit bis zur Inferenz zu verkürzen, stellt JumpStart ein Beispiel-Notebook bereit, das Ihnen zeigt, wie Sie Inferenz auf Ihrem frisch bereitgestellten Endpunkt ausführen. Wählen Notizbuch öffnen für Endpunkt verwenden aus Studio.

Trainieren Sie das feinabgestimmte Modell inkrementell und stellen Sie es bereit

Wenn die Feinabstimmung abgeschlossen ist, können Sie das Modell weiter trainieren, um die Leistung zu steigern. Dieser Schritt ist dem anfänglichen Feinabstimmungsprozess sehr ähnlich, außer dass wir das bereits feinabgestimmte Modell als Ausgangspunkt verwenden. Sie können neue Daten verwenden, aber das Datensatzformat muss dasselbe sein (gleicher Satz von Klassen).

Verwenden Sie JumpStart programmgesteuert mit dem SageMaker SDK

In den vorangegangenen Abschnitten haben wir gezeigt, wie Sie die JumpStart-Benutzeroberfläche verwenden können, um ein Modell mit wenigen Klicks interaktiv zu optimieren, bereitzustellen und inkrementell zu trainieren. Sie können die Modelle und die einfache Feinabstimmung von JumpStart auch programmgesteuert verwenden, indem Sie APIs verwenden, die in das SageMaker SDK integriert sind. Wir gehen jetzt ein kurzes Beispiel durch, wie Sie den vorherigen Prozess replizieren können. Alle Schritte in dieser Demo sind in den begleitenden Notebooks verfügbar Einführung in JumpStart – Bildklassifizierung.

Optimieren Sie das vortrainierte Modell

Um ein ausgewähltes Modell zu optimieren, müssen wir den URI dieses Modells sowie den des Trainingsskripts und das für das Training verwendete Container-Image abrufen. Glücklicherweise hängen diese drei Eingaben ausschließlich vom Modellnamen und der Version ab (eine Liste der verfügbaren Modelle finden Sie unter Verfügbare JumpStart-Modelltabelle) und den Typ der Instance, auf der Sie trainieren möchten. Dies wird im folgenden Code-Snippet demonstriert:

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

Wir holen die ab model_id entspricht dem gleichen Modell, das wir zuvor verwendet haben. Das ic in der Kennung entspricht der Bildklassifizierung.

Sie können dieses JumpStart-Modell jetzt mit dem SageMaker SDK an Ihrem eigenen benutzerdefinierten Dataset optimieren. Wir verwenden das gleiche tf_flowers Datensatz, der öffentlich auf Amazon S3 gehostet wird und sich bequem auf die Stimmungsanalyse konzentriert. Ihr Datensatz sollte für die Feinabstimmung strukturiert sein, wie im vorherigen Abschnitt erläutert. Siehe folgenden Beispielcode:

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
ic_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,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Wir erhalten die gleichen Standard-Hyperparameter für unser ausgewähltes Modell wie die, die wir im vorherigen Abschnitt gesehen haben, indem wir verwenden sagemaker.hyperparameters.retrieve_default(). Anschließend instanziieren wir einen SageMaker-Schätzer und rufen die .fit-Methode auf, um mit der Feinabstimmung unseres Modells zu beginnen, und übergeben ihm den Amazon S3-URI für unsere Trainingsdaten. Wie Sie sehen können, ist die entry_point bereitgestelltes Skript heißt transfer_learning.py (dasselbe gilt für andere Tasks und Modelle) und der Eingangsdatenkanal, an den übergeben wird .fit muss benannt werden training.

Bereitstellen des optimierten Modells

Nach Abschluss des Trainings können Sie Ihr optimiertes Modell bereitstellen. Dazu benötigen wir lediglich den Inferenzskript-URI (der Code, der bestimmt, wie das Modell nach der Bereitstellung für die Inferenz verwendet wird) und den Inferenz-Container-Image-URI, der einen geeigneten Modellserver zum Hosten des von uns ausgewählten Modells enthält. Siehe folgenden Code:

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.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,
)

Nach ein paar Minuten wird unser Modell bereitgestellt und wir können Vorhersagen daraus in Echtzeit erhalten!

Als Nächstes rufen wir den Endpunkt auf, um vorherzusagen, welche Art von Blumen im Beispielbild vorhanden sind. Wir benutzen das query_endpoint und parse_response Hilfsfunktionen, die im Begleittext definiert sind Notizbuch.

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

Trainieren Sie das feinabgestimmte Modell inkrementell und stellen Sie es erneut bereit

Wir können die Leistung eines fein abgestimmten Modells steigern, indem wir es mit neuen Bildern weiter trainieren. Sie können dafür beliebig viele neue oder alte Bilder verwenden, das Datensatzformat muss jedoch gleich bleiben (gleicher Klassensatz). Der inkrementelle Trainingsschritt ähnelt dem Feinabstimmungsprozess, mit einem wichtigen Unterschied: Bei der anfänglichen Feinabstimmung beginnen wir mit einem vortrainierten Modell, während wir beim inkrementellen Training mit einem vorhandenen feinabgestimmten Modell beginnen. Siehe folgenden Code:

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Wenn das Training abgeschlossen ist, können wir die gleichen Schritte wie im vorherigen Abschnitt beschrieben verwenden, um das Modell bereitzustellen.

Zusammenfassung

JumpStart ist eine Funktion in SageMaker, mit der Sie schnell mit ML beginnen können. JumpStart verwendet vortrainierte Open-Source-Modelle, um allgemeine ML-Probleme wie Bildklassifizierung, Objekterkennung, Textklassifizierung, Satzpaarklassifizierung und Beantwortung von Fragen zu lösen.

In diesem Beitrag haben wir Ihnen gezeigt, wie Sie ein vortrainiertes Bildklassifizierungsmodell optimieren und bereitstellen. Wir haben auch gezeigt, wie ein fein abgestimmtes Modell für die Bildklassifizierung inkrementell trainiert werden kann. Mit JumpStart können Sie diesen Vorgang ganz einfach durchführen, ohne programmieren zu müssen. Probieren Sie die Lösung selbst aus und lassen Sie uns in den Kommentaren wissen, wie es läuft. Um mehr über JumpStart zu erfahren, sehen Sie sich das AWS re:Invent 2020-Video an Beginnen Sie mit Amazon SageMaker JumpStart in wenigen Minuten mit ML.

Bibliographie

  1. Das TensorFlow-Team, 2019

Über die Autoren

Inkrementelles Training mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Vivek Madan ist ein angewandter Wissenschaftler im Amazon SageMaker JumpStart-Team. Er promovierte. von der University of Illinois at Urbana-Champaign und war Postdoktorand an der Georgia Tech. Er ist ein aktiver Forscher in den Bereichen maschinelles Lernen und Algorithmendesign und hat Beiträge auf Konferenzen von EMNLP, ICLR, COLT, FOCS und SODA veröffentlicht.

Inkrementelles Training mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Joao Moura ist AI/ML Specialist Solutions Architect bei Amazon Web Services. Er konzentriert sich hauptsächlich auf NLP-Anwendungsfälle und hilft Kunden, das Training und die Bereitstellung von Deep-Learning-Modellen zu optimieren. Er ist auch ein aktiver Befürworter von Low-Code-ML-Lösungen und ML-spezialisierter Hardware.

Inkrementelles Training mit Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. 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, ACL und EMNLP veröffentlicht.

Zeitstempel:

Mehr von AWS Maschinelles Lernen