浅谈ai - Activation Checkpointing - 时间换空间

【Docker】Docker基础入门 一、Docker简介 Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise .. 阅读详情

前言

曾在游戏世界挥洒创意,也曾在前端和后端的浪潮间穿梭,如今,而立的我仰望AI的璀璨星空,心潮澎湃,步履不停!愿你我皆乘风破浪,逐梦星辰!

Activation Checkpointing(激活检查点),在 DeepSpeed 里是一个非常实用的显存优化技术。简单来说,它的核心目标就是:

“节省显存,代价是多做点计算。”

下面我给你讲明白它是啥、怎么干的、为什么有效、啥时候该用。


🧠 一句话解释

Activation Checkpointing 就是:

在前向传播时不保存所有中间激活(activation),而是只保存“关键点”的激活;
等到反向传播需要时,再重新计算中间丢掉的部分。


📦 举个例子(以 Transformer 为例)

假设你有一个 12 层的 Transformer:

  • 正常训练时,前向传播完 12 层,会保存 每一层的激活输出(用于反向传播时算梯度)。

  • 这些激活可能占你一大半的显存!

💡 但是,如果你设置了 activation checkpointing:

  • 你只保存第 0、4、8、12 层的激活(比如每隔 4 层存一个“检查点”)。

  • 当反向传播需要第 2 层激活时,Deepspeed 会:

    • 重新从第 0 层开始计算到第 2 层。

    • 得到激活,然后继续正常反传。

  • 这样就省下了很多显存,但代价是计算时间会稍微变长(因为要“回头重算”)。


🔍 技术实现机制

步骤做了什么
前向传播只保存“检查点”处的激活,其他层的激活丢掉
反向传播当需要中间层激活时,重新从上一个检查点 forward 一遍
PyTorch 实现通常使用 torch.utils.checkpoint.checkpoint(function, *inputs) 来做
Deepspeed 支持可以自动为模型的某些模块启用 checkpoint,比如 TransformerBlock

🧮 显存节省 vs 计算开销

优点缺点
大幅减少激活存储显存(最多可省 50%+)增加前向传播的计算量(因为反向时要重算一部分)
可以训练更大的模型 / 更大 batch训练速度略慢(但通常接受)

典型使用场景:

  • 显存紧张,训练不了大的 batch 或模型。

  • 训练 GPT/BERT 这类“块状重复”的模型时特别有效(容易切分 block)。


✅ 在 Deepspeed 中如何启用?

在 deepspeed_config.json 中这样配:

{
  "activation_checkpointing": {
    "partition_activations": true,
    "contiguous_memory_optimization": true,
    "cpu_checkpointing": false,
    "number_checkpoints": 4
  }
}
配置项含义
partition_activations按 rank 切分激活,进一步省显存
contiguous_memory_optimization内存优化,避免碎片化
cpu_checkpointing是否把 checkpoint 存 CPU(更慢,慎用)
number_checkpoints控制多少层之间插一个 checkpoint(类似“每几层存一次”)

📌 总结一句话

Activation Checkpointing 是一种“用时间换空间”的策略,省显存的同时代价是略微增加计算。对于大模型(如 GPT、BERT)训练来说是非常常见的标配技术。

如果你要训练 13B、30B 这种大模型或者 batch 太大撑不住,那这技术几乎是必开项了。

Activation Steering:零训练神经干预实现大模型可控生成 Activation Steering 是一种面向大语言模型的神经活动调控技术,其核心原理是在推理阶段对特定层的激活向量进行方向性干预,无需反向传播或参数更新,即实现模型行为的精准对齐。它依托大模型内部表征的线性可分性,通过正负概念示例统计提取steering vector,将抽象意图(如事实性、简洁性)映射为高维空间中的可计算方向。相比SFT、RLHF等训练密集型方法,该技术具备零训练、低延迟、强泛化与跨任务鲁棒等工程优势,已在金融合规、教育自适应、内容风格切换等场景落地验证。本文聚焦其原理本质、实操路径 阅读详情

相关推荐

AI模型时间与空间复杂度实战指南:从理论到上线卡点

时间复杂度和空间复杂度是衡量算法计算开销的基础概念,其本质是描述运行耗时与内存占用随输入规模增长的渐进关系。理解O(n)、O(n²)、O(d²)等表达式背后的物理含义——如n代表样本数还是序列长度、d是特征维数还是隐层维度——直接决定模型能否满足线上SLA。在工程实践中,推理阶段的时间复杂度往往比训练更致命,而空间复杂度需同时考虑参数、激活值与优化器状态三重开销。结合GPU硬件特性、PyTorch框架行为与真实数据分布,本文聚焦LightGBM、Transformer、LLM等主流模型的实测复杂度画像,揭示

