Configuración de los puntos de comprobación por niveles administrados
En esta sección se explica el proceso de configuración de los puntos de comprobación por niveles administrados para Amazon SageMaker HyperPod. Aprenderá a habilitar la capacidad en su clúster e implementar los puntos de comprobación en su código de entrenamiento.
Temas
Paso 1: activación de los puntos de comprobación por niveles administrados para su clúster
Paso 2: instalación de la biblioteca de Python en la imagen de entrenamiento
Paso 4: definición de un escritor de sistema de archivos de SageMaker
Paso 5: grabación de los puntos de comprobación en el bucle de entrenamiento
Paso 6: carga de los puntos de comprobación para la recuperación
Requisitos previos
Antes de configurar los puntos de comprobación por niveles administrados, asegúrese de que cuenta con lo siguiente:
-
Un clúster de Amazon EKS HyperPod con suficiente memoria de CPU disponible para la asignación de puntos de comprobación
-
Cargas de trabajo de entrenamiento de PyTorch y trabajos de DCP (ambos son compatibles)
-
Permisos de IAM adecuados para la administración de clústeres, que incluyen:
-
Permisos de escritura de Amazon CloudWatch y Amazon S3 para que el pod de entrenamiento lea o escriba puntos de comprobación y envíe métricas
-
Estos permisos se pueden configurar mediante la configuración de EKS OIDC
-
Paso 1: activación de los puntos de comprobación por niveles administrados para su clúster
importante
Debe optar por el uso de los puntos de comprobación por niveles administrados.
Activa los puntos de comprobación por niveles administrados a través de la API de HyperPod al crear o actualizar su clúster. El servicio instala automáticamente el sistema de administración de memoria cuando especifica el parámetro TieredStorageConfig. Para un clúster nuevo, crea:
aws sagemaker update-cluster \ --cluster-name my-training-cluster \ --tiered-storage-config { "Mode": "Enable" "InstanceMemoryAllocationPercentage":percentage}
El parámetro InstanceMemoryAllocationPercentage especifica el (ent) de la memoria del clúster que se va a asignar a los puntos de comprobación. El rango va de 20 a 100.percentage
Paso 2: instalación de la biblioteca de Python en la imagen de entrenamiento
Instale la biblioteca de puntos de comprobación de Amazon SageMaker
# Add this line to your training image Dockerfile RUN pip install amzn-sagemaker-checkpointing
Paso 3: creación de una configuración de protección
Cree un objeto CheckpointConfig para especificar el comportamiento del punto de comprobación. Esto incluye:
-
Ubicaciones de los puntos de comprobación
-
Frecuencia de los puntos de comprobación
-
Nombre de los espacios de nombres
En el siguiente ejemplo se muestra una configuración de control de comprobación:
from amzn_sagemaker_checkpointing.config.sagemaker_checkpoint_config import SageMakerCheckpointConfig from amzn_sagemaker_checkpointing.checkpointing.filesystem import SageMakerTieredStorageWriter, SageMakerTieredStorageReader checkpoint_config = sm_ckpt.CheckpointConfig( world_size = 100, in_memory_namespace:my-ml-workload, # Logical grouping for checkpoints s3_base_path: "s3://bucket-name/checkpointing-path-prefix/", s3_every_n_steps: 100, # Every 100 steps, save to S3 )
Paso 4: definición de un escritor de sistema de archivos de SageMaker
Defina su escritor de sistema de archivos de puntos de comprobación. Opcionalmente, puede especificar un número de paso durante la inicialización.
Escritor básico (parámetro step especificado al guardar la llamada):
smWriter = sagemaker_checkpointing.SageMakerTieredStorageWriter(checkpoint_config)
Escritor con parámetro step (parámetros step especificado en la inicialización):
smWriter = sagemaker_checkpointing.SageMakerTieredStorageWriter( checkpoint_config, step=step_number )
nota
Al especificar el parámetro step durante la inicialización del escritor, el parámetro checkpoint_id de la llamada para guardar pasa a ser opcional. El parámetro step tiene prioridad sobre el formato del directorio de puntos de comprobación.
Paso 5: grabación de los puntos de comprobación en el bucle de entrenamiento
En su bucle de entrenamiento, guarde los puntos de comprobación utilizando PyTorch DCP con FileSystemWriter.
Uso de PyTorch DCP con FileSystemWriter
Llame al método dist_cp.save() con la entrada FileSystemWriter:
Opción 1: usar checkpoint_id con el formato step (cuando step no está especificado en el escritor)
# Construct checkpoint directory with step number checkpoint_dir = f"step_number" dist_cp.save_state_dict( state_dict=state_dict, # state_dict is a dictionary containing model parameters, optimizer state, etc. checkpoint_id=checkpoint_dir, # Should contain step number storage_writer=smWriter )
Opción 2: usar el escritor con el parámetro step (checkpoint_id pasa a ser opcional)
dist_cp.save_state_dict( state_dict=state_dict, storage_writer=smWriter # Step already specified in writer initialization )
nota
El valor checkpoint_id (o la cadena checkpoint_dir) debe tener el formato step_. Por ejemplo, numberstep_5. Cuando se utiliza el parámetro step en la inicialización del escritor, el checkpoint_id pasa a ser opcional.
Paso 6: carga de los puntos de comprobación para la recuperación
Cuando necesite cargar un punto de comprobación, utilice PyTorch DCP con FileSystemReader.
Uso de PyTorch DCP con FileSystemReader
Llame al método de carga DCP con la entrada FileSystemReader:
# Define FileSystemReader smReader = sagemaker_checkpointing.SageMakerTieredStorageReader( config=checkpoint_config ) # Load checkpoint dist_cp.load_state_dict( state_dict=state_dict, checkpoint_id=checkpoint_dir, storage_reader=smReader )
Supervisión y validación
Puede supervisar y validar las operaciones de puntos de comprobación por niveles administrados mediante métricas y registros.
Registro personalizado (opcional)
Puede integrar los registros de puntos de comprobación con otros registros pasando un registrador personalizado a la biblioteca. Por ejemplo, puede añadir un registrador personalizado a su código de entrenamiento para que todos los registros de la biblioteca también se recopilen en el registrador de entrenamiento.
Registro de servicios mejorado (opcional)
Para mejorar la depuración y la visibilidad del servicio, puede montar la ruta del registro de puntos de comprobación /var/log/sagemaker_checkpointing desde su pod hasta una ruta /var/logs/sagemaker_checkpointing del host. Esto garantiza que solo se recopilen por separado los registros específicos de la biblioteca. Esto proporciona al equipo de servicio mejor visibilidad para la depuración y la asistencia.