Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Tutoriels - Modèles personnalisés de préentraînement ou de réglage précis d'Amazon SageMaker HyperPod Checkpointless
La séquence d'étapes suivante est requise pour exécuter une formation sans point de contrôle avec votre modèle personnalisé activé. HyperPod
Conditions préalables
Avant de commencer à configurer votre environnement, assurez-vous d’avoir :
Un emplacement de stockage partagé. Il peut s'agir d'un système de FSx fichiers Amazon ou d'un système NFS accessible depuis les nœuds du cluster.
-
Des données dans l’un des formats suivants :
JSON
JSONGZ (JSON compressé)
ARROW
Téléchargez les poids du modèle Hugging Face et convertissez-le au format compatible avec Nemo.
Configurez votre environnement
Configuration de l'environnement Kubernetes
Pour configurer votre environnement Kubernetes, procédez comme suit :
-
Configurez l’environnement virtuel. Assurez-vous que vous utilisez un Python supérieur ou égal à 3.10 et inférieur à 3.14.
python3 -m venv ${PWD}/venv source venv/bin/activate -
Connectez-vous à votre cluster Kubernetes.
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
Installation des dépendances
# install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training
Instructions de modification de l'entraînement Checkpointless
Pour adopter progressivement la formation sans point de contrôle pour les modèles personnalisés, suivez le guide d'intégration (ici, nous utilisons le préentraînement Llama 3 70b comme exemple), qui implique :
Création rapide d'un communicateur
Chargeur de données mappé en mémoire (MMAP)
Restauration en cours de processus et sans point de contrôle
Composante 1 : Création rapide d'un communicateur
Cela permet d'optimiser le temps nécessaire pour établir des liens entre les travailleurs. Aucune modification de code n'est nécessaire et il suffit de définir des variables d'environnement
# Enable Rootless features export HPCT_USE_ROOTLESS=1 && \ sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \ hyperpodrun --nproc_per_node=8 \ ... --inprocess-restart \ ...
La modification complète se trouve dans la configuration de la tâche de lancement du prétrain llama3 70
Composant 2 : chargeur de données mappé en mémoire (MMAP)
Des caches MMAP permettent de stocker des échantillons de données préextraits et de démarrer immédiatement l'entraînement sans avoir à attendre le prétraitement des données. Il nécessite un minimum de modifications de code pour être adopté en encapsulant le chargeur de données existant.
data_module = MMAPDataModule( data_module=base_data_module, mmap_config=CacheResumeMMAPConfig(cache_dir=…) )
Composantes 3 et 4 : Restauration en cours de processus et sans point de contrôle
Cela permet de récupérer les données en cas de panne sans redémarrer les processus de formation ou sans chargement à partir des points de contrôle. Des modifications de code supplémentaires sont nécessaires (mise à jour de la configuration de la stratégie et de la formation, encapsulation du fichier principal existant)
@HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, ...) def run_main( cfg, caller: Optional[HPCallWrapper] = None): ... CheckpointlessMegatronStrategy( **self.cfg.strategy, ddp=self.ddp, )
La modification complète se trouve dans le script d'entrée de pré-entraînement llama3 70
Formation de lancement
Vous pouvez désormais lancer l'entraînement sans point de contrôle à l'aide de kubectl.
kubectl apply -f your_job_config.yaml