dienangpiao2051的博客 475

一步一步理解大模型:激活检查点技术

方法中,它首先恢复在前向传播过程中保存的RNG状态,然后运行前向传播函数以重新计算激活状态,并使用保存的梯度进行反向传播。在深度学习模型的训练过程中,前向传播会计算并存储每一层的激活值,这些激活值在后向传播时被用来计算梯度。然而,对于深度很大的模型,这种方式可能会导致内存溢出,因为需要存储大量的激活值。激活检查点(Activation Checkpointing)是一种用于优化深度学习模型训练的技术,它可以在内存使用和计算效率之间进行权衡,以在有限的硬件资源下训练更大的模型。具体实现的关键是一个名为。

chattyfish的博客 3936

机器学习模型时间与空间复杂度实战指南:从理论到GPU显存压测

时间复杂度和空间复杂度是机器学习落地的核心工程约束,本质反映的是算法在真实硬件(CPU/GPU/内存带宽)上的执行效率。理解O(n²d)等大O表达式只是起点,真正影响线上服务P99延迟、显存峰值与训练吞吐的,是常数项、I/O瓶颈、优化器状态、KV cache等可测量的物理因素。本文聚焦主流模型(线性模型、树模型、Transformer)在训练与推理阶段的复杂度拆解,结合PyTorch、XGBoost、LightGBM源码逻辑与AWS/A100实测数据,揭示混合精度、梯度检查点、FlashAttention等

dihuangxiu8828的博客 328

[LLM]大模型训练DeepSpeed(一)-原理介绍

DeepSpeed是由Microsoft提供的分布式训练工具,旨在支持更大规模的模型和提供更多的优化策略和工具。与其他框架相比,DeepSpeed支持更大规模的模型和提供更多的优化策略和工具。其中,主要优势在于支持更大规模的模型、提供了更多的优化策略和工具(例如 ZeRO 和 Offload 等)

摩登都市天空---专栏 7万+

训练一上大模型就 OOM,别先只会调 batch size:我在 RTX 3090 上把 activation checkpointing 的 3 条路都跑了一遍

训练一上长序列或稍大的模型就 OOM 时,很多人只会继续缩 batch size,却说不清 activation checkpointing 到底在换什么。本文结合 PyTorch 2.9.1 官方 checkpoint 文档、Transformers 对 `use_cache` 与 gradient checkpointing 的兼容说明,以及 RTX 3090 上同一 Transformer 的三组实测,对比不开、隔层开、全量开的峰值显存与 step 时间,给出一个既能写进训练模板,也能在面试里讲清楚的

q742971636的博客 53

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2159

PyTorch 节省显存技巧:Activation Checkpointing

本文介绍了 PyTorch 中的激活检查点技术,旨在减小内存占用,同时提供更多计算资源。其中详细讨论了 PyTorch 中的自动求导机制,以及两种激活检查点的实现方式:可重新进入(reentrant)和不可重新进入(non-reentrant)。特别关注了非可重新进入版本的新特性,包括嵌套检查点、在检查点内调用 .grad()/.backward() 的支持、非确定性检查和调试性的改进、在指定 retain_graph 时的内存节省等。同时,还介绍了可重新进入变体的实现方式,并提供了简单的用法示例。

kebijuelun的博客 4898

OpenAI Codex 国内安装配置全攻略:从零到实战的 AI 编程助手集成指南

AI 编程助手正成为提升开发效率的关键工具,其核心原理是基于大规模语言模型对代码语义进行深度理解与生成。这类技术通过将自然语言指令转化为可执行的代码、自动化重构与调试,为开发者提供了智能化的结对编程体验,其技术价值在于显著降低编码复杂度、加速项目迭代。在实际应用场景中,AI 编程助手可集成于日常开发流,辅助完成代码生成、项目分析与自动化任务。本文聚焦于 OpenAI 的 Codex,针对国内开发者在网络、认证和配置上的常见挑战,提供了涵盖多种安装方式、详细配置步骤及核心使用技巧的实战指南,并特别介绍了如何利

weixin_28715081的博客 416

【DeepSpeed】激活检查点(Activation Checkpointing):内存优化技术

