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 ?

Solution

Compte A (compte sandbox)

1.    J'ai créé 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. À défaut, Amazon SageMaker utilisera une clé de chiffrement sur un serveur 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 les informations suivantes :
Rôle IAM
 : choisissez ARN de rôle IAM personnalisé. Pour YourAccountID, entrez 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 du code d'inférence : indiquez le chemin d'accès au registre où l'image du code d'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 ?