Textklassifizierung – TensorFlow - 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.

Textklassifizierung – TensorFlow

Der Amazon SageMaker Text Classification - TensorFlow Algorithmus ist ein Algorithmus für überwachtes Lernen, der Transfer Learning mit vielen vortrainierten Modellen aus dem TensorFlow Hub unterstützt. Verwenden Sie Transfer Learning, um eines der verfügbaren vortrainierten Modelle anhand Ihres eigenen Datensatzes zu optimieren, auch wenn eine große Menge an Textdaten nicht verfügbar ist. Der Textklassifizierungsalgorithmus verwendet eine Textzeichenfolge als Eingabe und gibt für jede Klassenbezeichnung eine Wahrscheinlichkeit aus. Trainingsdatensätze müssen im CSV-Format vorliegen.

So verwenden Sie den SageMaker Textklassifizierungsalgorithmus TensorFlow

Sie können die Textklassifizierung TensorFlow als integrierten Amazon SageMaker -Algorithmus verwenden. Im folgenden Abschnitt wird beschrieben, wie Sie die Textklassifizierung TensorFlow mit dem SageMaker Python-SDK verwenden. Informationen zur Verwendung der Textklassifizierung über TensorFlow die Amazon Studio SageMaker Classic-Benutzeroberfläche finden Sie unter SageMaker JumpStart.

Der Textklassifizierungsalgorithmus TensorFlow unterstützt Transfer Learning mit einem der kompatiblen vortrainierten TensorFlow Modelle. Eine Liste aller verfügbaren vortrainierten Modelle finden Sie unter TensorFlow Hub-Modelle. Jedes vortrainierte Modell hat ein Unikat model_id. Im folgenden Beispiel wird BERT Base Uncased (model_id:tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2) zur Feinabstimmung eines benutzerdefinierten Datensatzes verwendet. Die vortrainierten Modelle werden alle vorinstalliert und in Amazon S3-Buckets TensorFlow gespeichert, sodass Schulungsaufträge in Netzwerkisolierung ausgeführt werden können. Verwenden Sie diese vorgenerierten Modelltrainingsartefakte, um einen SageMaker Schätzer zu erstellen.

Rufen Sie zunächst den Docker-Image-URI, den Trainingsskript-URI und den vortrainierten Modell-URI ab. Ändern Sie dann die Hyperparameter nach Bedarf. Sie können ein Python-Wörterbuch mit allen verfügbaren Hyperparametern und ihren Standardwerten mit hyperparameters.retrieve_default sehen. Weitere Informationen finden Sie unter Textklassifizierung – TensorFlow Hyperparameter. Verwenden Sie diese Werte, um einen SageMaker Schätzer zu erstellen.

Anmerkung

Die Standard-Hyperparameterwerte sind für verschiedene Modelle unterschiedlich. Bei größeren Modellen ist die Standardstapelgröße beispielsweise kleiner.

In diesem Beispiel wird der SST2Datensatz verwendet, der positive und negative Filmkritiken enthält. Wir haben den Datensatz vorab heruntergeladen und mit Amazon S3 verfügbar gemacht. Rufen Sie zur Feinabstimmung Ihres Modells an, .fit indem Sie den Amazon S3 S3-Speicherort Ihres Trainingsdatensatzes verwenden. Jeder S3-Bucket, der in einem Notebook verwendet wird, muss sich in derselben AWS Region befinden wie die Notebook-Instanz, die darauf zugreift.

from sagemaker import image_uris, model_uris, script_uris, hyperparameters from sagemaker.estimator import Estimator model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*" training_instance_type = "ml.p3.2xlarge" # Retrieve the Docker image train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None) # Retrieve the training script train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pretrained model tarball for transfer learning train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training") # Retrieve the default hyperparameters for fine-tuning the model hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version) # [Optional] Override default hyperparameters with custom values hyperparameters["epochs"] = "5" # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/SST2/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-tc-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" # Create an Estimator instance tf_tc_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 training job tf_tc_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Weitere Informationen zur Verwendung des SageMaker Textklassifizierungsalgorithmus TensorFlow für Transfer Learning für einen benutzerdefinierten Datensatz finden Sie im Notebook Einführung in JumpStart – Textklassifizierung.

Eingabe- und Ausgabeschnittstelle für den Textklassifizierungsalgorithmus TensorFlow

Jedes der unter TensorFlow Hub Models aufgeführten vortrainierten Modelle kann auf jeden Datensatz abgestimmt werden, der aus Textsätzen mit einer beliebigen Anzahl von Klassen besteht. Das vortrainierte Modell fügt dem Text Embedding-Modell eine Klassifizierungsebene hinzu und initialisiert die Ebenenparameter mit Zufallswerten. Die Ausgabedimension der Klassifikationsschicht wird anhand der Anzahl der in den Eingabedaten erkannten Klassen bestimmt.

