简介:本文说明如何判断显卡是否满足需求,并依次完成环境搭建、权重校验、量化与显存卸载配置、推理验证和报错排查。读完后,你能估算自己硬件的显存余量,复现一次带立体声音轨的视频生成,并知道显存不足或速度过慢时从哪里入手。
本教程以一款开源多模态视频生成模型为例。该模型可以根据文本输入一次生成带立体声音频的视频。具体的仓库地址、版本号和权重文件名请以官方发布页为准。下文用尖括号标出需要替换的位置,例如 <官方仓库地址>。
完成本教程后,你应能做到三件事:
本方案适合离线实验、涉及隐私的素材处理、模型能力评估和小批量内容生产。它不适合高并发在线服务,也不适合对延迟有严格要求的生产接口。
| 使用场景 | 参考硬件 | 预期情况 |
|---|---|---|
| 功能验证、流程打通 | 8GB 显存,32GB 内存 | 可以运行,但需要大量卸载,速度慢 |
| 中短时长视频,小批量生产 | 24GB 显存,32GB 以上内存 | 量化加部分卸载后可以稳定运行 |
| 高精度生成,多卡并行 | 80GB 及以上显存,多卡 | 分辨率和时长的选择空间较大 |
以上数值来自社区经验和参考部署,实测条件(分辨率、帧数、量化方式)并未全部公开。你的结果可能与之不同,请以自己的实测为准。
权重显存可以粗略按下面的公式估算:
权重显存 ≈ 参数量 × 每个参数占用的字节数
16 位浮点格式每个参数占 2 字节,8 位量化占 1 字节,4 位量化占 0.5 字节。因此 8 位量化后权重体积约为原来的一半,4 位量化后约为四分之一。
原文给出的数据是:完整精度权重约 124GB,参考部署使用 4 张 80GB 显卡,合计 320GB 显存。下载前请核对官方页面上的权重体积,因为该数字可能随版本变化。
权重只是其中一部分。文本编码器、视频解码模块、音频模块,以及推理过程中的中间激活值和注意力缓存,都会额外占用显存。视频的帧数和分辨率越高,中间张量越大,峰值显存也越高。因此,只看权重体积无法判断能否运行,必须用实测的峰值显存来确认。
下面是量化与卸载策略的取舍参考:
| 策略 | 显存占用 | 生成速度 | 输出质量 | 主要风险 |
|---|---|---|---|---|
| 高精度,不卸载 | 高 | 快 | 参考基准 | 显存不足时直接报错 |
| 8 位量化 | 中 | 中 | 通常接近基准 | 依赖量化实现的兼容性 |
| 4 位量化 | 低 | 较慢 | 可能下降,需要对比样例 | 细节和音画同步可能变差 |
| 分模块卸载到内存 | 低 | 慢 | 不受影响 | 主机内存占用高,可能触发磁盘交换 |
先确认显卡型号、显存总量、驱动版本和主机资源:
nvidia-sminvidia-smi --query-gpu=name,memory.total,driver_version --format=csvfree -hdf -h .
预期结果:
memory.total 应接近你的显卡标称值。如果与预期不符,后续所有配置都会出错。free -h 中可用内存建议不低于 32GB。df -h . 显示的剩余空间建议不低于 150GB,用于权重、缓存和输出文件。多卡环境下,还要确认每张卡都能被 nvidia-smi 列出。
版本依赖的顺序是:驱动、CUDA 运行时、PyTorch、模型依赖。顺序反了,容易出现无法调用 GPU 的问题。
请把版本记录在下表中,方便以后复现:
| 项目 | 你的版本 | 来源 |
|---|---|---|
| 显卡驱动 | 从 nvidia-smi 获取 |
本机 |
| Python | 从 python3 --version 获取 |
本机 |
| PyTorch | 安装后获取 | 官方安装命令 |
| 模型仓库 commit | 从 git rev-parse HEAD 获取 |
官方仓库 |
PyTorch 的安装命令请在 pytorch.org 的安装选择器中生成,它会根据你的操作系统和 CUDA 版本给出正确的索引地址。
python3 -m venv ~/venvs/video-gensource ~/venvs/video-gen/bin/activatepython -m pip install --upgrade pip
安装 PyTorch。下面命令中的 cu124 只是示例,请替换为与你驱动匹配的索引:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
验证 GPU 是否可用:
python -c "import torch; print(torch.__version__, torch.cuda.is_available(), torch.cuda.get_device_name(0))"
预期输出中 torch.cuda.is_available() 为 True,并显示你的显卡名称。如果显示 False,先回到 4.2 节核对版本,不要继续后面的步骤。
克隆官方仓库,并固定到一个明确的版本:
git clone <官方仓库地址> video-modelcd video-modelgit checkout <版本标签或 commit>pip install -r requirements.txt
安装完成后,记录仓库的 commit 号,写入你的实验日志:
git rev-parse HEAD
只从官方发布页下载权重。下载完成后计算 SHA-256:
sha256sum <权重文件名>
把输出的哈希值与官方发布页上的值逐字比对。两者一致才可以继续。不一致时,说明文件下载不完整或已被修改,应删除后重新下载。
如果官方没有提供校验值,请保存你计算出的哈希值,并在日志中注明来源。这样以后重新下载时,你可以确认文件是否相同。
下载前,阅读模型许可协议,确认以下三点:
许可条款可能随版本更新。使用前以官方页面的最新文本为准。
选择精度时,先试能放下的最高精度,再逐级降低。推荐顺序是:
精度和量化相关的参数名称因仓库而异。请在仓库的 README 或配置文件中查找,常见的关键词包括 dtype、quant 和 precision。找到参数后,记录它的取值,并与显存实测结果一起写入日志。
卸载的作用是把暂时不用的模块从显存移到主机内存。它能降低显存峰值,但会增加数据传输时间。
配置时建议按以下顺序进行:
卸载相关的开关通常位于推理脚本的参数或配置文件中,具体名称以仓库文档为准。
卸载会占用主机内存。内存不足时,系统会把数据写入磁盘交换区,速度会明显下降。运行时可以打开另一个终端,持续观察显存和内存:
watch -n 1 nvidia-smifree -h
第一次运行时,先用较低的分辨率、较短的时长和较少的帧数,确认流程能走通。验证通过后,再逐步提高参数。
推理命令的参数名称请以仓库文档为准。命令的结构类似下面这样:
python <推理脚本> --prompt "雨天的窗台,一只猫慢慢走过,背景有雨声" --output out/test.mp4
生成完成后,检查文件中是否同时包含视频流和音频流:
ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,duration -of default=nw=1 out/test.mp4
预期结果:输出中有一条 codec_type=video 和一条 codec_type=audio。如果只有视频流,请检查导出参数和容器格式,确认输出设置包含音频。
除了文件结构,还要人工检查:
运行结束后,把以下数据写入实验日志:峰值显存(取运行期间 nvidia-smi 的最大值)、生成耗时、分辨率、帧数、精度与卸载配置。这些数据是以后判断硬件是否满足需求的依据。
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
CUDA out of memory |
分辨率或帧数过高,或未启用卸载 | 降低分辨率和帧数,启用卸载,改用更低位宽的量化 |
torch.cuda.is_available() 返回 False |
驱动与 PyTorch 的 CUDA 版本不匹配 | 对照 nvidia-smi 中的 CUDA Version,重装对应版本的 PyTorch |
| 生成极慢,磁盘持续读写 | 主机内存不足,系统发生交换 | 关闭其他程序,减少卸载层数,或增加内存 |
| 权重加载失败 | 文件不完整或版本不匹配 | 重新计算 SHA-256 并与官方值 |