

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 particionados
<a name="model-parallel-core-features-v2-sharded-data-parallelism"></a>

El *paralelismo de datos particionados* 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 dispositivos. Esto ayuda a adaptarse a un modelo más grande o a aumentar el tamaño del lote utilizando la memoria liberada de la GPU. La biblioteca SMP ofrece la posibilidad de ejecutar el paralelismo de datos fragmentados con Fully Sharded Data Parallel (FSDP). PyTorch PyTorch De forma predeterminada, el FSDP se divide en todo el conjunto que se está utilizando. GPUs [En SMP v2, la biblioteca ofrece este paralelismo de datos fragmentados además del PyTorch FSDP al extender la fragmentación PyTorch híbrida (`HYBRID_SHARD`), que es una de las estrategias de fragmentación que ofrece FSDP:,,,. PyTorch ](https://pytorch.org/docs/stable/fsdp.html#torch.distributed.fsdp.ShardingStrategy) `FULL_SHARD` `SHARD_GRAD_OP` `HYBRID_SHARD` `_HYBRID_SHARD_ZERO2` [Ampliar la fragmentación híbrida de esta manera ayuda a implementar, tal scale-aware-sharding como se describe en el blog, el escalado cercano al lineal de la formación en modelos gigantes para el FSDP. AWS](https://www.amazon.science/blog/near-linear-scaling-of-gigantic-model-training-on-aws) PyTorch

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

En los siguientes fragmentos de código, se muestra cómo añadir el `torch.sagemaker.init()` del módulo de inicialización de SMP al script de entrenamiento y cómo configurar el diccionario de configuración de SMP en formato JSON para el lanzador de trabajos de entrenamiento mientras se sigue el proceso de dos pasos descrito en [Utilice la biblioteca de paralelismo de SageMaker modelos v2](model-parallel-use-api-v2.md). [No es necesario realizar ningún cambio en el PyTorch modelo ni PyTorch en la configuración del FSDP.](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp) Para obtener más información sobre el parámetro `hybrid_shard_degree`, consulte [Parámetros de configuración de las características esenciales de SMP v2](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config).

**Diccionario de configuración de SMP**

```
{ "hybrid_shard_degree": 16 }
```

**En script 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 = ...
```