43_显存优化策略篇

扫码 查看更

• 显存优化策略篇

• 一、介绍一下 gradient accumulation 显存优化方式?• 二、介绍一下 gradient checkpointing 显存优化方式?• 致谢

一、介绍一下 gradient accumulation 显存优化方式?

正常情况下是一个batch之后统一计算梯度大小,gradient accumulation可以再指定个batch之后一起更新梯度,这种情况下,可以再batch_size很小的时候,提升真正的batch_size,是一种显存占用的优化算法。随着模型和数据规模越来越大,显存紧张的时候,需要把batch_size设置的很小,使用gradient accumulation的技术可以在实际上提高真正的batch_size【如果batch_size很小的话,会导致训练不稳定,收敛更慢】梯度累积(Gradient Accumulation)是深度学习训练中的一种技术,用于在一次反向传播(backpropagation)中累积多个小批量数据的梯度,然后一次性更新模型参数。这个技术的主要目的是在内存有限的情况下,能够有效地使用大批量数据进行训练,从而提高模型性能。以下是梯度累积的详细解释:

44_大模型_LLMs_分布式训练面

大模型(LLMs)分布式训练面

来自: AiGC面试宝典

扫码 查看更

1. 理论篇

1.1 训练 大语言模型 存在问题?

• 显存效率:模型参数量太大,显存不够用

即使目前显存最大的GPU也放不下这些大模型的模型参数。例如:175B参数量的GPT3模型参数需要占用700GB( $175\mathsf{B}^{\ast}4\mathsf{k}$ ytes) 的显存。参数梯度是700GB,Adam优化器状态需要1400GB,共计需要2.8TB的显存。

45_图解分布式训练_一_流水线并行_Pipeline_Parallelism

图解分布式训练(一) —— 流水线并行(Pipeline Parallelism)

来自: AiGC面试宝典

为什么需要流水线并行(Pipeline Parallelism)?

回顾ChatGPT的发展历程,我们可以总结出大语言模型(LLM)取得惊艳效果的要点(重要性从高到低排序):

46_图解分布式训练_二_nn_DataParallel篇

图解分布式训练(二) nn.DataParallel篇

来自: AiGC面试宝典

扫码 查看更

为什么需要nn.DataParallel?

多GPU并行训练的原理就是将模型参数和数据分布到多个GPU上,同时利用多个GPU计算加速训练过程。具体实现需要考虑以下两个问题:

47_图解分布式训练_三_nn_parallel_DistributedDataParallel

图解分布式训练(三) —— nn.parallel.DistributedDataParallel

来自: AiGC面试宝典

扫码 查看更

为什么需要 nn.parallel.DistributedDataParallel ?

多GPU并行训练的原理就是将模型参数和数据分布到多个GPU上,同时利用多个GPU计算加速训练过程。具体实现需要考虑以下三个问题:

48_图解分布式训练_四_torch_multiprocessing_详细解析

图解分布式训练(四) —— torch.multiprocessing 详细解析

来自: AiGC面试宝典

扫码 查看更

一、torch.multiprocessing 函数介绍一下?

torch.multiprocessing是本机multiprocessing模块的封装。封装了multiprocessing模块。它注册自定义的reducer,它使用共享内存为不同进程中的相同数据提供视图共享。一旦张量/存储被移动到shared_memory(参见sharememory()),就可以将其发送到其他进程而不进行其它任何操作。
这个API与原始模块 $100%$ 兼容,将import multiprocessing改为import torch.multiprocessing就可以将所有张量通过队列发送或通过其他机制共享转移到共享内存中
由于API的相似性,我们没有记录这个软件包的大部分内容,我们建议您参考Python multiprocessing原始模块的文档。

49_图解分布式训练_五_AMP混合精度训练_详细解析

图解分布式训练(五) AMP混合精度训练 详细解析

来自: AiGC面试宝典

扫码 查看更

为什么需要 AMP混合精度训练?

PyTorch 1.6版本今天发布了,带来的最大更新就是自动混合精度。release说明的标题是: Stable release of automatic mixed precision (AMP).New Beta features include a TensorPipe backend for RPC, memory profiler, and several improvements to distributed training for both RPC and DDP.

5_transformers_操作篇

transformers 操作篇

来自: AiGC面试宝典

• transformers 操作篇

• 1. 如何 利用 transformers 加载 Bert 模型?• 2. 如何 利用 transformers 输出 Bert 指定 hidden_state?• 3. BERT 获取最后一层或每一层网络的向量输出• 致谢

51_图解分布式训练_七_accelerate_分布式训练_详细解析

图解分布式训练(七) accelerate 分布式训练 详细解析

来自: AiGC面试宝典

扫码 查看更

一、为什么需要 accelerate 分布式训练?

PyTorch Accelerate 是一个 PyTorch 的加速工具包,旨在简化 PyTorch 训练和推断的开发过程,并提高性能。它是由 Hugging Face、NVIDIA、AWS 和 Microsoft 等公司联合开发的,是一个开源项目。