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ónFULL_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
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 FSDPhybrid_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 = ...