返回关卡地图
闯关题:0 / 3 XP 0 / 300

Level 42 | 零基础导学关卡

激活卸载

Activation Offload

Activation offload 将反向传播稍后需要的激活暂存到主机内存。房间是 GPU,仓库是 CPU;腾空间的代价是往返搬运。

本课官方 Notebook ↗
42_Activation_Offload.ipynb 显存优化激活值Offload
Mission 1 01 / 建立直觉

把东西搬到仓库能腾出房间,但取回来要多久?

图解原理

Activation offload 将反向传播稍后需要的激活暂存到主机内存。房间是 GPU,仓库是 CPU;腾空间的代价是往返搬运。

先认识这三个词

activation
前向计算产生、反向可能需要的中间状态。
offload
把状态暂时移到另一层存储。
checkpoint
少保存状态,需要时重算;与搬运是不同路径。
试着说给朋友听

先不看公式:用上面的生活场景,说一说这节课想减少哪种浪费、需要付出什么代价。

闯关题

本课中的「activation」指什么?

学完这一段,试着做

用一个小动作确认自己理解了;最后再进入官方题目。

Mission 2 02 / 操作与推演

把一个小例子算到最后

图解原理

先用默认数值手算,再只改一个参数。让结果来检验你的猜想。

  1. 先算腾多少

    激活 12 GiB,保留 4 GiB,搬走 8 GiB,则这部分驻留由 12 降到 4。

  2. 再算往返

    假设有效带宽 8 GiB/s,8 GiB 去程 1 秒、回程 1 秒,总共 2 秒,未计重叠。

  3. 与重算比较

    若重算需要 1.5 秒,在这个简化条件下重算时间更少;实际需要比较可重叠区间和峰值。

动手实验室 / 只在浏览器中演示

腾空间之前,先算一趟往返

改变搬运量和有效带宽,与 1.5 秒的假设重算比较。

教学简化模型:所有数值来自上方规则,不是 GPU 性能实测。播放可以暂停,键盘方向键可调整滑块。

闯关题

搬走 8 GiB、有效带宽 8 GiB/s,再搬回来,串行搬运多久?

学完这一段,试着做

用一个小动作确认自己理解了;最后再进入官方题目。

Mission 3 03 / 纠错与迁移

从会看,走到会写与会判断

图解原理

下面是一段独立的小练习。它把计算关系写清楚,帮助你进入官方题目;不是整份作业的答案。

读懂这段最小 Python

moved_gib, bandwidth_gib_s = 8, 8
roundtrip_s = 2 * moved_gib / bandwidth_gib_s
print(roundtrip_s)  # 2.0

先找输入变量,再找中间量,最后核对注释里的输出。改一个输入,手算后再运行。

最容易踩的坑

只算去程或把链路标称带宽当作有效带宽。搬运可以重叠,但不是默认完全免费。

去官方题目做什么

  1. 到官方 Notebook 阅读题目函数与测试;先写出输入、输出和一个最小例子。
  2. 把本课手算过程转换成实现,先跑最小测试,再检查空输入、边界值或未达门槛的情况。
  3. 记录一个与预期不同的结果,并用本课术语说明原因。

闯关题

同学提出下面的做法,哪一项会导致本课讨论的误判?

学完这一段,试着做

用一个小动作确认自己理解了;最后再进入官方题目。

把理解变成自己的代码

准备好,去官方题目试一试

在本页用小例子建立直觉,再去官方 Notebook 完成实现。先运行你自己的测试,遇到困难时再查看官方提示与参考答案。

前往本课官方 Notebook ↗

这节课会遇到的代码对象

ActivationChunkSpec · ActivationOffloadSummary · summarize_activation_offload · estimate_round_trip_transfer_ms · recommend_offload_policy · compare_offload_vs_checkpointing

先找题目里的输入、输出与 TODO,再把本课的手算过程对应进去;以官方题目中的函数说明和测试为准。

练习来源:Datawhale 官方仓库 · 518cc45。这里的入口直接打开官方版本,不读取或分享你的本地 Notebook。

完成 3 道闯关题后,本关即算完成;作业 checklist 用来辅助你回 notebook 练习。
进度只保存在当前浏览器 localStorage,分享 HTML 不会带走你的记录。
上一关:L41 下一关:L43