跳转至

CPU 与磁盘卸载

本页目录

Offload 在 GPU、CPU 内存以及可选的磁盘之间搬运权重,降低 GPU 上驻留的权重规模,代价是传输延迟;它不能消除激活值的显存需求。下文以 Wan 配置为例,其他模型支持的选项可能不同,应从对应模型的仓库示例开始配置。

选择卸载粒度

配置项 含义
cpu_offload 开启 DiT 的 CPU 卸载
offload_granularity: "block" 按需搬运 Transformer block
offload_granularity: "phase" 按每个 Transformer block 内的 self-attention、cross-attention、FFN 阶段卸载和预取权重
t5_cpu_offload 卸载 Wan 的 T5 编码器
clip_cpu_offload 卸载使用 CLIP 的模型变体的编码器
lazy_load 在支持的配置中启用从磁盘按需加载
num_disk_workers lazy loading 的磁盘加载线程数

将以下字段合并到完整的 Wan 配置,可启用 block offload:

{
    "cpu_offload": true,
    "offload_granularity": "block",
    "t5_cpu_offload": true
}

建议从完整的 CPU block 配置 或磁盘加载配置 开始。使用 run_wan_i2v_lazy_load.sh 前,先修改其中的模型和仓库路径。

内存与组合限制

CPU 卸载仍需足够的主机内存容纳权重和临时缓冲区;磁盘加载还依赖存储容量和吞吐量。分辨率、帧数、权重精度、注意力后端和 VAE 配置都会影响显存峰值,不能只凭卸载开关判断最低显存要求。相关 Wan 设置见低资源部署。

Wan 静态 LoRA 合并不能与 lazy_load 或量化 DiT 同时使用。组合这些选项前,请查看 LoRA 部署。

NUMA 本地 CPU 权重

在已知 GPU NUMA 拓扑的 Linux CUDA 主机上,静态 block offload 可选择将各 rank 的 pinned CPU 权重放到本地 NUMA arena:

{
    "cpu_offload": true,
    "offload_granularity": "block",
    "cpu_offload_numa": true
}

该选项默认为 false,不支持与 lazy loading、张量并行、LoRA、共享权重、contiguous offload,以及 NVFP4/GGUF/Marlin/fp8-pertensor 特殊存储路径组合。仍需满足对应后端的硬件和权重要求。

使用结束后调用 runner.close();Python pipeline 可在 finally 中调用 pipeline.runner.close()。具体约束见服务端 NUMA 说明。

原理介绍可参考 Offload 技术文章。