跳到正文
cinemaOS

常见问题解决

DaVinci Resolve 在 Mac 上提示 GPU 内存已满怎么办

Mac 上的 DaVinci Resolve 提示 GPU memory full?原因是什么,先改哪些设置(时间线分辨率、降噪、节点、素材),以及如何避免再次出现。

当 Mac 上的 DaVinci Resolve 提示 GPU 内存已满(GPU memory full)时,意思是当前这一帧的图像处理所需的显存,超出了 Resolve 能拿到的量。最快的解决办法按顺序是:工作时降低时间线分辨率,减轻时域降噪,精简或缓存繁重的节点,以及用优化媒体或代理媒体播放。很多 DaVinci Resolve GPU 内存不足的情况,前两步就够了。下面讲清楚为什么会出现、怎么找到触发错误的片段,以及怎么防止它再次出现。

提示信息本身通常会建议降低时间线分辨率或减少校正。把这句话当真:这正是两个最有效的调节手段。

为什么 Resolve 在 Mac 上会耗尽 GPU 内存

Resolve 几乎所有的图像处理都在 GPU 上完成。你播放的每一帧都要先解码,缩放到时间线分辨率,再依次经过片段上的每个节点、效果和 Fusion 工具。每一步都可能在内存里保存一份自己的帧副本,有些效果还会同时保存好几帧。

能用的空间取决于你的 Mac。

  • Apple silicon。 CPU 和 GPU 共用同一块统一内存。没有自带固定容量的独立显卡,但 macOS 会限制 GPU 能使用这块内存的多少,而且 Mac 上开着的其他东西也都从同一块内存里取用。一台 16GB 的机器同时开着 Resolve、浏览器和聊天软件,余量会比包装盒上的数字所暗示的少得多。
  • 配备独立显卡的 Intel Mac。 显卡有自己固定的显存,笔记本上往往不多。一旦占满,这一帧就无处可放。

所以这个错误很少是 bug。它是一道算术题:帧的尺寸,乘以需要完整帧副本的操作数量,再和那一刻空闲的内存相比。

找到触发错误的片段

改设置之前,先记下错误出现在哪里。它几乎总是出现在特定的片段上,而不是整条时间线。

  • 从头播放时间线,标记出现警告或红色播放指示的片段。
  • 在每个片段上打开调色页面,查看节点树。数一数节点,留意繁重的工具:时域或空域降噪、魔术遮罩(Magic Mask)、面部修饰(Face Refinement)、镜头模糊类效果、片段属性(Clip Attributes)中的超级缩放(Super Scale),或者 Fusion 合成。
  • 逐个停用节点(选中节点并将其关闭),直到播放恢复。重新启用后让错误回来的那个节点,就是头号嫌疑。

这样你就不必为了修三个镜头而降低整个项目的质量。

先改什么

1. 工作时降低时间线分辨率

这通常是最有效的办法。打开项目设置(Project Settings),进入主设置(Master Settings),把时间线分辨率调低,例如用 1920x1080 代替 UHD 或 6K。这样每个节点和效果处理的帧都更小,内存占用会明显下降。如果某条时间线使用的是自己的设置而不是项目默认设置,就去这条时间线的时间线设置(Timeline Settings)里修改分辨率。

Resolve 与分辨率无关,所以尺寸调整、窗口和跟踪都会随之缩放。有两点需要注意。一些以像素为单位的效果,比如模糊半径或锐化,在另一个分辨率下可能看起来略有不同。另外,在已经调好色的项目上更改时间线分辨率,最稳妥的做法是在项目或时间线的副本上操作。最终渲染之前,把分辨率改回交付尺寸,并检查那些繁重的镜头。

如果你不想动项目,可以在播放(Playback)菜单里把时间线代理分辨率设为一半或四分之一。这只降低播放时的处理分辨率,对渲染没有任何影响。

2. 控制降噪

时域降噪是这个错误最常见的原因之一。它会把当前帧和相邻帧进行比较,所以每多让它分析一帧,GPU 内存里就多一帧全分辨率的画面。

  • 减少时域设置中的帧数。对于噪点不重的素材,帧数少一些往往看起来几乎一样。
  • 工作时把运动估计(Motion Estimation)设为较快的模式。
  • 如果同时使用时域和空域降噪,检查这个镜头是否真的两者都需要。
  • 把降噪放在节点树靠前的单独节点上,然后缓存这个节点(右键点击节点,开启节点缓存,同时在播放菜单中把渲染缓存设为“智能”或“用户”),这样 Resolve 只渲染一次,不必每次都重新计算。

时域和空域降噪属于 DaVinci Resolve Studio 的功能,所以如果你用的是免费版,仍然出现这个错误,就看看下面的其他原因。

3. 数一数节点

