Comment puis-je déployer un modèle Amazon SageMaker sur un autre compte AWS ?

Lecture de 5 minute(s)
0

J'entraîne un modèle Amazon SageMaker sur un seul compte AWS. Je souhaite déployer ce modèle sur un point de terminaison dans un autre compte AWS.

Résolution

Compte A (compte sandbox)

  1. Créer une clé AWS KMS (Key Management Service). Sur la page Définir des autorisations d'utilisation de clé, dans la section Autres comptes AWS, choisissez Ajouter un autre compte AWS. Saisissez ensuite le numéro de compte AWS du compte B (le compte sur lequel vous souhaitez déployer le modèle). Utilisez cette clé pour la tâche d'entraînement Amazon SageMaker. Si vous ne spécifiez pas de clé AWS KMS, Amazon SageMaker utilise par défaut une clé de chiffrement Amazon S3 (Simple Storage Service) côté serveur. Vous ne pouvez pas partager ni utiliser une clé de chiffrement Amazon S3 côté serveur par défaut avec un autre compte AWS.
  2. Si vous n'avez pas créé de tâche d'entraînement, créez-en une. Dans la classe Estimateur, ajoutez la clé AWS KMS que vous avez créée à l'étape précédente. Reportez-vous à l'exemple suivant :
    linear = sagemaker.estimator.Estimator(
        ...
        output_kms_key='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
        ...  
        )

Compte B (compte de déploiement)

  1. Créez deux politiques IAM (Identity and Access Management) AWS semblables aux politiques ci-dessous. Comme il s'agit de politiques en ligne, elles sont intégrées à une identité IAM (utilisateur, groupe ou rôle).

    Politique en ligne 1 : Elle permet à un rôle IAM d'accéder à la ressource Amazon S3 du compte A qui contient les artefacts du modèle. Remplacez awsdoc-example-bucket par le nom du compartiment S3 dans lequel le résultat de la tâche d'entraînement est stocké :

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::awsdoc-example-bucket/sagemaker/linear-learner/output/model.tar.gz"
        }
      ]
    }

    Politique en ligne 2 : Elle permet à un futur rôle IAM d'utiliser la clé AWS KMS dans le compte A. Dans le champ Ressource, spécifiez un ID de compte pour le compte A et un ID de clé :

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowUseOfTheKey",
          "Effect": "Allow",
          "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
          ],
          "Resource": [
            "arn:aws:kms:us-east-1:AccountA:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
          ]
        }
      ]
    }
  2. Créez un rôle IAM pour Amazon SageMaker. Ce rôle est régi par la politique AmazonSageMakerFullAccess.

  3. Associez les deux politiques en ligne que vous avez créées à l'étape 1 au rôle créé à l'étape 2. Le rôle repose sur trois politiques : Amazon SageMaker FullAccess et les deux politiques en ligne.

Compte A (compte sandbox)

Pour stocker le résultat de la tâche d'entraînement dans le compartiment, créez une politique de compartiment S3. Cette politique de compartiment permet au rôle que vous avez créé dans la section précédente d'accéder à l'artefact du modèle :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::AccountB:root"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::awsdoc-example-bucket/sagemaker/linear-learner/output/model.tar.gz",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalArn": "arn:aws:iam::AccountB:role/AmazonSageMaker"
        }
      }
    }
  ]
}

**Remarque :**dans cet exemple, remplacez AccountB par l'ID de compte AWS correspondant au compte de déploiement. Remplacez AmazonSageMaker par le nom du rôle que vous avez créé dans le compte de déploiement. Remplacez awsdoc-example-bucket par le compartiment S3 dans lequel le résultat de la tâche d'entraînement est stocké.

Créer le modèle de déploiement

  1. Ouvrez la console Amazon SageMaker.
  2. Dans le volet de navigation, sous Inférence, choisissez Modèles.
  3. Choisissez Créer un modèle, puis saisissez le nom de votre modèle.
  4. Dans le champ Rôle IAM, choisissez Saisir un ARN de rôle IAM personnalisé. Complétez ensuite votre ARN personnalisé avec les éléments suivants :
    Dans le champ YourAccountID, saisissez l'ID du compte B.
    Dans le champ YourRole, saisissez le nom du rôle IAM que vous avez créé dans le compte B.
  5. Dans le champ Emplacement de l'image du code d'inférence, spécifiez le chemin du registre dans lequel l'image du code d'inférence est stockée. L'image d'inférence est stockée dans Amazon ECR (Elastic Container Registry) ou dans un registre Docker privé.
  6. Dans le champ Emplacement des artefacts du modèle, spécifiez l'URL où les artefacts du modèle sont stockés dans Amazon S3.
  7. Au bas de la page, sélectionnez Créer un modèle. Pour plus d'informations sur la création d'un modèle, consultez la page Création d'un modèle de pipeline.

Créer la configuration du point de terminaison

  1. Ouvrez la console Amazon SageMaker.
  2. Dans le volet de navigation, sous Inférence, choisissez Configurations de points de terminaison.
  3. Choisissez Créer une configuration de point de terminaison. Ensuite, sous Variantes de production, ajoutez le modèle que vous avez créé dans la section précédente.
  4. Choisissez Créer une configuration de point de terminaison.

Créer le point de terminaison

  1. Ouvrez la console Amazon SageMaker.
  2. Dans le volet de navigation, sous Inférence, sélectionnez Points de terminaison.
  3. Choisissez Créer un point de terminaison, puis sélectionnez la configuration de point de terminaison que vous avez créée dans la section précédente.
  4. Choisissez Créer un point de terminaison.

Vous êtes maintenant prêt à déployer le modèle depuis le compte A vers le compte B.

**Remarque :**si vous ne souhaitez pas ré-entraîner votre modèle Amazon SageMaker au chiffrement, vous pouvez chiffrer l'objet lors d'une étape de post-traitement. Pour chiffrer un objet existant, utilisez une clé gérée par le client afin de répliquer l'objet une fois chiffré avec SSE-KMS.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois