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.
Descarga de activación
Cuando los puntos de control de activación y el paralelismo de canalización están activados y el número de microlotes es superior a uno, la descarga de activación es una característica adicional que puede reducir aún más el uso de memoria. La descarga de activación mueve de forma asíncrona las activaciones controladas por puntos de control correspondientes a sus microlotes que no se están ejecutando actualmente en la CPU. Justo antes de que la GPU necesite las activaciones para la pasada hacia atrás del microlote, esta funcionalidad recupera previamente las activaciones descargadas de la CPU.
nota
Esta función está disponible PyTorch en la biblioteca de paralelismo de SageMaker modelos v1.6.0 y versiones posteriores.
Cómo utilizar la descarga de activación
Utilice la descarga de activación para reducir el uso de memoria cuando el número de microlotes sea superior a 1 y el punto de control de activación esté activado (consulte Puntos de control de activación). Si no se utiliza el punto de control de activación, la descarga de activación no tiene ningún efecto. Si se utiliza con un solo microlote, no ahorra memoria.
Para utilizar la descarga de activación, establezca "offload_activations": True
en la configuración modelparallel
.
La descarga de activación mueve las activaciones puntuales de los módulos nn.Sequential
a la CPU de forma asíncrona. La transferencia de datos a través del PCIe enlace se superpone con el cálculo de la GPU. La descarga se produce inmediatamente, tan pronto como se calcula el paso hacia adelante de una capa determinada con puntos de control. Las activaciones vuelven a cargarse en la GPU poco antes de que se necesiten para retroceder un microlote específico. La transferencia CPU-GPU también se superpone con la computación.
Para ajustar la prontitud en que se cargan las activaciones en la GPU, puede usar el parámetro de configuración "activation_loading_horizon"
(el valor predeterminado es 4, int
debe ser mayor que 0). Un horizonte de carga de activación más grande haría que las activaciones se cargaran de nuevo en la GPU con antelación. Si el horizonte es demasiado amplio, es posible que disminuya el impacto de la descarga de la activación en el ahorro de memoria. Si el horizonte es demasiado pequeño, es posible que las activaciones no se carguen en el tiempo, lo que reduce la cantidad de superposiciones y reduce el rendimiento.
sugerencia
La descarga de activación puede resultar útil para modelos grandes con más de cien mil millones de parámetros.
Configure un estimador 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. } }