Démarrer avec Neo sur des appareils en périphérie - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Démarrer avec Neo sur des appareils en périphérie

Ce guide de prise en main d'Amazon SageMaker Neo explique comment compiler un modèle, configurer votre appareil et tirer des conclusions sur celui-ci. La plupart des exemples de code utilisent Boto3. Nous fournissons des commandes, le cas AWS CLI échéant, ainsi que des instructions sur la manière de satisfaire aux prérequis pour Neo.

Note

Vous pouvez exécuter les extraits de code suivants sur votre machine locale, dans un SageMaker bloc-notes, dans SageMaker Studio ou (selon votre appareil Edge) sur votre appareil Edge. La configuration est similaire ; toutefois, il existe deux exceptions principales si vous exécutez ce guide dans une instance de SageMaker bloc-notes ou une session SageMaker Studio :

  • Vous n'avez pas besoin d'installer Boto3.

  • Vous n'avez pas besoin d'ajouter la politique IAM ‘AmazonSageMakerFullAccess’

Ce guide suppose que vous exécutez les instructions suivantes sur votre appareil en périphérie.

Prérequis

  1. Installation de Boto3

    Si vous exécutez ces commandes sur votre appareil en périphérie, vous devez installer le kit AWS SDK for Python (Boto3). Dans un environnement Python (de préférence un environnement virtuel), exécutez les opérations suivantes localement sur le terminal de votre appareil en périphérie ou dans une instance de bloc-notes Jupyter :

    Terminal
    pip install boto3
    Jupyter Notebook
    !pip install boto3
  2. Configurer les AWS informations d'identification

    Vous devez configurer les informations d'identification Amazon Web Services sur votre périphérique afin d'exécuter le SDK for Python (Boto3). Par défaut, les AWS informations d'identification doivent être stockées dans le fichier ~/.aws/credentials sur votre appareil Edge. Dans le fichier d'informations d'identification, vous devez voir deux variables d'environnement :aws_access_key_id et aws_secret_access_key.

    Dans votre terminal, exécutez :

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

    Le Guide de référence générale AWS contient des instructions sur la façon d'obtenir les aws_access_key_id et aws_secret_access_key nécessaires. Pour de plus amples informations sur la configuration des informations d'identification sur votre périphérique, veuillez consulter la documentation Boto3.

  3. Configurez un rôle IAM et attachez-lui des politiques.

    Neo doit accéder à l'URI de votre compartiment S3. Créez un rôle IAM qui peut s'exécuter SageMaker et qui est autorisé à accéder à l'URI S3. Vous pouvez créer un rôle IAM à l'aide du SDK for Python (Boto3), de la console ou de la AWS CLI. L'exemple suivant illustre la création d'un rôle IAM à l'aide du SDK for Python (Boto3) :

    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'

    Pour plus d'informations sur la création d'un rôle IAM avec la console ou via l' AWS API AWS CLI, consultez la section Création d'un utilisateur IAM dans votre AWS compte.

    Créez un dictionnaire décrivant la politique IAM que vous attachez. Cette politique sert à créer un nouveau rôle IAM.

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

    Créez un nouveau rôle IAM à l'aide de la politique que vous avez définie ci-dessus :

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

    Vous devez connaître votre Amazon Resource Name (ARN) lorsque vous créez une tâche de compilation à une étape ultérieure. Veillez donc à le stocker dans une variable.

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

    Maintenant que vous avez créé un nouveau rôle, associez les autorisations dont il a besoin pour interagir avec Amazon SageMaker et Amazon S3 :

    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. Création d'un compartiment Amazon S3 pour stocker vos artefacts de modèle

    SageMaker Neo accèdera aux artefacts de votre modèle depuis Amazon S3

    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. Entraînement d'un modèle de machine learning

    Consultez Train a Model with Amazon SageMaker pour plus d'informations sur la façon de former un modèle d'apprentissage automatique à l'aide d'Amazon SageMaker. En variante, vous pouvez télécharger le modèle que vous avez entraîné localement, directement dans un compartiment d'URI Amazon S3.

    Note

    Assurez-vous que le modèle est correctement formaté en fonction du cadre que vous avez utilisé. Voir Quelles sont les formes de données d'entrée attendues par SageMaker Neo ?

    Si vous n'avez pas encore de modèle, utilisez la curl commande pour obtenir une copie locale du coco_ssd_mobilenet modèle sur le site Web TensorFlow du fabricant. Le modèle que vous venez de copier est un modèle de détection d'objets entraîné à partir du jeu de données COCO. Saisissez ce qui suit dans votre bloc-notes Jupyter :

    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}

    Veuillez noter que cet exemple particulier a été packagé dans un fichier .zip. Décompressez ce fichier et repackagez-le en tant que fichier tarfile compressé (.tar.gz) avant de l'utiliser dans les étapes ultérieures. Saisissez ce qui suit dans votre bloc-notes Jupyter :

    # 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. Chargement d'un modèle entraîné dans un compartiment S3

    Une fois votre modèle de machine learning entraîné, stockez-le dans un compartiment S3.

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

    Remplacez your-model-filename et your-S3-bucket par le nom de votre compartiment S3.

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