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

Dernière mise à jour : 14/07/2020

J'entraîne un modèle Amazon SageMaker sur un compte AWS. Comment déployer ce modèle sur un point de terminaison d'un autre compte AWS ?

Résolution

Compte A (compte sandbox)

1. Créez une clé client principale (CMK) dans AWS Key Management Service (AWS KMS). Sur la pageDéfinir des autorisations d'utilisation de clé, dans Autres comptes AWS, choisissez Ajouter un autre compte AWS. Saisissez ensuite le numéro de compte AWS pour le compte B (où vous souhaitez déployer le modèle).

Vous utiliserez cette clé CMK pour la tâche de formation du modèle Amazon SageMaker. Si vous ne spécifiez pas de CMK pour le poste de formation, Amazon SageMaker utilise par défaut une clé de chiffrement côté serveur d'Amazon Simple Storage Service (Amazon S3). Une clé de chiffrement par défaut sur un serveur Amazon S3 ne peut pas être partagée avec ni utilisée par un autre compte AWS.

2. Créez la tâche de formation, si vous ne l'avez pas déjà fait. Dans la classe Estimator, ajoutez la clé CMK que vous avez créée lors de l'étape précédente. Exemple :

linear = sagemaker.estimator.Estimator(
    …
    output_kms_key='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    … 
    )

Compte B (compte de déploiement)

1. Créez deux stratégies AWS Identity and Access Management (IAM) similaires à ce qui suit. Il s'agit de stratégies en ligne, ce qui signifie qu'elles sont intégrées à une identité IAM (utilisateur, groupe ou rôle).

Stratégie en ligne 1 : autorise un rôle à accéder à la ressource Amazon S3 du compte A qui contient l'artefact de modèle. Remplacez awsdoc-example-bucket par le nom du compartiment S3 dans lequel la sortie de la tâche de formation est stockée.

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

Stratégie en ligne 2 : autorise un rôle, que vous créerez ultérieurement, à utiliser la clé CMK dans le compte A. Pour Ressource, spécifiez l'ID du compte A et de la clé CMK.

{
    "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. La stratégie AmazonSageMakerFullAccess est attachée à ce rôle.

3. Attachez les deux stratégies en ligne que vous avez créées à l'étape 1 au rôle que vous avez créé à l'étape 2. Le rôle doit avoir trois stratégies : AmazonSageMakerFullAccess, et les deux stratégies en ligne.

Compte A (compte sandbox)

Créez une stratégie de compartiment S3 pour le compartiment dans lequel la sortie de la tâche de formation est stockée. Cette stratégie de compartiment permet au rôle que vous avez créé dans la section précédente d'accéder à l'artefact de modèle. Remplacez ces valeurs dans l'exemple suivant :

CompteB : ID de compte AWS pour le compte de déploiement AmazonSageMaker : nom du rôle que vous avez créé dans le compte de déploiement awsdoc-example-bucket : le compartiment S3 où la sortie de la tâche de formation est stockée

{
    "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"
                }
            }
        }
    ]
}

Compte B (compte de déploiement)

Créez 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 ce qui suit : Rôle IAM : Choisissez ARN du rôle IAM personnalisé. Pour YourAccountID, saisissez l'ID du compte B. Pour YourRole, saisissez le nom du rôle IAM que vous avez créé dans le compte B. Emplacement de l'image de code d'inférence : indiquez le chemin d'accès du registre où l'inférence est stockée dans Amazon Elastic Container Registry (Amazon ECR). Emplacement des artefacts de modèle : indiquez l'URL où les artefacts de modèle sont stockés dans Amazon S3.

4. En bas de la page, choisissez Créer un modèle. Pour plus d'informations sur la création d'un modèle, consultez Création d'un modèle de pipeline.

Créez la configuration du point de terminaison :

1. Ouvrez la console Amazon SageMaker.

2. Dans le volet de navigation, sous Inférence, choisissez Configurations de point 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éez le point de terminaison :

1. Ouvrez la console Amazon SageMaker.

2. Dans le volet de navigation, sous Inférence, choisissez 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 du compte A vers le compte B.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?