Erste Schritte mit Neo auf Edge-Geräten - 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.

Erste Schritte mit Neo auf Edge-Geräten

Dieser Leitfaden für die ersten Schritte mit Amazon SageMaker Neo zeigt Ihnen, wie Sie ein Modell kompilieren, Ihr Gerät einrichten und Rückschlüsse auf Ihrem Gerät ziehen. Die meisten Codebeispiele verwenden Boto3. Wir stellen Befehle mit bereit, AWS CLI sofern zutreffend, sowie Anweisungen zur Erfüllung der Voraussetzungen für Neo.

Anmerkung

Sie können die folgenden Codeausschnitte auf Ihrem lokalen Computer, in einem SageMaker Notebook, in SageMaker Studio oder (je nach Edge-Gerät) auf Ihrem Edge-Gerät ausführen. Die Einrichtung ist ähnlich. Es gibt jedoch zwei Hauptausnahmen, wenn Sie diesen Leitfaden innerhalb einer SageMaker Notebook-Instance oder SageMaker Studio-Sitzung ausführen:

  • Boto3 muss nicht installiert werden.

  • Sie müssen die ‘AmazonSageMakerFullAccess’ IAM-Richtlinie nicht hinzufügen

In diesem Handbuch wird davon ausgegangen, dass Sie die folgenden Anweisungen auf Ihrem Edge-Gerät ausführen.

