Aller au contenu principal

Module 1 — Panorama de SageMaker et de ses composants

Le cours précédent a montré comment industrialiser un modèle en dehors du cloud : suivi d'expériences, registre, image de conteneur, service en ligne, dérive. Chacune de ces briques a un équivalent dans AWS SageMaker, souvent avec un nom différent et un modèle de facturation particulier. Ce module dresse la carte du territoire avant que les modules suivants n'y construisent le fil rouge.

Ce qu'est SageMaker, en une phrase

SageMaker est un ensemble de services gérés qui couvrent le cycle de vie d'un modèle d'apprentissage : préparer les données, entraîner, régler, déployer, surveiller. Chaque service peut s'utiliser seul, appelé par le SDK Python sagemaker, et facturé indépendamment.

L'important dans « géré » : vous ne provisionnez pas de machine virtuelle EC2 vous-même, vous ne configurez pas d'auto-scaling, vous ne construisez pas l'image de conteneur d'entraînement pour les algorithmes intégrés. Vous décrivez ce que vous voulez faire (« entraîner XGBoost sur ce fichier CSV, avec ce type d'instance »), SageMaker lance la machine, télécharge les données, exécute le conteneur, écrit les artefacts sur S3, arrête la machine et vous facture les secondes utilisées.

La carte des composants

Sept familles de services suffisent à couvrir 95 % des projets. Le reste — SageMaker Ground Truth pour l'étiquetage humain, Canvas pour l'interface sans code, Clarify pour les biais — est utile mais rare.

FamilleServiceCe qu'il fait
EnvironnementSageMaker StudioIDE web unifié, carnets Jupyter, terminaux, extensions
DonnéesFeature StoreMagasin de variables en ligne et hors ligne, versionné
EntraînementTraining JobsMachine éphémère qui exécute un conteneur d'entraînement
RéglageHyperparameter TuningOrchestre plusieurs Training Jobs avec une stratégie de recherche
DéploiementEndpointsPoint de terminaison HTTPS temps réel, ou variante sans serveur
LotsBatch TransformScorage d'un fichier S3 sans point de terminaison persistant
OrchestrationPipelinesChaîne d'étapes avec conditions, versionnage, registre de modèles
SurveillanceModel MonitorDétecte la dérive des données et de la qualité

Chacune de ces familles est un module de ce cours. Le fil rouge — la résiliation télécom du cours 20 — les traverse dans cet ordre.

Ce qui est géré, ce qui ne l'est pas

Ce partage des responsabilités décide de ce qu'il faut apprendre et de ce qui reste à votre charge.

SageMaker gère l'infrastructure de calcul (instances EC2 sous-jacentes, réseau, sécurité de base), les images de conteneurs pour les algorithmes intégrés (XGBoost, Linear Learner, KMeans, BlazingText…), la mise à l'échelle automatique des points de terminaison, l'orchestration des tâches parallèles et l'écriture des artefacts sur S3.

Vous gérez l'organisation des données sur S3, le choix du type d'instance (et donc le coût), le rôle IAM et ses permissions, votre code d'entraînement si vous quittez les algorithmes intégrés, la version du modèle qui atterrit en production, et surtout l'arrêt des ressources qui coûtent au temps passé — carnet Studio, point de terminaison temps réel.

La facture surprise vient toujours de deux endroits

Un carnet Studio oublié allumé un vendredi soir (ml.m5.xlarge à environ 0,25 $ de l'heure, 60 $ le week-end) et un point de terminaison de test laissé après une démonstration (ml.c5.large à 0,12 $ de l'heure, 87 $ le mois). Ces deux causes reviennent dans quasiment tous les rapports d'audit AWS et sont explicitement thématisées dans la banque d'examen.

Le rôle IAM d'exécution, en une image

Chaque appel à SageMaker mentionne un ExecutionRoleArn. C'est le rôle IAM qu'assumera le conteneur d'entraînement ou d'inférence, pas vous. Il détermine ce que le conteneur peut lire et écrire pendant qu'il tourne.

Le minimum viable, pour le fil rouge, tient en quatre autorisations :

{
"Version": "2012-10-17",
"Statement": [
{ "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": ["arn:aws:s3:::resiliation-donnees", "arn:aws:s3:::resiliation-donnees/*"] },
{ "Effect": "Allow", "Action": ["s3:PutObject"],
"Resource": "arn:aws:s3:::resiliation-modeles/*" },
{ "Effect": "Allow", "Action": ["ecr:GetAuthorizationToken", "ecr:BatchGetImage"],
"Resource": "*" },
{ "Effect": "Allow", "Action": ["logs:CreateLogStream", "logs:PutLogEvents"],
"Resource": "arn:aws:logs:*:*:log-group:/aws/sagemaker/*" }
]
}

Lire les données, écrire les artefacts, tirer l'image du registre ECR, écrire les journaux dans CloudWatch. La politique gérée AmazonSageMakerFullAccess est pratique en développement mais inadmissible en production : elle donne accès à tout SageMaker et à un large sous-ensemble de S3. La règle du moindre privilège s'applique dès la première tâche sérieuse.

Le modèle de facturation, sans détour

SageMaker facture à la seconde le type d'instance qui tourne, plus le stockage S3 des données et des modèles, plus la sortie réseau si vous téléchargez massivement.

RessourceFacturation
Carnet Studio ouvertType d'instance à la seconde, tant que l'application est démarrée
Tâche d'entraînementType d'instance × durée réelle, s'arrête toute seule
Point de terminaison temps réelType d'instance à la seconde, 24h/24 tant qu'il existe
Point de terminaison sans serveurÀ la milliseconde, uniquement quand une requête arrive
Transformation par lotsType d'instance × durée de la tâche, s'arrête toute seule
PipelineSomme des étapes déclenchées ; le pipeline en veille ne coûte rien

La différence de nature entre « à la seconde tant que ça tourne » et « à la milliseconde uniquement quand ça sert » est le pivot de tout le cours. Les instances Spot, qui peuvent être récupérées par AWS à tout moment, offrent jusqu'à 70 % de remise sur l'entraînement et seront reprises au module 4.

Ce que le SDK Python cache

Toutes ces opérations passent par le SDK sagemaker, une couche au-dessus de boto3. Un entraînement complet tient en quelques lignes :

import sagemaker
from sagemaker.xgboost import XGBoost

session = sagemaker.Session()
role = "arn:aws:iam::123456789012:role/SageMakerExecution"

estimateur = XGBoost(
entry_point="entrainement.py", # votre script, sur mode script
framework_version="1.7-1",
role=role,
instance_count=1,
instance_type="ml.m5.xlarge", # 0,23 $/h dans us-east-1
output_path="s3://resiliation-modeles/",
)

estimateur.fit({"train": "s3://resiliation-donnees/train.csv"})

Cinq lignes déclenchent : la création d'une instance EC2 gérée, le téléchargement des données depuis S3, le lancement du conteneur, l'écriture du modèle sur S3, l'arrêt de l'instance. Vous n'avez pas vu la machine, mais vous la payez à la seconde jusqu'à ce qu'elle s'éteigne.

En résumé

  • SageMaker est un ensemble de services gérés couvrant préparation, entraînement, réglage, déploiement, lots, pipeline et surveillance ; chaque service est appelable seul et facturé séparément.
  • Il gère l'infrastructure, les images intégrées et la mise à l'échelle ; vous gardez la responsabilité des données sur S3, du choix d'instance, du rôle IAM et de l'arrêt des ressources qui coûtent en continu.
  • Le rôle d'exécution minimum lit S3, écrit S3, tire l'image ECR et écrit les journaux CloudWatch ; AmazonSageMakerFullAccess est un raccourci de développement, jamais un choix de production.
  • La facturation est à la seconde pour les tâches et les points de terminaison temps réel, à la milliseconde pour le sans serveur ; deux causes de facture surprise dominent : le carnet oublié allumé et le point de terminaison de test.

Module suivant : SageMaker Studio, les carnets, les images de noyau et l'arrêt automatique — le décor dans lequel tout ce cours sera écrit.