Paralelismo híbrido de datos fragmentados - Amazon SageMaker

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.

Paralelismo híbrido de datos fragmentados

El paralelismo de datos fragmentados es una técnica de entrenamiento distribuido que ahorra memoria y que divide el estado de un modelo (parámetros del modelo, gradientes y estados del optimizador) entre los dispositivos. Esto le ayuda a adaptarse a un modelo más grande o a aumentar el tamaño del lote utilizando la memoria liberada. GPU La SMP biblioteca ofrece la posibilidad de ejecutar un paralelismo de datos fragmentados con PyTorch Fully Sharded Data Parallel (). FSDP PyTorch FSDPde forma predeterminada, fragmentos en todo el conjunto que se está utilizando. GPUs En la SMP versión 2, la biblioteca ofrece este paralelismo de datos fragmentados, además de PyTorch FSDP extender la fragmentación PyTorch híbrida (HYBRID_SHARD), que es una de las estrategias de fragmentación que ofrecen:,,,. PyTorch FSDP FULL_SHARD SHARD_GRAD_OP HYBRID_SHARD _HYBRID_SHARD_ZERO2 Ampliar la fragmentación híbrida de esta manera ayuda a implementarla, tal scale-aware-sharding como se describe en el blog Near-linear scaling of gigantic-model training on for. AWS PyTorch FSDP

La SMP biblioteca facilita su uso HYBRID_SHARD _HYBRID_SHARD_ZERO2 en cualquier número configurable deGPUs, lo que amplía la versión nativa PyTorch FSDP que admite la fragmentación a un solo nodo () o a todos (). HYBRID_SHARD GPUs FULL_SHARD PyTorch FSDPlas llamadas pueden permanecer como están y solo necesitas añadir el hybrid_shard_degree argumento a la SMP configuración, como se muestra en el siguiente ejemplo de código. No necesita cambiar el valor del sharding_strategy argumento en el PyTorch FSDP envoltorio que rodea a su PyTorch modelo. Puedes pasar por ShardingStrategy.HYBRID_SHARD el valor. Como alternativa, la SMP biblioteca anula la estrategia del script y la establece ShardingStrategy.HYBRID_SHARD si se especifica un valor igual o superior a 2 en el hybrid_shard_degree parámetro.

En los siguientes fragmentos de código se muestra cómo añadir el módulo torch.sagemaker.init() de SMP inicialización al guion de formación y cómo configurar el diccionario de SMP configuración con el JSON formato adecuado para el lanzador de tareas de formación, siguiendo el proceso de dos pasos descrito en. Utilice la biblioteca de paralelismo de SageMaker modelos v2 No es necesario realizar ningún cambio en el modelo o la configuración. PyTorch PyTorch FSDP Para obtener más información sobre el parámetro hybrid_shard_degree, consulte SMPv2: parámetros de configuración de las funciones principales.

SMPdiccionario de configuración

{ "hybrid_shard_degree": 16 }

En el guion de entrenamiento

import torch.sagemaker as tsm tsm.init() # Set up a PyTorch model model = ... # Wrap the PyTorch model using the PyTorch FSDP module model = FSDP( model, ... ) # Optimizer needs to be created after FSDP wrapper optimizer = ...