一长串简单的串行校正花不了多少资源。一个片段上叠几个繁重的工具,代价就大了。常见的罪魁祸首有魔术遮罩、面部修饰、超级缩放、多个柔化值很大的跟踪窗口,以及第三方 OpenFX 插件。

  • 把做同一件事的简单校正合并到一个节点里。
  • 缓存含有繁重效果的节点,或者用片段右键菜单中的原位渲染(Render in Place)把效果烘焙进去。Resolve 会保留与原始片段的链接,日后需要修改调色时可以回到原始片段。
  • 检查时间线级节点和调整片段(Adjustment Clip)。应用到整条时间线的调色会作用于下方的每一个片段,成本成倍增加。
  • 在播放菜单中把渲染缓存设为“智能”或“用户”,让 Resolve 把完成的结果存到磁盘上,而不是每次播放都重新计算。

4. 使用优化媒体或代理媒体

当素材是高分辨率的繁重长 GOP 或 RAW 格式时,优化媒体和代理媒体帮助最大。在媒体池中右键点击片段,生成优化媒体或代理媒体,然后确认播放菜单已设置为在可用时使用它们。在主设置中可以选择优化媒体的分辨率和格式,比如某种 ProRes 或 DNxHR。

对它能解决什么要有现实的预期。优化媒体降低了解码成本,有助于播放。但它不会减少繁重的降噪节点或 Fusion 合成在完整时间线分辨率下对 GPU 的需求。这就是为什么时间线分辨率和节点选择要放在前面。

Mac 上值得检查的设置

有几项偏好设置和习惯会影响 Resolve 实际能用多少内存。

  • GPU 处理模式。 在偏好设置(Preferences)的系统(System)下的内存和 GPU(Memory and GPU)中可以看到,Mac 上的 Resolve 使用 Metal。除非有理由更改,否则让 GPU 选择保持自动。
  • 关掉其他繁重的应用。 开了很多标签页的浏览器、其他视频应用和 3D 工具,在 Apple silicon 上都在争夺同一块统一内存。
  • 少开时间线和 Fusion 合成。 打开着的 Fusion 合成和多余的时间线可能会占用内存。不用的就关掉。
  • 外接显示器。 高分辨率外接显示器同样会占用 GPU 内存。在配置较低的机器上,在 5K 或 6K 屏幕上开一个大检视器会加重负担。
  • 有计划地更新。 Resolve 和 macOS 的更新经常会改变 GPU 的表现。先在 DaVinci Resolve 支持页面 阅读发行说明,在两个项目之间更新而不是在项目中途更新,并先备份你的项目库。

重启 Resolve 可以清掉长时间工作积累下来的内存。如果错误只在一天快结束时出现,重启后就消失,那问题更可能出在积累的缓存和开着的时间线上,而不是某一个繁重的片段。

怎样防止它再次出现

这个错误往往会在同类项目上反复出现。几个习惯就能避免大部分情况。

  • 一开始就定好工作分辨率。 如果你的 Mac 吃力,4K 或更大的项目也用 HD 剪辑和调色,审片和渲染时再切换到交付分辨率。
  • 降噪只做一次,而且早做。 按摄影机或按场景决定降噪参数,放在缓存过的节点上,不要每一轮都去调。
  • 有意识地搭建节点树。 使用统一的节点树结构,清楚繁重工具放在哪里,并养成缓存这些节点的习惯。
  • 导入时就为繁重格式生成优化媒体。 在开始剪辑之前完成。
  • 了解你的机器上限。 在内存较小的 Mac 上,计划同时使用更少的繁重效果。Apple silicon 的内存之后无法升级,所以如果你要买新 Mac 来调色,值得优先考虑统一内存。

如果在普通的时间线、轻度调色下错误依然出现,就把详细信息(Resolve 和 macOS 版本、Mac 型号、内存、编码格式以及出错的节点树)发到 Blackmagic 的论坛或技术支持。

常见问题

降低时间线分辨率会影响最终渲染质量吗?

只要在渲染前改回来就不会。Resolve 与分辨率无关,你的调色、尺寸调整和窗口都会随之缩放。改回来之后,检查一下带有模糊或锐化等基于像素的效果的镜头,因为它们可能看起来略有不同。

在 Apple silicon 上加内存能解决 GPU memory full 吗?

更多的统一内存能给 GPU 更多空间,所以内存更大的 Mac 会更晚碰到上限。但它不会消除高分辨率下繁重效果的成本,所以在更大的机器上,同样的习惯依然适用。

免费版 Resolve 更容易出现这个错误吗?

本身并不会。免费版缺少一些最繁重的工具,比如时域降噪,所以处理同样的素材时,它出现这个错误的次数可能反而更少。两个版本的原因和解决办法都一样。

问题出在工具本身时

Resolve 的大多数 GPU 内存错误都能用上面的步骤解决,Resolve 依然是 Mac 上最强的调色工具之一。如果更大的问题是,对你的工作来说 Resolve 太重或太难学,DaVinci Resolve 太复杂?只想剪辑的实用指南 分析了原因,Mac 剪辑师的 DaVinci Resolve 替代方案 则比较了包括 cinemaOS 在内的现实选择,并直接说明它们的局限。