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.
Comience con el entrenamiento distribuido en Amazon SageMaker AI
La siguiente página proporciona información sobre los pasos necesarios para empezar en el entrenamiento distribuida en Amazon SageMaker AI. Si ya conoce el entrenamiento distribuido, seleccione una de las siguientes opciones que se adapte a su estrategia o marco preferido para empezar. Si desea obtener más información sobre el entrenamiento distribuido en general, consulte Conceptos de entrenamiento distribuido.
Las bibliotecas de entrenamiento distribuido de SageMaker AI están optimizadas para el entorno de entrenamiento de SageMaker, ayudan a adaptar sus trabajos de entrenamiento distribuido a SageMaker y mejoran la velocidad y el rendimiento del entrenamiento. Las bibliotecas ofrecen estrategias de entrenamiento de paralelismo de datos y paralelismo de modelos. Combinan tecnologías de software y hardware para mejorar las comunicaciones entre GPU y entre nodos, y amplían las capacidades de entrenamiento de SageMaker AI con opciones integradas que requieren cambios mínimos de código en los scripts de entrenamiento.
Antes de empezar
El entrenamiento de SageMaker admite el entrenamiento distribuido en una sola instancia, así como en múltiples instancias, por lo que puede ejecutar cualquier tamaño de entrenamiento a escala. Le recomendamos que utilice las clases estimadoras del marco, como PyTorchCreateTrainingJob en el backend, encuentra la región en la que se están ejecutando las sesiones actuales y extrae uno de los contenedores de aprendizaje profundo AWS prediseñados y empaquetados con una serie de bibliotecas que incluyen marcos de aprendizaje profundo, marcos de entrenamiento distribuido y el controlador EFA. Si desea montar un sistema de archivos FSx en las instancias de entrenamiento, debe pasar su ID de subred de VPC y grupo de seguridad al estimador. Antes de ejecutar su trabajo de entrenamiento distribuido en SageMaker AI, lea la siguiente guía general sobre la configuración básica de la infraestructura.
Zonas de disponibilidad y plano posterior de red
Cuando se utilizan varias instancias (también denominadas nodos), es importante entender la red que conecta las instancias, cómo leen los datos de entrenamiento y cómo comparten la información entre sí. Por ejemplo, cuando ejecuta un trabajo de entrenamiento en paralelo con datos distribuidos, varios factores, como la comunicación entre los nodos de un clúster de procesamiento para ejecutar la operación AllReduce y la transferencia de datos entre los nodos y el almacenamiento de datos en Amazon Simple Storage Service o Amazon FSx para Lustre, desempeñan un papel crucial para lograr un uso óptimo de los recursos informáticos y una velocidad de entrenamiento más rápida. Para reducir la sobrecarga de comunicación, asegúrese de configurar las instancias, la subred de VPC y el almacenamiento de datos en la misma Región de AWS y en la zona de disponibilidad.
Instancias de GPU con una red más rápida y un almacenamiento de alto rendimiento
Técnicamente, puede utilizar cualquier instancia para un entrenamiento distribuido. Para los casos en los que necesite ejecutar trabajos de entrenamiento distribuido de varios nodos para entrenar modelos de lenguaje de gran tamaño (LLM) y modelos de difusión, que requieren una conmutación entre nodos más rápida, recomendamos las instancias de GPU habilitadas para EFA compatibles con SageMaker AI
Utilización de la biblioteca de paralelismo de datos distribuidos de SageMaker AI (SMDDP)
La biblioteca de SMDDP mejora la comunicación entre nodos con implementaciones de operaciones de comunicación colectiva de AllReduce y AllGather optimizadas para la infraestructura de red de AWS y la topología de instancias de ML de Amazon SageMaker AI. Puede utilizar la biblioteca de SMDDP como backend de los paquetes de entrenamiento distribuidos basados en PyTorch: paralelismo de datos distribuidos (DDP) de PyTorchPyTorch para inicializar un trabajo de entrenamiento distribuido en dos instancias de ml.p4d.24xlarge.
from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", # Activate distributed training with SMDDP distribution={ "pytorchddp": { "enabled": True } } # mpirun, activates SMDDP AllReduce OR AllGather # distribution={ "torch_distributed": { "enabled": True } } # torchrun, activates SMDDP AllGather # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } # mpirun, activates SMDDP AllReduce OR AllGather )
Si quiere aprender a preparar su script de entrenamiento e inicializar un trabajo de entrenamiento distribuido de paralelismo de datos en SageMaker AI, consulte Ejecución del entrenamiento distribuido con la biblioteca de paralelismo de datos distribuidos de SageMaker AI.
Utilización de la biblioteca de paralelismo de modelos (SMP) de SageMaker AI
SageMaker AI proporciona la biblioteca SMP y admite diversas técnicas de entrenamiento distribuido, como el paralelismo de datos partidos, la canalización, el paralelismo de tensores, la partición de estados del optimizador y mucho más. Para obtener más información sobre lo que ofrece la biblioteca SMP, consulte Características principales de la biblioteca de paralelismo de modelos de SageMaker.
Para utilizar la biblioteca de paralelismo de modelos de SageMaker AI, configure el parámetro distribution de los estimadores del marco de SageMaker AI. Los estimadores de marcos compatibles son PyTorchml.p4d.24xlarge.
from sagemaker.frameworkimportFrameworkdistribution={ "smdistributed": { "modelparallel": { "enabled":True, "parameters": { ... # enter parameter key-value pairs here } }, }, "mpi": { "enabled" : True, ... # enter parameter key-value pairs here } } estimator =Framework( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution=distribution )
Si quiere aprender a adaptar su script de entrenamiento, configure los parámetros de distribución en la clase estimator y lance un trabajo de entrenamiento distribuido, consulte la biblioteca de paralelismo de modelos de SageMaker AI (consulte también las API de entrenamiento distribuido
Utilice marcos de entrenamiento distribuido de código abierto
SageMaker AI también admite las siguientes opciones para operar mpirun y torchrun en el backend.
-
Para usar PyTorch DistributedDataParallel (DDP)
en SageMaker AI con el backend de mpirun, agreguedistribution={"pytorchddp": {"enabled": True}}a su estimador de PyTorch. Para obtener más información, consulte también vy el argumento distributiondel SageMaker AI PyTorch Estimatoren la documentación de SageMaker Python SDK. nota
Esta opción está disponible para PyTorch 1.12.0 o versiones posteriores.
from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"pytorchddp": {"enabled": True}} # runs mpirun in the backend ) -
SageMaker AI es compatible con el lanzador
torchrunde PyTorchpara el entrenamiento distribuido en instancias de Amazon EC2 basadas en GPU, como P3 y P4, así como en Trn1 con la tecnología del dispositivo AWS Trainium . Para usar PyTorch DistributedDataParallel (DDP)
en SageMaker AI con el backend de torchrun, agreguedistribution={"torch_distributed": {"enabled": True}}al estimador de PyTorch.nota
Esta opción está disponible para PyTorch 1.13.0 o versiones posteriores.
El siguiente fragmento de código muestra un ejemplo de construcción de un estimador PyTorch de SageMaker AI para ejecutar un entrenamiento distribuido en dos instancias
ml.p4d.24xlargecon la opción de distribucióntorch_distributed.from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"torch_distributed": {"enabled": True}} # runs torchrun in the backend )Para obtener más información, consulte Entrenamiento distribuido de PyTorch
y el argumento distributiondel estimador PyTorch de SageMaker AIen la documentación de SageMaker Python SDK. Notas para el entrenamiento distribuido en Trn1
Una instancia Trn1 consta de hasta 16 dispositivos Trainium y cada dispositivo Trainium consta de dos NeuronCores
. Para ver las especificaciones de los dispositivos Trainium AWS, consulte la arquitectura de Trainium en la AWS documentación de Neuron. Para entrenar con las instancias impulsadas por Trainium, solo necesita especificar el código de la instancia Trn1,
ml.trn1.*, en cadena con el argumentoinstance_typede la clase estimadora PyTorch de SageMaker AI. Para encontrar los tipos de instancias Trn1 disponibles, consulte AWS Arquitectura de Trn1en la documentación de Neuron de AWS . nota
Actualmente, el entrenamiento de SageMaker en instancias de Trn1 de Amazon EC2 solo está disponible para el marco PyTorch en los contenedores de aprendizaje profundo AWS para PyTorch Neuron a partir de la versión 1.11.0. Para encontrar una lista completa de las versiones compatibles de PyTorch Neuron, consulte Contenedores de Neuron
en el repositorio de GitHub de aprendizaje profundo AWS. Al lanzar un trabajo de entrenamiento en instancias Trn1 mediante el SageMaker Python SDK, SageMaker AI selecciona y ejecuta automáticamente el contenedor correcto de los contenedores Neuron
proporcionados por los contendedores de aprendizaje profundo de AWS. Los contenedores Neuron vienen preempaquetados con la configuración y las dependencias del entorno de entrenamiento para facilitar la adaptación del trabajo de entrenamiento a la plataforma de entrenamiento de SageMaker y a las instancias Trn1 de Amazon EC2. nota
Para ejecutar su trabajo de entrenamiento de PyTorch en instancias de Trn1 con SageMaker AI, debe modificar su script de entrenamiento para inicializar los grupos de procesos con el backend de
xlay usar PyTorch/XLA. Para respaldar el proceso de adopción de XLA, el Neuron SDK de AWS proporciona PyTorch Neuron, que utiliza XLA para convertir las operaciones de PyTorch en instrucciones de Trainium. Si quiere aprender a modificar su script de entrenamiento, consulte la Guía para desarrolladores para entrenamiento con PyTorch Neuron ( torch-neuronx)en la documentación de Neuron de AWS. Para obtener más información, consulte Distributed Training with PyTorch Neuron on Trn1 instances
y el argumento distributiondel estimador de SageMaker AI PyTorchen la documentación de SageMaker Python SDK. -
Para usar MPI en SageMaker AI, agregue
distribution={"mpi": {"enabled": True}}a su estimador. La opción de distribución MPI está disponible para los siguientes marcos: MXNet, PyTorch y TensorFlow. -
Para usar un servidor de parámetros en SageMaker AI, agregue
distribution={"parameter_server": {"enabled": True}}a su estimador. La opción del servidor de parámetros está disponible para los siguientes marcos: MXNet, PyTorch y TensorFlow.sugerencia
Para obtener más información sobre el uso de las opciones de MPI y el servidor de parámetros por marco, utilice los siguientes enlaces a la documentación de SageMaker Python SDK.
-
MXNet Distributed Training
y el argumento distributiondel SageMaker AI MXNet Estimator. -
PyTorch Distributed Training
y el argumento distributiondel SageMaker AI PyTorch Estimator. -
TensorFlow Distributed Training
y el argumento distributiondel SageMaker AI TensorFlow Estimator.
-