Tutoriales: Amazon SageMaker HyperPod Checkpointless: preentrenamiento o ajuste de modelos personalizados - Amazon SageMaker AI

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:

Configuración del entorno de Kubernetes

Para configurar su entorno de Kubernetes, haga lo siguiente:

  1. 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
  2. Configura kubectl y eksctl

  3. Conéctese con su clúster de Kubernetes.

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  4. 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 y el cambio de configuración de entrenamiento correspondiente se encuentra en la configuración de entrenamiento de llama3 70b.

Inicie el entrenamiento

Ahora puedes iniciar el entrenamiento sin puntos de control con kubectl.

kubectl apply -f your_job_config.yaml