As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Paralelismo híbrido de dados fragmentados
O paralelismo de dados fragmentados é uma técnica de treinamento distribuído que economiza memória e divide o estado de um modelo (parâmetros do modelo, gradientes e estados do otimizador) entre dispositivos. Isso ajuda você a ajustar um modelo maior ou aumentar o tamanho do lote usando a memória liberada da GPU. A biblioteca SMP oferece a capacidade de executar paralelismo de dados fragmentados com o PyTorch Fully Sharded Data Parallel (FSDP). PyTorch FSDP, por padrão, fragmentos em todo o conjunto de GPUs em uso. No SMP v2, a biblioteca oferece esse paralelismo de dados fragmentados além do PyTorch FSDP, estendendo a fragmentação PyTorch híbrida (HYBRID_SHARD
), que é uma das estratégias de fragmentação fornecidas pelo FSDP:,,,. PyTorch FULL_SHARD
SHARD_GRAD_OP
HYBRID_SHARD
_HYBRID_SHARD_ZERO2
Estender a fragmentação híbrida dessa maneira ajuda a implementar, scale-aware-sharding conforme descrito no blog Escalonamento quase linear do treinamento de modelos gigantes para FSDP
A biblioteca SMP facilita o uso HYBRID_SHARD
_HYBRID_SHARD_ZERO2
em qualquer número configurável de GPUs, estendendo o PyTorch FSDP nativo que suporta fragmentação em um único nó () ou em todas as GPUs ()HYBRID_SHARD
. FULL_SHARD
PyTorch As chamadas FSDP podem permanecer como estão, e você só precisa adicionar o hybrid_shard_degree
argumento à configuração SMP, conforme mostrado no exemplo de código a seguir. Você não precisa alterar o valor do sharding_strategy
argumento no invólucro do PyTorch FSDP em torno do seu modelo. PyTorch Você pode passar ShardingStrategy.HYBRID_SHARD
como valor. Como alternativa, a biblioteca SMP substitui a estratégia no script e a define como ShardingStrategy.HYBRID_SHARD
se você especificar um valor igual ou maior que 2 para o parâmetro. hybrid_shard_degree
Os trechos de código a seguir mostram como adicionar o módulo de inicialização SMP torch.sagemaker.init()
ao seu script de treinamento e configurar o dicionário de configuração SMP no formato JSON para o inicializador de tarefas de treinamento, seguindo o processo de duas etapas apresentado em. Comece com a biblioteca de paralelismo de SageMaker modelos v2 Você não precisa fazer nenhuma alteração no PyTorch modelo ou na configuração do PyTorch FSDP.hybrid_shard_degree
, consulte Parâmetros de configuração do recurso principal do SMP v2.
Dicionário de configuração SMP
{ "hybrid_shard_degree": 16 }
No roteiro de treinamento
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 = ...