Tutoriels - Modèles personnalisés de préentraînement ou de réglage précis d'Amazon SageMaker HyperPod Checkpointless - Amazon SageMaker AI

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 :

Configuration de l'environnement Kubernetes

Pour configurer votre environnement Kubernetes, procédez comme suit :

  1. 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
  2. Configurer kubectl et eksctl

  3. Connectez-vous à votre cluster Kubernetes.

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  4. 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 et la modification de configuration d'entraînement correspondante se trouve dans la configuration d'entraînement llama3 70b.

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