本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
激活分载
当激活检查点和管道并行性均已启用并且微批次数量大于 1 时,激活分载是可以进一步减少内存使用量的附加功能。激活卸载会异步移动与当前未在中运行的微批次相对应的检查点激活。CPU就在GPU需要激活微粒向后传递之前,此功能会将卸载的激活从中预取回来。CPU
注意
此功能可在 SageMaker 模型并行度库 v1.6.0 及更高版本 PyTorch 中使用。
如何使用激活分载
当微批次的数量大于 1 并启用了激活检查点时,请使用激活分载以减少内存使用量(请参阅激活检查点)。如果不使用激活检查点,则激活分享不会生效。在仅与一个微批次一起使用时,这不会节省内存。
要使用激活分载,请在 modelparallel
配置中设置 "offload_activations": True
。
激活卸载将nn.Sequential
模块中的检查点激活移至异步激活。CPU通过PCIe链路传输的数据与GPU计算重叠。在计算了特定检查点层的向前传递后,会立即进行分载。激活物被加载回特定微批次向后传递所需的激活物之前GPU不久。CPU-tran GPU sfer 同样与计算重叠。
要调整激活加载回的时间GPU,您可以使用配置参数"activation_loading_horizon"
(默认值设置为 4,必须int
大于 0)。较大的激活加载范围会导致激活加载回GPU之前的激活。如果范围太大,激活分载所带来的内存节省影响可能会减弱。如果范围太小,激活可能无法及时加载回,从而减少重叠量,导致性能下降。
提示
激活分载对于参数超过一千亿的大型模型非常有用。
配置 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. } }