激活检查点(Activation Checkpointing)是 DeepSpeed 提供的一种内存优化技术,用于在深度学习模型训练中减少激活值(intermediate activations)的内存占用,特别适合大规模模型或显存受限场景。心思想:不是存储所有层的激活值,而是仅保存部分关键层的激活值(检查点)。在反向传播时,丢弃未保存的激活值,并在需要时通过重新运行前向传播(recomputation)来恢复。这种方法以额外的计算开销(重新计算前向传播)换取显著的显存节省。

彬彬侠的博客 2885

MDM主数据清洗和编码集成说明

绝大多数的企业业务系统是伴随业务发展而建设的,但随着业务发展单一系统难以支撑企业业务闭环。MDM主数据管理平台可以满足企业数据治理的需求,本文针对主数据清洗和编码集成进行梳理。...

数通畅联 3321

Stable Diffusion跑图总爆显存?别急着换显卡,试试这个PYTORCH_CUDA_ALLOC_CONF参数调优

本文深入解析了Stable Diffusion运行中常见的显存不足问题,特别是由显存碎片化导致的假性OOM现象。通过详细讲解PYTORCH_CUDA_ALLOC_CONF参数中的max_split_size_mb设置技巧,提供了一套完整的显存优化方案,帮助用户在无需升级硬件的情况下显著提升AI绘画的稳定性与效率。

weixin_42524100的博客 347

Activation Checkpointing技术:用时间换空间的经典策略

激活检查点技术通过仅保存关键中间结果并在反向传播时重新计算,显著降低深度模型训练的显存占用。该方法在PyTorch中实现简便,配合CUDA环境可有效支持大模型单卡训练,是当前大模型内存优化的核心手段之一。

weixin_42602726的博客 981

基于IC555的PWM信号发生器设计:从原理到电机调速与LED调光应用

脉冲宽度调制(PWM)是一种通过调节数字脉冲宽度来控制模拟信号电平的核心技术,其原理在于固定频率下改变高电平占空比,从而等效调节平均电压或功率。这项技术因其高效率、低损耗的特点,在电机调速、LED调光、开关电源等工程领域具有重要价值。本文聚焦于利用经典IC555定时器芯片构建PWM信号发生器,通过分析其无稳态工作模式及改进型电路设计,实现了占空比独立可调且频率稳定的信号输出。文中结合电机驱动与LED调光等具体应用场景,详细阐述了电路参数计算、元件选型、PCB设计及常见问题排查等实践要点,为电子爱好者与工程师

weixin_30342363的博客 397

Llama-Factory支持激活检查点(Activation Checkpointing)吗?

本文详细解析了Llama-Factory是否支持激活检查点(Gradient Checkpointing)这一关键显存优化技术。通过命令行、YAML配置或WebUI均可轻松启用,结合FP16、LoRA等方法显著降低显存占用,使7B级模型可在单卡上训练。

weixin_35987118的博客 1120

对比实验系列:Efficientdet环境配置及训练个人数据集

可以通过下方链接下载Efficientdet源码。

Yayisheng的博客 4586

Ollama + OpenCLAW 在 Windows 系统的完整部署指南

Windows 部署优先选 WSL2,避免原生环境的权限/兼容性问题;网络问题通过“离线包+国内镜像”解决,版本问题通过升级 Node.js 解决;内存不足可切换轻量模型或增大 WSL2 内存分配;核心链路:Ollama(模型管理)→ Gateway(网关)→ OpenCLAW TUI(交互),各组件启动正常即可稳定使用。

lpfasd123的博客 2828

不用 NVLink,如何通过 AI Infra 工程优化拉满 Cosmos 3 训练吞吐

具身智能的大规模落地,既不是单点算法突破能够完成的,也不是单纯堆砌算力就能解决的。它需要模型结构创新、AI Infra 工程优化与算力网络能力的协同推进。目前,除了本文介绍的 Cosmos3 之外,百度百舸面向具身智能场景,已经为客户交付了 OpenPI、DreamZero、GR00T N1.6、Lingbot-VLA、Motus、AHA-WAM、FastWAM、Wan2.2 等众多模型的训推加速成果。

2301_82040283的博客 322

第1章:认识OpenClaw

OpenClaw是一个开源的 AI 智能体 Gateway 网关项目名称演变:OpenClaw 原名 Clawdbot,因 Anthropic 商标顾虑在 2026年1月27日更名为 Moltbot(过渡名),最终在1月30日确定为 OpenClaw。三个名字本质是同一个项目,功能完全一致。🏠在你的电脑上运行:完全本地部署,数据隐私有保障📁访问本地文件:可以搜索、读取、编辑你电脑上的文件🔌扩展能力:通过Skills(技能)系统无限扩展功能💬多平台使用。

