View a markdown version of this page

Tutoriels - Préformation ou réglage fin des modèles personnalisés avec 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 - Préformation ou réglage fin des modèles personnalisés avec Amazon SageMaker HyperPod Checkpointless

La séquence d'étapes suivante est requise pour exécuter un entraînement 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 code 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 sans point de contrôle

Pour adopter progressivement la formation sans point de contrôle pour les modèles personnalisés, suivez le guide d'intégration (nous utilisons ici la formation préalable à Llama 3 70b à titre d'exemple), qui implique :

  • Création rapide de communicateurs

  • Memory-mapped chargeur de données (MMAP)

  • In-process & Restauration 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 nécessite uniquement la définition de 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 : Memory-mapped chargeur de données (MMAP)

Des caches MMAP pour stocker des échantillons de données préextraits et permettre un démarrage immédiat de l'entraînement sans avoir à attendre le prétraitement des données. Il nécessite un minimum de modifications de code à adopter 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 : In-process et restauration sans point de contrôle

Cela permet la restauration en cas de panne sans redémarrer les processus d'entraînement ni charger à partir de 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 code 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