Mise en route avec Neo sur des appareils en périphérie - Amazon SageMaker

Mise en route avec Neo sur des appareils en périphérie

Ce guide de mise en route avec Amazon SageMaker Neo vous explique comment compiler un modèle, configurer votre périphérique et faire des inférences dessus. La plupart des exemples de code utilisent Boto3. Nous fournissons des commandes à l'aide de la AWS CLI le cas échéant, ainsi que des instructions sur la façon de satisfaire les prérequis pour Neo.

Note

Vous pouvez exécuter les extraits de code suivants sur votre ordinateur local, dans un bloc-notes SageMaker, dans SageMaker Studio ou sur votre appareil en périphérie (selon votre appareil en périphérie). La configuration est similaire, à deux exceptions près selon que vous exécutez ce guide dans une instance de bloc-notes SageMaker 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.

Prerequisites

  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 informations d'identification AWS

    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 informations d'identification AWS doivent être stockées dans le fichier ~/.aws/credentials sur votre appareil en périphérie. 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 pouvant exécuter SageMaker et disposant de l'autorisation d'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 de plus amples informations sur la création d'un rôle IAM avec la console, la AWS CLI ou l'API AWS, veuillez consulter Creating an IAM user in your AWS account.

    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']

    Une fois le nouveau rôle créé, attachez 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ède à vos artefacts de 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

    Pour de plus amples informations sur l'entraînement d'un modèle de machine learning à l'aide d'Amazon SageMaker, veuillez consulter Train a Model with Amazon SageMaker (Entraîner un modèle avec 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é. Veuillez consulter What input data shapes SageMaker Neo expects? (De quelles formes de données d'entrée SageMaker Neo a-t-il besoin ?)

    Si vous n'avez pas encore de modèle, utilisez la commande curl pour obtenir une copie locale du modèle coco_ssd_mobilenet du site Web de TensorFlow. 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. Téléchargement d'un modèle entraîné dans un compartiment S

    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