Beachten Sie, wie Sie Ihre Trainingsdaten für die Eingabe in das TensorFlow Textklassifizierungsmodell formatieren.

  • Eingabeformat für Trainingsdaten: Ein Verzeichnis, das eine data.csv Datei enthält. Jede Zeile der ersten Spalte sollte ganzzahlige Klassenbezeichnungen zwischen 0 und der Anzahl der Klassen haben. Jede Zeile der zweiten Spalte sollte die entsprechenden Textdaten enthalten.

Im Folgenden finden Sie ein Beispiel für eine CSV-Eingabedatei. Beachten Sie, dass die Datei keinen Header haben sollte. Die Datei sollte in einem Amazon S3-Bucket mit einem Pfad gehostet werden, der dem folge nden ähnelt: s3://bucket_name/input_directory/. Beachten Sie, dass das Trailing / erforderlich ist.

| | | |---|---| |0 |hide new secretions from the parental units| |0 |contains no wit , only labored gags| |1 |that loves its characters and communicates something rather beautiful about human nature| |...|...|

Inkrementelles Training

Sie können das Training eines neuen Modells mit Artefakten aus einem Modell starten, das Sie zuvor mit trainiert haben SageMaker. Diese inkrementelle Schulung verkürzt die Schulungsdauer, wenn Sie ein neues Modell mit denselben oder ähnlichen Daten schulen möchten.

Anmerkung

Sie können ein SageMaker TensorFlow Textklassifizierungsmodell nur mit einem anderen TensorFlow Textklassifizierungsmodell starten, das in trainiert wurde SageMaker.

Sie können jeden Datensatz für das inkrementelle Training verwenden, solange der Klassensatz derselbe bleibt. Der inkrementelle Trainingsschritt ähnelt dem Feinabstimmungsschritt, aber anstatt mit einem vortrainierten Modell zu beginnen, beginnen Sie mit einem vorhandenen fein abgestimmten Modell.

Weitere Informationen zur Verwendung von inkrementellem Training mit dem SageMaker Textklassifizierungsalgorithmus TensorFlow finden Sie im Beispiel-Notebook Einführung in JumpStart – Textklassifizierung.

Inferenz mit der Textklassifizierung – TensorFlow Algorithmus

Sie können das fein abgestimmte Modell hosten, das sich aus Ihrem TensorFlow Textklassifizierungstraining zur Inferenz ergibt. Alle Rohtextformate für Inferenzen müssen vom Inhaltstyp sein application/x-text .

Das Ausführen von Inferenzen führt zu Wahrscheinlichkeitswerten, Klassenbezeichnungen für alle Klassen und dem vorhergesagten Label, das dem Klassenindex mit der höchsten Wahrscheinlichkeit entspricht, kodiert im JSON-Format. Das TensorFlow Textklassifizierungsmodell verarbeitet eine einzelne Zeichenfolge pro Anforderung und gibt nur eine Zeile aus. Nachfolgend finden Sie ein Beispiel für eine Antwort im JSON Lines-Format:

accept: application/json;verbose {"probabilities": [prob_0, prob_1, prob_2, ...], "labels": [label_0, label_1, label_2, ...], "predicted_label": predicted_label}

Wenn accept auf application/json gesetzt ist, gibt das Modell nur Wahrscheinlichkeiten aus.

Amazon EC2-Instance-Empfehlung für den Textklassifizierungsalgorithmus TensorFlow

Der Textklassifizierungsalgorithmus unterstützt alle CPU- und GPU- TensorFlow Instances für das Training, einschließlich:

  • ml.p2.xlarge

  • ml.p2.16xlarge

  • ml.p3.2xlarge

  • ml.p3.16xlarge

  • ml.g4dn.xlarge

  • ml.g4dn.16.xlarge

  • ml.g5.xlarge

  • ml.g5.48xlarge

Wir empfehlen die Verwendung von GPU-Instanzen mit mehr Arbeitsspeicher zum Training mit großen Stapelgrößen. Sowohl CPU- (wie M5) als auch GPU-Instanzen (P2, P3, G4dn oder G5) können für Inferenzen verwendet werden. Eine umfassende Liste der SageMaker Trainings- und Inferenz-Instances in AWS allen Regionen finden Sie unter Amazon- SageMaker Preise.

Textklassifizierung – TensorFlow Beispiel-Notebooks

Weitere Informationen zur Verwendung des SageMaker Textklassifizierungsalgorithmus TensorFlow für Transfer Learning für einen benutzerdefinierten Datensatz finden Sie im Notebook Einführung in JumpStart – Textklassifizierung.

Anweisungen zum Erstellen von Jupyter-Notebook-Instances, mit denen Sie das Beispiel in ausführen können SageMaker, finden Sie unter Amazon- SageMaker Notebook-Instances. Nachdem Sie eine Notebook-Instance erstellt und geöffnet haben, wählen Sie die Registerkarte SageMaker Beispiele aus, um eine Liste aller SageMaker Beispiele anzuzeigen. Zum Öffnen eines Notebooks wählen Sie die Registerkarte Verwenden und dann Kopie erstellen aus.