RTX 5500 MIG 踩坑记录:切分之后模型跑不起来,排错整整一下午

最近工作室新增 RTX5500,初衷就是想用 MIG 把单卡拆成几个独立实例,分给不同设计师同时跑 SDXL、视频预览任务,避免一人占满整张卡其他人卡死。 本来以为跟着官方文档敲几条命令就能搞定,结果配置完 MIG 实例之后怪事不断: 有的实例 Pytorch 识别正常,但是加载大模型直接报 CUDA error;有的实例只能跑生图,跑 Luma 视频模型直接闪退;甚至出现同一个脚本,在主 GPU 上能跑,切到 MIG 子实例就 OOM。

网上关于 RTX5500 MIG 的教程大多只写怎么创建实例,很少讲这些隐性坑,我把踩过的问题和排查顺序整理出来,避免大家重复浪费时间。

先简单回顾:我一开始的操作(标准但不完整)

很多教程都是这一套,我最开始也是这么操作:

bash 复制代码
# 开启MIG模式
sudo nvidia-smi -mig 1
# 重启
sudo reboot
# 创建MIG实例,24G版本5500一般切4个6G实例
sudo nvidia-smi mig -cgi 19,19,19,19 -C
# 查看实例
nvidia-smi

执行完看 nvidia-smi,4 个实例都正常显示,nvidia-smi -L也能看到 4 个独立 GPU UUID。 当时以为大功告成,直接给小伙伴分配 UUID 去跑模型,然后问题就来了。

坑 1:MIG 实例不支持部分高显存模型的张量并行

现象:SDXL 基础版本勉强能加载,带 LoRA、ControlNet 一起上就报错;视频模型直接初始化失败,报错信息很模糊,不是常规 OOM。 原因:MIG 切分之后,每个实例是硬件隔离的资源组,显存、算力单元被物理划分,不是简单的软件显存限制。 类型 19 的实例单实例只有 6G,很多人忽略一件事:模型标注显存占用 10G,不代表运行时峰值只有 10G,CUDA 上下文、KV 缓存、临时张量还会额外占用空间。

重点提醒:RTX5500 的 MIG 配置方案不是随便切 4 份。 如果团队要跑视频生成、大尺寸生图,不建议一刀切 4 个 19 实例。可以选择 2 个 12G 实例,留给每个实例足够的峰值余量。 我最开始就是贪多,想多开几个实例,结果每个实例都 "看上去能用,重载就崩"。

修复方案:删掉原有实例,重新规划配置

bash 复制代码
# 删除全部MIG实例
sudo nvidia-smi mig -dci
# 创建2个12G实例
sudo nvidia-smi mig -cgi 14,14 -C

调整之后,跑带 ControlNet 的 SDXL 稳定很多,视频预览任务也能正常加载。

坑 2:容器部署时,MIG UUID 传递错误,容器内识别不到子卡

现象:宿主机 nvidia-smi 能看到 MIG 实例,但是 docker 容器启动之后,只能看到整张卡,或者随机拿到实例,无法固定分配。 排查:用--gpus参数的时候,很多人只写--gpus all,MIG 场景下不能这么写,必须指定 MIG 的 UUID。 ✅ 正确写法示例:

bash 复制代码
docker run --rm --gpus "mig-xxxxxxxxxxxx" pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime

另外一个细节:nvidia-container-toolkit 版本过低,对新版 Enterprise 驱动下的 MIG 支持有 bug。 如果你的容器经常识别异常,优先升级 container-toolkit,而不是反复重建 MIG 实例。

坑 3:开启 ECC 之后,MIG 可用显存进一步缩水

