Uso de la biblioteca de SMDDP en el script de entrenamiento de PyTorch - 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.

Uso de la biblioteca de SMDDP en el script de entrenamiento de PyTorch

A partir de la biblioteca de paralelismo de datos distribuidos de SageMaker AI (SMDDP) v1.4.0, puede utilizar la biblioteca como una opción de backend para el paquete distribuido de PyTorch. Para usar las operaciones colectivas AllReduce y AllGather de SMDDP solo necesita importar la biblioteca de SMDDP al principio del script de entrenamiento y establecer SMDDP como backend de los módulos distribuidos de PyTorch durante la inicialización del grupo de procesos. Con la única línea de especificaciones de backend, puede mantener sin cambios todos los módulos distribuidos de PyTorch nativos y el script de entrenamiento completo. Los siguientes fragmentos de código muestran cómo utilizar la biblioteca de SMDDP como backend de los paquetes de entrenamiento distribuidos basados en PyTorch: paralelismo de datos distribuidos (DDP) de PyTorch, paralelismo de datos totalmente particionados (FSDP) de PyTorch, DeepSpeed y Megatron-DeepSpeed.

Para PyTorch DDP o FSDP

Inicialice el grupo de procesos de la siguiente manera.

import torch.distributed as dist import smdistributed.dataparallel.torch.torch_smddp dist.init_process_group(backend="smddp")
nota

(Solo para trabajos de DDP de PyTorch) El backend smddp no admite la creación de grupos de subprocesos con la API torch.distributed.new_group(). No puede usar el backend smddp simultáneamente con otros backends de grupos de procesos, como NCCL y Gloo.

Para DeepSpeed o Megatron-DeepSpeed

Inicialice el grupo de procesos de la siguiente manera.

import deepspeed import smdistributed.dataparallel.torch.torch_smddp deepspeed.init_distributed(dist_backend="smddp")
nota

Para usar AllGather de SMDDP con los lanzadores basados en mpirun (smdistributed y pytorchddp) en Inicialización de trabajos de entrenamiento distribuido con SMDDP mediante el SageMaker Python SDK, también debe establecer la siguiente variable de entorno en el script de entrenamiento.

export SMDATAPARALLEL_OPTIMIZE_SDP=true

Para obtener orientación general sobre cómo escribir un script de entrenamiento PyTorch FSDP, consulte Advanced Model Training with Fully Sharded Data Parallel (FSDP) en la documentación de PyTorch.

Para obtener orientación general sobre cómo escribir un script de entrenamiento DDP de PyTorch, consulte Getting started with distributed data parallel en la documentación de PyTorch.

Cuando haya terminado de adaptar su script de entrenamiento, continúe con Inicialización de trabajos de entrenamiento distribuido con SMDDP mediante el SageMaker Python SDK.