工作流工程
AIGC 模型精度、量化、显存与多卡推理知识框架
目标:记录概念关系和检索大纲,细节后续按关键词查阅。
1. 先区分四个层级
AIGC 推理优化
├─ 数值精度 / 数据类型
│ ├─ FP32
│ ├─ FP16
│ ├─ BF16
│ ├─ FP8
│ └─ INT8 / INT4
│
├─ 量化方案
│ ├─ INT8 / INT4
│ ├─ GGUF Q8 / Q6 / Q5 / Q4
│ ├─ AWQ
│ ├─ GPTQ
│ └─ NVFP4 等
│
├─ 文件格式
│ ├─ safetensors
│ └─ GGUF
│
└─ 显存与并行策略
├─ CPU / Layerwise Offload
├─ Model Parallel
├─ Tensor Parallel
├─ Sequence Parallel
├─ Data Parallel
└─ FSDP / ZeRO这些概念经常被混在一起,但属于不同层级。
2. FP16、BF16、FP8、INT8
FP16 / BF16
目前大模型训练和推理中的常见高精度基准。
- FP16:尾数精度更高
- BF16:指数范围更大
- 大模型训练通常更偏向 BF16
- AIGC 推理中二者都很常见
FP8
目前大型 DiT、图像和视频生成中非常重要。
主要意义:
- 相比 FP16/BF16 权重显存约减半
- 通常比更激进的低 bit 量化更容易保持质量
- 新 GPU 对 FP8 Tensor Core 支持较好
- 在模型、Kernel 和硬件支持完善时,是很重要的性能甜点位
需要注意:
FP8 权重减半不等于推理速度翻倍,实际性能取决于 Kernel、硬件和数据搬运。
INT8 / INT4
属于整数低精度量化。
不能简单理解为:
INT8 一定优于 FP8
或
INT8 一定比 GGUF Q8 好因为实际差异还取决于:
- per-tensor / per-channel
- group size
- scale
- calibration
- outlier handling
- activation 是否量化
- mixed precision 策略
- GPU Kernel
所以“8 bit”只是精度等级,不代表具体算法相同。
3. GGUF 与 Q8 / Q6 / Q5 / Q4
GGUF 首先是一个模型文件 / Tensor 存储格式,本身不是某一种量化。
GGUF 中可以保存:
F16
BF16
Q8
Q6
Q5
Q4
……常见 GGUF 量化:
Q8_0
Q6_K
Q5_K_M
Q5_K_S
Q4_K_M
Q4_K_SQ 后面的数字大致对应权重的平均 bit 数,但实际 bits-per-weight 会因为 scale、metadata、分组等略高。
大致可以理解:
| 格式 | 大致权重位宽 |
|---|---|
| FP16 | 16 bit |
| Q8 | ~8 bit |
| Q6 | ~6-7 bit |
| Q5 | ~5-6 bit |
| Q4 | ~4-5 bit |
K-Quant
类似:
Q4_K_M
Q5_K_M
Q6_K不是简单地把所有 Tensor 统一压成相同 bit。
通常涉及:
- 分组量化
- 不同 Tensor 使用不同精度
- 敏感层保留更高精度
- mixed quantization
S / M 一般对应更偏体积或更偏质量的策略。
后续可查:
GGUF K-quants
Q4_K_M
Q5_K_M
Q6_K
bits per weight4. GGUF Q8 和普通 INT8 不能直接等同
虽然两者都是 8bit 级别,但可能在以下方面完全不同:
Group Size
Scale
Per-channel / Per-group
Calibration
Outlier Handling
Mixed Precision
Dequantization
Kernel所以:
GGUF Q8 ≠ 任意 INT8 方案同样:
INT4 ≠ GGUF Q4比较量化方案时应该同时比较:
质量
显存
实际推理速度
Kernel 支持
模型架构适配5. 为什么 GGUF 不一定是 NVIDIA GPU 上最优方案
GGUF / GGML / llama.cpp 的重要优势一直包括:
- CPU 推理
- CPU + GPU 混合推理
- 跨硬件兼容
- 灵活 Offload
- 低 bit 模型存储
它不一定针对 NVIDIA Tensor Core 做最激进的性能优化。
在纯 NVIDIA GPU AIGC 推理中,某些场景可能更适合:
FP8
INT8
AWQ
NVFP4
其他原生 Tensor Core 量化因此 GGUF 更应该理解为:
通用、灵活、低显存友好的量化体系,而不是所有场景下性能最强的量化体系。
6. 显存不足与 Offload
常见层级:
VRAM
↓
System RAM
↓
Swap / Pagefile / SSD通常所谓 Offload 指:
GPU VRAM ↔ CPU RAM不是直接把 GPU 权重放到 SSD。
主要瓶颈是 PCIe 数据搬运。
需要关注:
GPU Memory Bandwidth
PCIe Bandwidth
Pinned Memory
Prefetch
Layerwise Offload如果 RAM 也不足、开始频繁使用 Swap/Pagefile,性能会严重下降。
7. Layerwise Offload
大型 DiT / LLM / 视频模型常用。
基本思想:
当前计算层 → GPU
暂时不用的层 → RAM而不是整个模型频繁整体换入换出。
优化方向:
- pinned memory
- asynchronous copy
- prefetch
- layer buffer
- 保留部分层常驻 GPU
核心目标:
在显存不足的情况下减少 GPU 等待 PCIe 数据的时间。
8. 多 GPU 显存是否能“相加”
双 4090:
24GB + 24GB物理上仍然是两个独立 VRAM。
但可以通过模型分片利用总显存,因此:
可以运行单卡装不下的模型,但不是自动获得一块统一的 48GB 显存。
区别非常重要:
Unified Memory Pool
≠
Distributed Model Across GPUs是否可以有效使用两卡,取决于框架和模型是否支持对应并行策略。
9. Model Parallel
最基础的模型分层:
GPU0
Layer 0 ~ N
GPU1
Layer N+1 ~ M作用:
- 扩大单模型可用总显存
- 让单卡装不下的模型运行
问题:
- GPU 间需要传输 Activation
- Pipeline 利用率可能不高
- PCIe 通信可能成为瓶颈
10. Tensor Parallel
将同一层内部的 Tensor / Matrix 分到多张 GPU:
Weight Matrix
├─ GPU0
└─ GPU1两卡同时计算,再进行:
AllReduce
AllGather
ReduceScatter适用于大型 Transformer / LLM。
优势:
- 多 GPU 同时计算同一层
- 可以同时获得显存分片和计算并行
问题:
- 通信频繁
- 对高速 GPU interconnect 更敏感
- 双 4090 只能依赖 PCIe,没有 NVLink
11. Sequence Parallel
对于 Transformer / DiT / 视频生成尤其重要。
将序列维度拆分到多 GPU:
Sequence / Tokens
├─ GPU0
└─ GPU1在视频模型里,Sequence 可能对应:
- Spatial Tokens
- Temporal Tokens
- Frames
- Patch Tokens
相关关键词:
Sequence Parallel
Ulysses
Attention Parallel
Context Parallel这类方法对于长序列视频 DiT 很有价值。
12. Data Parallel
每张卡保留完整模型:
GPU0 → Batch A
GPU1 → Batch B主要作用:
- 提升训练吞吐量
- 提高批量推理吞吐量
不能解决:
单个模型本身超过单卡显存的问题。
13. FSDP / ZeRO
主要用于训练。
训练显存不只有模型参数,还包括:
Parameters
Gradients
Optimizer States
ActivationsFSDP / ZeRO 会把这些状态分片到不同 GPU。
重点关键词:
PyTorch FSDP
DeepSpeed ZeRO-1
ZeRO-2
ZeRO-3
Optimizer State Sharding
Parameter Sharding以后做大模型微调、蒸馏、多 GPU 训练时重点学习。
14. 多 GPU 的价值分类
双 GPU 的价值不能只理解成“显存相加”。
扩展模型容量
Model Parallel
Tensor Parallel
Sequence Parallel
FSDP解决:
单卡装不下加速单任务
Tensor Parallel
Sequence Parallel
Pipeline Parallel效果取决于:
计算量 / 通信量比例
PCIe 带宽
模型结构
Kernel
框架实现因此双卡不意味着速度 ×2。
提高总吞吐量
最简单稳定:
GPU0 → Task A
GPU1 → Task B例如:
GPU0 → 视频生成
GPU1 → 图片 / LLM / Upscale对于个人 AI 工作站非常实用。
15. PCIe 与 NVLink
没有 NVLink 不代表无法多 GPU。
双 4090 可以通过 PCIe 通信。
主要问题是:
GPU ↔ GPU Bandwidth会限制:
- Tensor Parallel
- Sequence Parallel
- Pipeline Parallel
- Activation Transfer
因此:
多 GPU 是否有意义,要看计算量是否足以覆盖通信成本。
后续可查:
PCIe Peer-to-Peer
CUDA P2P
NCCL
AllReduce
NVLink vs PCIe16. MiniMax H3 这类大型视频模型
大型视频 DiT 是典型的显存和并行案例。
如果高精度 DiT 权重约 60GB+:
单 4090 24GB无法完整加载。
双 4090 总 VRAM 48GB,也无法直接把全部 BF16 / FP16 权重常驻 GPU。
常见解决方案:
BF16 / FP16
+
双 GPU 并行
+
Layerwise Offload
+
大容量 RAM或者:
FP8 / INT8
+
双 GPU
+
Sequence / Tensor Parallel后者可以显著降低 CPU Offload 压力。
17. H3 双 4090 的几类思路
BF16 / FP16 + 双卡 + Offload
BF16
↓
GPU0 + GPU1
↓
剩余 Layer → RAM优势:
- 尽可能保持原始精度
问题:
- RAM 需求高
- PCIe Streaming 明显
- 实际速度受 Offload 影响
FP8 / INT8 + 双卡并行
Quantized H3
↓
GPU0 + GPU1
↓
Sequence / Attention / Tensor Parallel优势:
- 更多权重常驻 GPU
- 减少 RAM ↔ VRAM 搬运
- 更适合作为长期生产工作流
属于比较值得重点研究的方向。
更激进量化 + Offload
例如:
NVFP4
GGUF
INT4进一步降低显存要求。
重点需要验证:
质量损失
Kernel 性能
推理速度
模型兼容性18. ComfyUI / 视频生成真正值得研究的优化方向
工作流优化核心可以分为:
模型层
FP16 / BF16 / FP8 / INT8 / FP4
GGUF
Model Loader
Attention Backend显存层
CPU Offload
Layerwise Offload
Pinned Memory
VAE Tiling
Model Unload
Cache计算层
Flash Attention
SageAttention
Tensor Parallel
Sequence Parallel
Attention Parallel生成策略
Resolution
Frames
Steps
Sampler
CFG
Latent Size后处理
Upscale
Frame Interpolation
VAE Decode
Video Encode本质是在权衡:
质量
速度
显存19. 视频模型为什么尤其适合研究显存优化
视频模型除了空间维度,还有时间 / 序列维度,因此 Attention 和 Activation 成本明显增加。
值得关注:
Resolution
Frame Count
Sequence Length
Attention Complexity
Activation Memory常见优化路线:
较低分辨率 / 帧数进行 Diffusion
↓
Upscale
↓
Frame Interpolation
↓
视频后处理相比直接高分辨率、高帧数扩散,通常效率更高。
20. 分析一个大型 AIGC 模型时的顺序
以后看到新模型,可以按下面顺序分析:
模型架构
↓
原始精度
↓
官方推荐推理精度
↓
可用量化方案
↓
单卡峰值显存
↓
能否完全常驻 GPU
↓
不能则考虑:
Quantization
Offload
Multi-GPU
↓
多 GPU 支持:
Model Parallel
Tensor Parallel
Sequence Parallel
↓
通信成本
↓
Kernel 支持
↓
最终比较:
Quality
VRAM
Latency
Throughput21. 后续需要重点深入的知识树
AIGC 性能工程
│
├─ Precision
│ ├─ FP16
│ ├─ BF16
│ ├─ FP8
│ └─ FP4
│
├─ Quantization
│ ├─ INT8 / INT4
│ ├─ GGUF
│ ├─ AWQ
│ ├─ GPTQ
│ └─ NVFP4
│
├─ Memory Management
│ ├─ CPU Offload
│ ├─ Layerwise Offload
│ ├─ Pinned Memory
│ ├─ Prefetch
│ └─ Tiling
│
├─ Multi-GPU
│ ├─ Model Parallel
│ ├─ Tensor Parallel
│ ├─ Pipeline Parallel
│ ├─ Sequence Parallel
│ ├─ Data Parallel
│ └─ FSDP / ZeRO
│
├─ Communication
│ ├─ PCIe
│ ├─ NVLink
│ ├─ CUDA P2P
│ ├─ NCCL
│ ├─ AllReduce
│ └─ AllGather
│
└─ AIGC Workflow
├─ DiT
├─ Attention
├─ VAE
├─ Text Encoder
├─ Cache
├─ Upscale
└─ Frame Interpolation22. 推荐检索关键词
FP16 vs BF16
FP8 inference
FP8 Tensor Core
INT8 quantization
INT4 quantization
GGUF quantization
GGUF K-quants
Q4_K_M
Q5_K_M
Q6_K
Q8_0
CPU offload
Layerwise offload
Pinned memory
Model prefetch
Model parallel
Tensor parallel
Pipeline parallel
Sequence parallel
Ulysses
Attention parallel
Context parallel
PyTorch FSDP
DeepSpeed ZeRO
CUDA P2P
NCCL
PCIe GPU communication
NVLink vs PCIe
ComfyUI multi GPU
ComfyUI layerwise offload
ComfyUI VRAM optimization
VAE tiling
DiT
Video DiT
Video diffusion memory optimization23. 当前需要记住的核心关系
数据精度
↓
量化
↓
权重显存
↓
模型能否常驻 GPU
↓
Offload / Multi-GPU
↓
PCIe / GPU 通信
↓
实际推理性能判断方案时不要单独看某一个指标。
例如:
更低 bit不一定代表:
更快因为实际性能还受到:
Kernel
Dequantization
GPU 原生支持
Offload
通信影响。
同理:
双 24GB GPU可以利用约 48GB 总 GPU 内存进行模型分片,但是否高效取决于软件是否支持合适的多卡并行方式。
整个 AIGC 性能优化最终可以归纳成:
Precision
+
Quantization
+
Memory Management
+
Parallelism
+
Communication
+
Workflow这六个方向基本构成大型 AIGC 模型本地推理优化的主体知识框架。