这个是之前选型的时候没算仔细的。 RTX5500 开启 ECC,本身会预留一部分显存用于校验;再叠加 MIG 切分开销,标称 6G 的实例,实际可用显存会再少几百 MB。 之前我在开启 ECC 的前提下,给 6G 实例跑刚好卡 6G 的模型,总是莫名其妙 OOM,关掉 ECC 就能跑。 取舍建议:

  • 跑对外交付、长时间批量渲染、商用成片:ECC 保留,MIG 实例显存预留冗余;
  • 只给设计师快速试草图、短时间测试:可以临时关闭 ECC,换取更多可用显存,但要承担隐性画面出错风险。

查看 ECC 状态命令:

css 复制代码
nvidia-smi -q | grep ECC

坑 4:MIG 模式开启后,不能直接跑需要完整 GPU 的工具

现象:关闭 MIG 之前一切正常,开启 MIG 全局模式之后,部分渲染插件、CUDA 测试工具直接初始化失败。 原理:MIG 是全局模式,一旦开启 mig 1,整张卡工作在 MIG 模式,不再存在完整的原始 GPU 设备。 如果你有时候需要跑占用整张卡的大视频任务,有时候又要切分给多人,就很麻烦。 解决思路二选一:

  1. 两套调度方案:需要单卡全速跑大任务时,关闭 MIG(nvidia-smi -mig 0),重启;多人协作时再打开;缺点是需要重启机器,不方便;
  2. 多卡方案:一张 RTX5500 常开 MIG 给设计师日常小任务,另外一张卡不开启 MIG,专门跑重型视频生成任务。 我们工作室最后选了第二种,不用反复切换 MIG 重启服务器,运维省心很多。

排错流程总结(以后出问题按这个顺序查)

  1. 确认当前是 MIG 全局开启状态,确认实例类型、单实例显存规格;
  2. 核对 ECC 是否开启,估算模型峰值显存,不要只看模型标称显存;
  3. 宿主机先用CUDA_VISIBLE_DEVICES=mig-UUID本地跑脚本验证,先排除宿主机层面问题;
  4. 如果是 docker 环境,检查 nvidia-container-toolkit 版本,确认启动参数指定正确 MIG UUID;
  5. 检查驱动分支:MIG 必须用 NVIDIA Enterprise 驱动,Studio 驱动对 MIG 支持不全。

最后的一点感想

MIG 这个功能,对小工作室算力共享确实很香,但是它不是 "凭空多出几张显卡"。 它是资源划分,有对应的代价:实例规格限制、显存开销、模式切换成本。很多教程只展示它便利的一面,很少提限制。 如果你的团队大部分任务都是重型 AI 视频生成,其实 MIG 收益有限;只有大量轻量生图、预览、并行小任务的时候,RTX5500 的 MIG 价值才能发挥出来。

大家在用 RTX5500 或者 A 系列专业卡开 MIG 的时候,有没有碰到过其他奇怪报错?欢迎评论区一起交流。

相关推荐
Lank_M1 小时前
AI 放大后的图更清楚,但它不能当原图入库
前端
Swot1 小时前
SvelteKit 数据流研究:`+page.js` 和 `+page.server.js` 到底谁在跑,数据又去了哪儿
前端·后端
用户4147679304151 小时前
Windows 触摸屏上 Swiper 轮播滑不动?可能是内部滚动容器抢走了你的手势
前端
张明君644511 小时前
从一个 Referer 引发的 403,到 SSR 服务失稳:Astro 流式渲染与缓存失效分析
前端
律宏阔1 小时前
微信小程序 + Taro + TDesign 去掉 [&&&],让普通 Tailwind 类接管局部样式
前端·微信小程序·taro
费曼学习法1 小时前
把 3 个内部服务封装成 MCP Server 的工程复盘:进程模型、超时与错误契约
前端
Captaincc1 小时前
转译:《软件工程师现在该怎么办》
前端·后端·ai编程
天才熊猫君1 小时前
给 Vue 的 reactive 套 Proxy,为什么响应式会失灵?
前端·javascript
htzyl2061 小时前
别急着上微前端:从 6 个场景倒推 Module Federation 2.0 与 qiankun 2.x 的选型
前端·微服务