内存与显存:两块东西各装什么 / 全站资源搜索
搜索 更新 2026-10-02
概念 不随版本变化

内存与显存:两块东西各装什么

报错说 out of memory 时,先搞清楚是哪一块不够。处理办法完全不同。

机器上有两块「内存」:系统内存(RAM)与显卡显存(VRAM)。模型、中间数据、缓存都会在这两块之间流动,报错信息里的 out of memory 指的是哪一块,决定了你该怎么处理。

两块内存的分工

项装什么不够时的表现
系统内存(RAM)程序本身、模型文件的读取缓冲、准备送进显卡的数据、被挪出显存的模型系统变卡、进程被杀、报错里出现系统内存或页面文件字样
显卡显存(VRAM)当前正在计算的模型、每一步的中间数据、解码阶段的缓冲报错里出现 CUDA、显存分配失败、device 相关字样

怎么判断是哪块不够

  • 看报错原文里的关键词:出现 CUDA、device、显存分配相关的字样,多半是显存
  • 出现系统内存、页面文件(paging file)、被系统终止,多半是系统内存
  • 两块都不宽裕时,会先耗尽一块、再连带把另一块拖垮,这时要看最先出现的那条报错
  • 同一个工作流,小图能跑、大图就挂,通常是显存;一直加载不动、系统卡死,通常是内存

各自怎么腾地方

  1. 显存不够:先降中间数据:把批量改回 1、分辨率降一档。这是见效最快的两步。
  2. 显存不够:再换更省空间的模型版本:量化版本、更小的模型,都能直接降低常驻占用。
  3. 内存不够:关掉占内存的程序:浏览器标签、播放器、其他大程序。系统内存是全局共享的。
  4. 内存不够:看页面文件设置:系统内存不足时靠页面文件顶,但它远慢于内存。页面文件被关掉或太小,就会直接报错。
  5. 都不够:错开时间跑:先跑出中间结果落盘,再在下一步读回来,避免所有东西同时驻留。

常见误解

常见误解
  • 显卡显存大就一定不会报内存错
    模型加载、预处理、把数据送进显卡都要经过系统内存。显存再大,内存不够照样报错。
  • 看到任务管理器里显存还有空余就觉得不该报错
    分配器需要连续空间,碎片化时总量够也会失败。
  • 把两块内存的报错混着处理
    处理办法不同:显存靠降低单次计算量,内存靠减少同时驻留的东西。先分清再动手。

相关条目