Maynor的博客 2836

batch size优化:显存与性能的平衡艺术

batch size不仅是训练稳定性的关键,更是显存与计算效率博弈的核心。从OOM问题出发,结合ZeRO、QLoRA、梯度累积等技术,深入剖析如何在有限硬件上实现大模型高效训练,并通过ms-swift平台实践展示配置背后的决策逻辑。

weixin_42433737的博客 1091

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Qwen-Image-Edit-2509显存优化实战

深入解析Qwen-Image-Edit-2509模型推理时的显存瓶颈,通过KV Cache裁剪、激活重计算、4-bit量化与LoRA合并等技术,实测显存占用降低40%~75%,显著提升部署效率与并发能力,助力低成本规模化落地。

weixin_33245447的博客 826

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Qwen-Image-Edit-2509模型推理时显存占用优化最佳实践

本文深入探讨Qwen-Image-Edit-2509模型在推理阶段的显存优化方法,涵盖KV Cache裁剪、激活值重计算、4-bit量化与LoRA合并等关键技术,实测显存占用降低40%~75%,显著提升部署效率与成本效益。

weixin_28850145的博客 806

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Qwen3-VL读取DeepSpeed配置文件优化训练

通过DeepSpeed的ZeRO-3、CPU卸载和混合精度等技术,成功实现Qwen3-VL这类大规模多模态模型在有限显存下的高效训练。结合Activation Checkpointing、FlashAttention-2与MoE负载均衡,显著降低内存占用并提升吞吐。配置文件成为训练策略的核心载体,支持从训练到推理的全流程优化。

weixin_42590539的博客 555

AI通用能力(一)

本文对比分析了分布式深度学习训练的几种关键技术:FSDP(全分片数据并行)通过拆分模型参数、梯度和优化器状态到不同GPU,解决了大模型显存不足的问题;Gradient Checkpointing通过牺牲计算时间换取显存空间,仅保存部分激活值;FP16与BF16浮点格式在精度和动态范围上各具优势;数据并行(DDP)采用Ring-AllReduce算法提升通信效率;模型并行(TP/PP)和ZeRO优化器则通过分层计算和状态切分进一步优化大模型训练。这些技术共同构成了现代大规模深度学习训练的核心解决方案。

Esperanto.的博客 294

PyTorch训练效率六步优化:省30%时间与显存的工程实践

深度学习模型训练中的‘慢’与‘爆显存’,本质是GPU计算流与内存调度失配所致。理解数据加载瓶颈、混合精度数值稳定性、梯度检查点的时间-空间权衡、以及梯度累积对优化器状态的影响,是提升训练吞吐的核心。这些技术并非孤立调参,而是协同作用于PyTorch训练流水线——从DataLoader的IO等待、CUDA内存分配机制,到AMP的loss scaling动态调节和checkpointing的激活重计算策略。它们共同降低GPU闲置率、抑制显存碎片、提升单卡有效吞吐,广泛适用于NLP微调、CV训练等真实工业场景,尤

weixin_30765577的博客 448

显存告急?GPT、Llama千亿级模型训练的破局之道:激活检查点技术深度解析!

激活检查点技术是训练大型语言模型(LLM)时解决显存不足的关键方法。它通过分段保存激活值并重新计算中间结果,将内存占用从M降低到平方根级别,但会增加15-25%的计算时间。这种以时间换空间的策略使在有限硬件上训练千亿参数模型成为可能,已成为LLM训练的重要基石。

2301_80239908的博客 368

Mamba架构深度解析:如何用选择性状态空间模型突破Transformer性能瓶颈?

在当今大语言模型(LLM)的激烈竞争中,Transformer架构虽然主导了市场,但其**二次方复杂度**的计算成本让许多研究者和工程师望而却步。想象一下,当序列长度从1K增长到32K时,Transformer的计算开销会呈指数级增长——这就像用一辆跑车在拥挤的城市街道上行驶,引擎轰鸣却寸步难行。 然而,**Mamba**的出现改变了这一局面。作为革命性的**选择性状态空间模型(Selectiv

gitblog_00058的博客 641
上一篇: 浅谈AI - DeepSpeed - 单卡慎用!
下一篇: 浅谈ai落地 - 微调跟Rag的结合有什么可以优化的地方
栗子皮皮布丁
博客等级 码龄2年 204粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值