Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Offload di attivazione
Quando il checkpoint di attivazione e il parallelismo di pipeline sono attivati e il numero di microbatch è maggiore di uno, l'offload di attivazione è una funzionalità aggiuntiva che può ridurre ulteriormente l'utilizzo della memoria. L'Activation Offloading sposta in modo asincrono le attivazioni dei checkpoint corrispondenti ai relativi microbatch che non sono attualmente in esecuzione in. CPU Appena prima che vengano GPU necessarie le attivazioni per il passaggio all'indietro del microbatch, questa funzionalità recupera automaticamente le attivazioni scaricate da. CPU
Nota
Questa funzionalità è disponibile PyTorch nella libreria di parallelismo dei modelli v1.6.0 e versioni successive SageMaker .
Come usare l'offload di attivazione
Utilizza l'offload di attivazione per ridurre l'utilizzo della memoria quando il numero di microbatch è maggiore di 1 e il checkpoint di attivazione è attivato (vediCheckpoint di attivazione). Quando il checkpoint di attivazione non viene utilizzato, l'offload di attivazione non ha alcun effetto. Quando viene utilizzato con un solo microbatch, non consente di risparmiare memoria.
Per utilizzare l'offload di attivazione, impostalo "offload_activations": True
nella configurazione modelparallel
.
L'Activation Offload sposta le attivazioni dei checkpoint nei moduli in modalità asincrona. nn.Sequential
CPU Il trasferimento dei dati tramite il collegamento si sovrappone al calcolo. PCIe GPU L'offload avviene immediatamente, non appena viene calcolato il passaggio in avanti per un particolare livello sottoposto a checkpoint. Le attivazioni vengono caricate GPU poco prima di essere necessarie per il passaggio all'indietro di un particolare microbatch. Il GPU trasferimento CPU - si sovrappone in modo analogo al calcolo.
Per regolare la data di caricamento anticipata delle attivazioni nelGPU, puoi utilizzare il parametro di configurazione "activation_loading_horizon"
(il valore predefinito è impostato su 4, deve essere int
maggiore di 0). Un orizzonte di caricamento delle attivazioni più ampio farebbe tornare le attivazioni a quelle precedenti. GPU Se l'orizzonte è troppo ampio, l'impatto dell'offload di attivazione in termini di risparmio di memoria potrebbe essere ridotto. Se l'orizzonte è troppo piccolo, le attivazioni potrebbero non essere caricate indietro nel tempo, riducendo la sovrapposizione e peggiorando le prestazioni.
Suggerimento
L'offload di attivazione può essere utile per modelli di grandi dimensioni con oltre cento miliardi di parametri.
Configura uno stimatore SageMaker PyTorch
mpi_options = { "enabled" : True, "processes_per_host" : 8, # 8 processes "custom_mpi_options" : "--mca btl_vader_single_copy_mechanism none " } smp_options = { "enabled":True, "parameters": { "microbatches": 4, "pipeline_parallel_degree": 2, # alias for "partitions" "placement_strategy": "cluster", "tensor_parallel_degree": 2, # tp over 2 devices "ddp": True, "offload_activations": True, "activation_loading_horizon": 4 # optional. default is 4. } }