单例模式
实现方式
- 模块实现单例
Python 异步编程
Python 装饰器
最基本的装饰器
估算模型需要的显存
到底需要多少算力才能部署一个模型,这是一个非常常见的问题。我们就从训练和推理两个场景,分析一下如何估计模型所需要的显存。
训练
训练显存大致分为以下四部分:
- 模型权重:取决于存储的精度,常见的 BF16 和 FP16 占用大小为 2B
- 梯度:反向传播计算的梯度,和权重一样常见情况下占用 2B
- 优化器状态:常见的 Adam 会为每个参数都保存它的 Momentum、Variance 和 Master weights,精度为 FP32 所以总计 12B
- 中间激活值:简单来说就是为了计算反向传播的梯度,需要把前向计算的中间值存储起来,具体计算见下文。
因此使用 AdamW 优化器 + 混合精度训练的经验公式为:
