Amazon MLS-C01: Entraînement, entraînement distribué et optimisation des hyperparamètres — Guide d'étude
Fait partie du AWS Machine Learning Specialty MLS-C01 — Guide d’étude. Entraînez-vous avec des réponses vérifiées dans le centre d’examens Amazon, ou passez des tests chronométrés sur ExamRoll.io.
Tâches d’entraînement, conteneurs et transitions vers l’entraînement dans le cloud avec un minimum de code
Lors de la migration des charges de travail d’entraînement vers SageMaker, l’objectif principal de conception est d’éviter de réécrire le code du modèle tout en s’assurant que l’environnement d’exécution du conteneur expose les variables d’environnement et les chemins de canaux SageMaker attendus. Utilisez le Script Mode de SageMaker avec l’Estimator spécifique au framework (PyTorch, TensorFlow, XGBoost) pour que le même script d’entraînement s’exécute localement et dans le cloud avec un minimum de modifications : lire les données depuis SM_CHANNEL_TRAIN, écrire le modèle dans SM_MODEL_DIR, et respecter SM_NUM_GPUS/SM_HOSTS/SM_CURRENT_HOST. Pour les environnements personnalisés, construisez une image Docker qui étend les AWS Deep Learning Containers officiels (ou le SageMaker training toolkit) et poussez-la sur Amazon ECR ; assurez-vous que le point d’entrée (entry point) du conteneur respecte le contrat d’entraînement de SageMaker. Sélectionnez les types d’instances en fonction du profil de calcul : tâches limitées par le CPU (CPU-bound) sur les familles ml.c5/m5, entraînement sur GPU sur les instances ml.p3, ml.p4d, g4dn ou g5 ; choisissez la taille de l’instance en fonction de la mémoire et du ratio GPU/CPU. Les pièges courants incluent les chemins de fichiers locaux codés en dur, l’hypothèse d’un hôte unique (ce qui cause des erreurs dans les tâches distribuées), et le fait de ne pas déclarer le mode d’entrée pour l’entraînement (Pipe vs File), ce qui affecte les performances d’E/S. Pour la reproductibilité et la prévisibilité des coûts, n’activez l’entraînement Spot managé qu’après avoir ajouté un système de checkpointing robuste et configuré max_wait > max_run pour autoriser les interruptions Spot.
Patrons d’entraînement distribué, modes d’entrée des données et choix de stockage
Le deep learning distribué exige d’équilibrer le parallélisme de modèle, le parallélisme de données et l’architecture d’E/S. Pour l’entraînement multi-GPU sur un seul hôte et sur plusieurs hôtes, utilisez les primitives natives des frameworks — torch.distributed ou la MultiWorkerMirroredStrategy de TensorFlow — ou tirez parti des bibliothèques smdistributed de SageMaker : smdistributed.dataparallel pour la mise à l’échelle par parallélisme de données et smdistributed.modelparallel ou DeepSpeed pour les très grands modèles de type transformer. Utilisez S3 comme stockage canonique pour les grands jeux de données, mais évitez les multiples petites requêtes GET sur S3 : soit en consolidant les fichiers dans moins d’archives, en utilisant des fichiers partitionnés (sharded) RecordIO/TFRecord, soit en attachant un système de fichiers POSIX. Choisissez le mode Pipe pour streamer les données d’entraînement directement depuis S3 pour les grands jeux de données afin de réduire l’utilisation du disque local et le temps de démarrage ; utilisez le mode File lorsque l’entraînement nécessite un accès aléatoire ou lorsque vous avez besoin du jeu de données complet sur un volume EBS. Pour un débit élevé et une sémantique POSIX sur plusieurs instances, montez Amazon FSx for Lustre ou Amazon EFS ; FSx est plus adapté pour les lectures parallèles à haute performance. Les erreurs fréquentes incluent le fait de ne pas partitionner (sharder) les données entre les hôtes (ce qui provoque des doublons), de surestimer le débit S3 par instance, et d’ignorer les règles de mise à l’échelle de la taille de lot (batch-size) et du taux d’apprentissage (learning-rate) lors de l’augmentation du parallélisme.
Entraînement Spot, checkpointing et stratégies d’optimisation des coûts
L’entraînement Spot managé peut réduire considérablement les coûts si la conception de votre entraînement tolère les interruptions. Configurez l’entraînement Spot managé via l’Estimator de SageMaker (use_spot_instances=True), ainsi que le checkpointing : fournissez un checkpoint_s3_uri persistant et un checkpoint_dir local, et sauvegardez les checkpoints assez fréquemment pour limiter le temps de travail à refaire. Définissez max_wait bien au-dessus de max_run pour que la tâche puisse relancer les instances interrompues dans la fenêtre Spot. Pour les frameworks, implémentez des écritures de checkpoints atomiques et une logique de reprise robuste qui inspecte le dernier checkpoint sur S3, restaure l’état de l’optimiseur et du planificateur (scheduler), puis poursuit l’entraînement. La fréquence des checkpoints doit équilibrer la surcharge liée à l’écriture (write overhead) et le calcul potentiellement gaspillé ; pour les époques longues ou les très grands modèles, effectuez des checkpoints en milieu d’époque en utilisant des instantanés d’accumulation de gradients ou des sauvegardes basées sur les étapes (steps). Les pièges liés aux coûts incluent l’oubli de persister les checkpoints sur S3 (ce qui provoque un redémarrage complet en cas d’interruption), le fait de dépendre du stockage d’instance éphémère, et la configuration de max_wait égal à max_run, ce qui empêche les nouvelles tentatives. Combinez l’entraînement Spot avec la précision mixte (AMP) pour des économies de calcul supplémentaires et avec des charges utiles (payloads) de checkpoint plus petites (sauvegarder uniquement les poids + l’optimiseur) pour réduire les coûts d’écriture sur S3 et la latence de reprise.
Optimisation des hyperparamètres, stratégies d’ajustement et critères de décision pratiques
Une HPO efficace combine une stratégie de recherche, une allocation des ressources et un arrêt anticipé. L’HyperparameterTuner de SageMaker prend en charge la recherche aléatoire (Random) et bayésienne (Bayesian), avec des plages configurables de type ContinuousParameter, IntegerParameter et CategoricalParameter ; pour les grands espaces de recherche, commencez par une recherche aléatoire pour une exploration large, puis exécutez une optimisation bayésienne pour exploiter les régions prometteuses. Utilisez des méthodes d’arrêt anticipé telles que Hyperband ou l’arrêt anticipé intégré de SageMaker pour préserver le budget, et utilisez l’ajustement à démarrage à chaud (warm-start) pour réutiliser les résultats entre des expériences connexes. Choisissez soigneusement les métriques d’objectif (AUC de validation pour les tâches déséquilibrées, F1 pour la détection de fraude avec des classes déséquilibrées, métriques personnalisées pondérées par les coûts pour les scénarios de rupture de stock). Les pièges courants incluent des plages trop larges qui provoquent de nombreux échecs de tâches, l’utilisation d’un encodage catégoriel pour des hyperparamètres essentiellement continus, et le fait de ne pas adapter la HPO en fonction des ressources : des tâches de sondage courtes sur des instances plus petites pour trouver des régions approximatives, suivies d’exécutions plus longues sur des instances GPU de taille normale. Pour l’apprentissage distribué, ajustez à la fois les hyperparamètres algorithmiques (taux d’apprentissage, taille de lot) et les paramètres au niveau du système (étapes d’accumulation de gradient, nombre de fragments de données). Instrumentez avec SageMaker Debugger et utilisez les métriques CloudWatch pour détecter les mesures bruitées ; lorsqu’une variance élevée existe, augmentez les répétitions par configuration ou utilisez une sélection basée sur la médiane.
Problème pratique : Scénario d’utilisation
Scénario : FinRetailer exécute des milliers de prévisions de la demande à 30 jours par SKU dans SageMaker ; ils stockent des années de fichiers CSV quotidiens dans S3 et exigent une grande précision sur les articles à demande de queue de distribution tout en maintenant une latence d’inférence acceptable dans les tâches de scoring par lots.
Défi : Prévoir des milliers de séries temporelles avec de longs historiques et une importance déséquilibrée (les ruptures de stock coûtent plus cher que les surstocks), en minimisant les coûts de calcul tout en préservant la précision sur les événements rares de forte demande.
Approche recommandée :
- Utilisez l’algorithme intégré DeepAR de SageMaker ou un modèle temporel personnalisé PyTorch (basé sur un Transformer) empaqueté dans un Estimator en Script Mode ; stockez les données d’entraînement sous forme de fichiers fragmentés (sharded) RecordIO/TFRecord et utilisez le File mode avec FSx for Lustre pour un entraînement multi-instance à haut débit.
- Commencez par un entraînement distribué sur des instances plus petites (smddp ou Horovod) pour ajuster l’architecture du modèle et les hyperparamètres, en utilisant HyperparameterTuner avec une recherche bayésienne et un arrêt anticipé ; définissez l’objectif comme une perte quantile pondérée (weighted quantile loss) qui pénalise plus lourdement la sous-prévision.
- Activez l’entraînement Spot géré avec un
checkpoint_s3_uriet des points de contrôle fréquents basés sur les étapes ; définissezmax_wait>max_runpour tolérer les interruptions et reprendre à partir du dernier point de contrôle S3. - Pour l’inférence en production, effectuez un scoring par lots en utilisant des points de terminaison multi-modèles ou des tâches de transformation par lots asynchrones sur des instances optimisées pour le calcul ; appliquez des règles métier de post-traitement et un seuil calibré qui tient compte des coûts de rupture de stock.
Justification : L’utilisation d’architectures DeepAR/transformer gère efficacement de nombreuses séries temporelles ; les formats binaires fragmentés et FSx réduisent les goulots d’étranglement E/S pour l’entraînement distribué, la HPO bayésienne avec un objectif sur mesure concentre les recherches sur les métriques de coût opérationnel, et l’entraînement Spot avec points de contrôle réduit les coûts sans sacrifier la progression.
← Séries temporelles et prévision · Tous les domaines · Déploiement →
Entraînez-vous sur ces questions → · Tests chronométrés sur ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Réussissez votre examen →