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 :
Prise en charge d'Amazon EKS activée sur Amazon SageMaker HyperPod
Un emplacement de stockage partagé. Il peut s’agir d’un système de fichiers Amazon FSx 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 passez-les 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 code 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 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
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