首页/详情

在 Jetson Thor 上运行 LTX-2 19B:具备完整内存生命周期管理的开源流水线

Reddit r/LocalLLaMA2026/02/09 21:22机翻/自动摘要/自动分类
3 阅读

摘要

本文介绍了一个在 NVIDIA Jetson AGX Thor 上运行 LTX-2 19B 视频生成模型的开源流水线。该流水线实现了 1080p 视频生成,并重点解决了 Jetson AGX Thor 128GB 统一内存带来的内存管理挑战,包括避免无效的 CPU 卸载、手动内存清理、页面缓存问题以及 VAE 解码时的 `torch.no_grad()` 使用。仓库提供了完整的代码、批量渲染脚本、LoRA 支持和可选的 FP8 量化。文章也坦诚了模型在推理步数、负面提示、分辨率和生成速度方面的局限性,并指出该流水线至少需要 128GB 内存。

正文

我一直在 NVIDIA Jetson AGX Thor 上运行 LTX-2(19B 蒸馏模型),并围绕它构建了一个开源流水线。该流水线能够生成带音频、相机控制 LoRA 和批量渲染的 1080p 视频(1920x1088),帧率为 24fps。考虑到在 Jetson 上运行大型视频模型的资料几乎为零,我觉得有必要分享一下。

GitHub 链接:github.com/divhanthelion/ltx2

生成内容

https://reddit.com/link/1r042w1/video/n4ulj0n7zgig1/player

https://reddit.com/link/1r042w1/video/3eerc7tpzgig1/player

视频分辨率为 1920x1088,包含 161 帧(约 6.7 秒),帧率为 24fps,并同步了音频。在 Thor 上,每个片段大约需要 15 分钟进行扩散处理,2 分钟进行 VAE 解码。

关键点:统一内存

Jetson Thor 拥有 128GB 由 CPU 和 GPU 共享的 RAM。这听起来很棒,直到你意识到它破坏了所有标准的内存优化方法:

  • enable_model_cpu_offload() 无效 — CPU 和 GPU 使用同一内存。将张量移动到 CPU 不会释放任何内存。更糟糕的是,卸载钩子会创建引用路径,阻止模型被删除,而之后移除这些钩子会导致模型处于不一致状态,并在 VAE 解码过程中发生段错误。
  • tensor.to("cpu") 是一个空操作 — 物理内存相同。你必须实际使用 del 对象并运行 gc.collect() + torch.cuda.empty_cache()(两次——第二次会捕获第一次释放的对象)。
  • 页面缓存会拖垮你 — safetensors 通过 mmap 加载权重。即使在 .to("cuda") 之后,原始页面仍可能被页面缓存支持。如果在模型存活时调用 drop_caches,内核会驱逐权重页面,导致下一次前向传播发生段错误。
  • 必须使用 torch.no_grad() 进行 VAE 解码 — 否则,PyTorch 会在分块解码过程中构建所有 15+ 个空间块的自动梯度图。在统一内存上,这不会优雅地导致 OOM(内存不足)——而是会发生段错误。我因此浪费了大约 4 个小时。

该流水线采用手动内存生命周期管理:加载所有内容 → 扩散 → 删除 /text encoder/scheduler/connectors → 解码音频 → 删除音频组件 → 在 no_grad() 下进行 VAE 解码 → 删除所有内容 → 清空页面缓存 → 编码视频。每个阶段都有明确的清理和内存报告。

仓库内容

  • generate.py — 包含所有内存管理的主流水线
  • decode_latents.py — 用于从失败运行中恢复的独立解码器(潜在向量会自动保存)
  • 带有进度跟踪和预计到达时间的批量渲染脚本
  • 相机控制 LoRA 支持(推拉/左右平移、上下摇摄、固定)
  • 可选的 FP8 量化(将 内存占用大约减半)
  • 用于 RIFE 帧插值 + Real-ESRGAN 升级的后处理流水线(也已 Docker 化)

所有内容均在 Docker 中运行,避免影响你的系统 Python。NGC PyTorch 基础镜像包含正确的 CUDA 13 / sm_110 构建。

局限性(坦诚说明)

  • 蒸馏模型仅支持 8 个推理步 — 运动效果尚可,但不够流畅。后处理中的帧插值有所帮助。
  • 负面提示无效 — 蒸馏模型使用 CFG=1.0,这在数学上消除了负面提示项。它会静默接受该标志但不起作用。
  • 1080p 是质量上限 — 你可以生成更高分辨率的视频,但模型是在 1080p 下训练的。超过此分辨率会出现空间块接缝和连贯性损失。最好在 1080p 下生成然后进行升级。
  • 每个片段约 15 分钟 — 这是一个在边缘设备上的 19B 模型。速度不快。但它是完全本地化和离线的。

硬件

NVIDIA Jetson AGX Thor,JetPack 7.0,CUDA 13.0。128GB 统一内存。该流水线至少需要 128GB — 在 64GB 下,你需要使用 FP8 + 预计算的文本嵌入才能装载,而且会非常紧张。

如果还有其他人在 Jetson 硬件上运行视频生成模型,我很想交流一下经验。统一内存的陷阱确实存在,而且几乎没有文档说明。

标签