Voraussetzungen

  1. Installieren Sie Boto3

    Wenn Sie diese Befehle auf Ihrem Edge-Gerät ausführen, müssen Sie den AWS SDK for Python (Boto3) installieren. Führen Sie in einer Python-Umgebung (vorzugsweise einer virtuellen Umgebung) Folgendes lokal auf dem Terminal Ihres Edge-Geräts oder in einer Jupyter-Notebook-Instanz aus:

    Terminal
    pip install boto3
    Jupyter Notebook
    !pip install boto3
  2. Einrichten von AWS Anmeldeinformationen

    Sie müssen Anmeldedaten für Amazon Web Services auf Ihrem Gerät einrichten, um SDK for Python (Boto3) ausführen zu können. Standardmäßig sollten die AWS Anmeldeinformationen in der Datei ~/.aws/credentials auf Ihrem Edge-Gerät gespeichert werden. In der Datei mit den Anmeldeinformationen sollten Sie zwei Umgebungsvariablen sehen: aws_access_key_id und aws_secret_access_key.

    Führen Sie in Ihrem Terminal aus:

    $ more ~/.aws/credentials [default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY

    Das AWS allgemeine Referenzhandbuch enthält Anweisungen, wie Sie die erforderlichen aws_access_key_id und aws_secret_access_key erhalten. Weitere Informationen zur Einrichtung von Anmeldeinformationen auf Ihrem Gerät finden Sie in der Boto3 Dokumentation.

  3. Richten Sie eine IAM-Rolle ein und fügen Sie Richtlinien hinzu.

    Neo benötigt Zugriff auf Ihre S3-Bucket-URI. Erstellen Sie eine IAM-Rolle, die ausgeführt SageMaker werden kann und über die Berechtigung zum Zugriff auf den S3-URI verfügt. Sie können eine IAM-Rolle erstellen, indem Sie entweder SDK for Python (Boto3), die Konsole oder AWS CLI. Das folgende Beispiel veranschaulicht, wie eine IAM-Rolle mit SDK for Python (Boto3) erstellt wird:

    import boto3 AWS_REGION = 'aws-region' # Create an IAM client to interact with IAM iam_client = boto3.client('iam', region_name=AWS_REGION) role_name = 'role-name'

    Weitere Informationen zum Erstellen einer IAM-Rolle mit der Konsole AWS CLI oder über die AWS API finden Sie unter Erstellen eines IAM-Benutzers in Ihrem AWS Konto.

    Erstellen Sie ein Wörterbuch, das die IAM-Richtlinie beschreibt, die Sie anhängen. Diese Richtlinie wird verwendet, um eine neue IAM-Rolle zu erstellen.

    policy = { 'Statement': [ { 'Action': 'sts:AssumeRole', 'Effect': 'Allow', 'Principal': {'Service': 'sagemaker.amazonaws.com'}, }], 'Version': '2012-10-17' }

    Erstellen Sie eine neue IAM-Rolle mit der Richtlinie, die Sie oben definiert haben:

    import json new_role = iam_client.create_role( AssumeRolePolicyDocument=json.dumps(policy), Path='/', RoleName=role_name )

    Sie müssen wissen, wie Ihr Amazon-Ressourcenname (ARN) lautet, wenn Sie in einem späteren Schritt einen Kompilierungsauftrag erstellen. Speichern Sie ihn daher auch in einer Variablen.

    role_arn = new_role['Role']['Arn']

    Nachdem Sie nun eine neue Rolle erstellt haben, fügen Sie die Berechtigungen hinzu, die für die Interaktion mit Amazon SageMaker und Amazon S3 erforderlich sind:

    iam_client.attach_role_policy( RoleName=role_name, PolicyArn='arn:aws:iam::aws:policy/AmazonSageMakerFullAccess' ) iam_client.attach_role_policy( RoleName=role_name, PolicyArn='arn:aws:iam::aws:policy/AmazonS3FullAccess' );
  4. Erstellen Sie einen Amazon-S3-Bucket zur Speicherung Ihrer Modell-Artefakte

    SageMaker Neo greift von Amazon S3 aus auf Ihre Modellartefakte zu

    Boto3
    # Create an S3 client s3_client = boto3.client('s3', region_name=AWS_REGION) # Name buckets bucket='name-of-your-bucket' # Check if bucket exists if boto3.resource('s3').Bucket(bucket) not in boto3.resource('s3').buckets.all(): s3_client.create_bucket( Bucket=bucket, CreateBucketConfiguration={ 'LocationConstraint': AWS_REGION } ) else: print(f'Bucket {bucket} already exists. No action needed.')
    CLI
    aws s3 mb s3://'name-of-your-bucket' --region specify-your-region # Check your bucket exists aws s3 ls s3://'name-of-your-bucket'/
  5. Trainieren eines Machine Learning-Modells

    Weitere Informationen zum Trainieren eines Machine-Learning-Modells mit Amazon SageMaker finden Sie unter Trainieren eines Modells mit Amazon SageMaker. Sie können Ihr lokal trainiertes Modell optional direkt in einen Amazon S3-URI-Bucket hochladen.

    Anmerkung

    Stellen Sie sicher, dass das Modell je nach verwendetem Framework korrekt formatiert ist. Siehe Welche Eingabedatenformen erwartet SageMaker Neo?

    Wenn Sie noch kein Modell haben, verwenden Sie den curl Befehl , um eine lokale Kopie des coco_ssd_mobilenet Modells von der Website TensorFlowvon abzurufen. Das Modell, das Sie gerade kopiert haben, ist ein Objekterkennungsmodell, das anhand des COCO-Datensatzes trainiert wurde. Geben Sie Folgendes in Ihr Jupyter-Notebook ein:

    model_zip_filename = './coco_ssd_mobilenet_v1_1.0.zip' !curl http://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip \ --output {model_zip_filename}

    Beachten Sie, dass dieses spezielle Beispiel in eine .zip-Datei gepackt wurde. Entpacken Sie diese Datei und packen Sie sie als komprimierte Tar-Datei (.tar.gz) neu, bevor Sie sie in späteren Schritten verwenden. Geben Sie Folgendes in Ihr Jupyter-Notebook ein:

    # Extract model from zip file !unzip -u {model_zip_filename} model_filename = 'detect.tflite' model_name = model_filename.split('.')[0] # Compress model into .tar.gz so SageMaker Neo can use it model_tar = model_name + '.tar.gz' !tar -czf {model_tar} {model_filename}
  6. Laden Sie das trainierte Modell in einen S3-Bucket hoch

    Sobald Sie Ihren Modus für Machine Learning trainiert haben, speichern Sie ihn in einem S3-Bucket.

    Boto3
    # Upload model s3_client.upload_file(Filename=model_filename, Bucket=bucket, Key=model_filename)
    CLI

    Ersetzen Sie your-model-filename und your-S3-bucket durch den Namen Ihres Amazon-S3-Buckets.

    aws s3 cp your-model-filename s3://your-S3-bucket