Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Tutoriales: Amazon SageMaker HyperPod Checkpointless: preentrenamiento o ajuste de modelos personalizados
La siguiente secuencia de pasos es necesaria para realizar un entrenamiento sin puntos de control con su modelo personalizado activado. HyperPod
Requisitos previos
Antes de configurar el entorno, asegúrese de disponer de:
Se habilitó el soporte de Amazon EKS en Amazon SageMaker HyperPod
Una ubicación de almacenamiento compartida. Puede ser un sistema de FSx archivos Amazon o un sistema NFS al que se pueda acceder desde los nodos del clúster.
-
Datos en uno de los siguientes formatos:
JSON
JSONGZ (JSON comprimido)
ARROW
Descarga el modelo Hugging Face con pesas y encubre el formato compatible con Nemo
. Configure su entorno
Configuración del entorno de Kubernetes
Para configurar su entorno de Kubernetes, haga lo siguiente:
-
Configure el entorno virtual. Asegúrese de usar Python superior o igual a 3.10 e inferior a 3.14.
python3 -m venv ${PWD}/venv source venv/bin/activate -
Conéctese con su clúster de Kubernetes.
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
Cómo instalar las dependencias
# install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training
Instrucciones de modificación del entrenamiento sin control
Para adoptar gradualmente el entrenamiento sin puntos de control para modelos personalizados, sigue la guía de integración (aquí utilizamos el preentrenamiento de Llama 3 70b como ejemplo), que incluye:
Creación rápida de comunicadores
Cargador de datos mapeado en memoria (MMAP)
Recuperación en proceso y sin puntos de control
Componente 1: Creación rápida de comunicadores
Esto es para optimizar el tiempo necesario para establecer conexiones entre los trabajadores. No es necesario realizar cambios en el código y solo es necesario configurar las variables de entorno
# 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 \ ...
El cambio completo se encuentra en la configuración del trabajo de lanzamiento previo al entrenamiento de llama3 70
Componente 2: Cargador de datos mapeado en memoria (MMAP)
El MMAP se almacena en caché para almacenar muestras de datos precargadas y permitir el inicio inmediato del entrenamiento sin necesidad de esperar a que se preprocesen los datos. Requiere cambios mínimos en el código para adaptarlo al cargador de datos existente.
data_module = MMAPDataModule( data_module=base_data_module, mmap_config=CacheResumeMMAPConfig(cache_dir=…) )
Componentes 3 y 4: Recuperación en proceso y sin puntos de control
Esto permite la recuperación de fallos sin tener que reiniciar los procesos de formación ni cargar desde los puntos de control. Se necesitan cambios adicionales en el código (actualización de la configuración de estrategia y entrenamiento, actualización del código principal existente)
@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, )
El cambio completo se encuentra en el script de entrada previo al entrenamiento de llama3 70
Inicie el entrenamiento
Ahora puedes iniciar el entrenamiento sin puntos de control con kubectl.
kubectl apply -f your_job_config.yaml