把 14B 大模型塞进 5 张显卡:LiveAvatar 如何让“数字人”无限时长直播?
日期:2025-12-08
一句话速览
LiveAvatar 用 4 步扩散、流水线并行和“滚动锚帧”技术,把 14B 参数的扩散模型搬到 5×H800 显卡上,实现 20 FPS、无限时长、音唇同步的实时 avatar 直播——代码已在 GitHub 开源。
目录
-
它到底解决了什么痛点? -
20 FPS 是怎么榨出来的? -
无限时长为什么不崩? -
训练 & 推理流水线的两张“蓝图” -
实测数据:短 10 s vs 长 10000 s -
快速上手:conda 环境到第一张生成帧 -
常见疑问 FAQ -
局限与未来更新 -
一句话总结
1. 它到底解决了什么痛点?
| 老问题 | 传统方案表现 | LiveAvatar 做法 |
|---|---|---|
| 实时性 | 14B 模型单卡 0.25 FPS | 5 卡并行 20 FPS |
| 长视频一致性 | 100 s 后脸开始“漂移” | 10000 s 外观不变 |
| 部署成本 | 需要 80 步采样、显存爆炸 | 4 步采样,720×400 分辨率单卡 32 GB 以下 |
关键词:实时流媒体、无限长度、音唇同步、14B 大模型、扩散蒸馏
2. 20 FPS 是怎么榨出来的?
2.1 核心算法:Timestep-Forcing Pipeline Parallelism(TPP)
把“ Sequential 80 步去噪”切成 4 步,每步固定分给一张 GPU,形成真正的“流水线”:
GPU0 只做 t4→t3
GPU1 只做 t3→t2
GPU2 只做 t2→t1
GPU3 只做 t1→t0
GPU4 专做 VAE 解码
-
每卡只存自己那一级的 KV-cache,通信量 = latent 大小,几乎可忽略 -
吞吐由最慢的一步决定,而非 4 步累加,因此 FPS 直接翻 4×
2.2 训练阶段:Self-Forcing DMD 蒸馏
| 阶段 | 目的 | 关键设置 |
|---|---|---|
| Stage1 Diffusion-Forcing | 让模型适应“块内全注意力 + 块间因果” | 3 帧一块,KV-cache 与噪声同级 |
| Stage2 DMD 蒸馏 | 把 80 步教师压成 4 步学生 | 历史 KV 加噪,增强长序列鲁棒性 |
蒸馏后 NFE(Number of Function Evaluations)从 80→4,单卡 FPS 由 0.25→5,再叠加 TPP 即可 20 FPS。
3. 无限时长为什么不崩?
3.1 滚动锚帧(Rolling Sink Frame)
| 现象 | 根因 | 对策 |
|---|---|---|
| 身份漂移 | 推理与训练时的 RoPE 相对位置不一致 | Rolling-RoPE:动态更新锚帧位置 |
| 颜色跑偏 | 锚帧始终来自外部图片,分布外 | Adaptive Attention Sink:第 1 块生成后把锚帧换成自己的 latent |
3.2 历史 KV 加噪(History Corrupt)
把 KV-cache 里 10 % 通道随机加高斯噪声,强迫模型“忘记”过远信息,只保留近期动作,阻断误差累积链。
4. 训练 & 推理流水线的两张“蓝图”
4.1 训练蓝图(对应论文图 2)
Stage1
├─ 输入:3 帧 latent 块 + 音频 embedding
├─ 掩码:块内全可见,块间因果
└─ 输出:干净的 3 帧
Stage2
├─ 用 Stage1 权重初始化“学生”
├─ 教师(固定)与“假教师”(在线更新)给出分数差
└─ DMD 损失反向更新学生,历史 KV 有 10 % 概率被加噪
4.2 推理蓝图(对应论文图 3)
Warmup
└─ 第一块顺序跑完 4 步,填满流水线
Streaming
├─ GPUi 永远只做 ti→ti-1
├─ 每步本地 KV-cache 复用,显存占用恒定
└─ VAE 专用卡实时解码,输出 720×400 视频流
5. 实测数据:短 10 s vs 长 10000 s
5.1 短片段(GenBench-ShortVideo,约 10 s)
| 模型 | ASE↑ | IQA↑ | Sync-C↑ | FPS↑ |
|---|---|---|---|---|
| Ditto | 3.31 | 4.24 | 4.09 | 21.8 |
| OmniAvatar | 3.53 | 4.49 | 6.77 | 0.16 |
| LiveAvatar | 3.44 | 4.35 | 5.69 | 20.88 |
5.2 长片段(GenBench-LongVideo,约 7 min)
| 模型 | ASE↑ | IQA↑ | Sync-C↑ | Dino-S↑ |
|---|---|---|---|---|
| OmniAvatar | 2.36 | 2.86 | 8.00 | 0.66 |
| WanS2V | 2.63 | 3.99 | 6.04 | 0.80 |
| LiveAvatar | 3.38 | 4.73 | 6.28 | 0.94 |
5.3 极限压力测试(10000 s 连续生成)
| 区间 | ASE | IQA | Sync-C | Dino-S |
|---|---|---|---|---|
| 0–10 s | 3.37 | 4.72 | 6.20 | 0.94 |
| 10000–10010 s | 3.38 | 4.71 | 6.26 | 0.93 |
10000 秒无衰减,迄今公开最长连续数字人视频。
6. 快速上手:conda 环境到第一张生成帧
官方代码 12 月初已上传,以下步骤来自仓库 README,实测 Ubuntu 22.04 + CUDA 12.4 通过。
6.1 安装
# 1. 创建环境
conda create -n liveavatar python=3.10 -y
conda activate liveavatar
# 2. CUDA 驱动
conda install nvidia/label/cuda-12.4.1::cuda -y
conda install -c nvidia/label/cuda-12.4.1 cudatoolkit -y
# 3. PyTorch & FlashAttention
pip install torch==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128
pip install flash-attn==2.8.3 --no-build-isolation
# 4. 其余依赖
pip install -r requirements.txt
6.2 下载权重
mkdir checkpoints
git lfs install
git clone https://huggingface.co/Quark-Vision/Live-Avatar checkpoints/
6.3 无限时长推理(5 卡)
bash scripts/infinite_inference.sh \
--audio data/audio.wav \
--image data/ref.jpg \
--text "Make the fire talk!" \
--outdir outputs/
-
首次运行会 Warmup 20 帧填满流水线,随后稳定 20 FPS -
Ctrl+C 随时停止,已生成片段已自动落盘为 mp4,可直接播放
7. 常见疑问 FAQ
Q1:我只有 2 张 RTX 4090,能跑吗?
A:官方后续会放 3 步蒸馏 + INT8 量化版,目标 4090 双卡 15 FPS,请留意仓库更新。
Q2:为什么 720×400 分辨率不能再高?
A:流水线里 VAE 解码是瓶颈,提高分辨率会线性增加延迟。团队正在尝试 SVD 量化 + Tile 解码,未来支持 1080p。
Q3:想用自己的声音驱动,音频需要什么格式?
A:单声道 16 kHz WAV,时长不限,代码内部自动切成 20 ms 窗口。
Q4:会不会出现“ deepfake 滥用”?
A:仓库内置可见水印 + 帧级哈希校验,且用户协议要求“可追踪授权”。详见论文 13 章伦理声明。
Q5:训练要自己跑 500 GPU 天吗?
A:普通玩家不必重训,官方已放出 14B checkpoints;若想微调,8×A100 + LoRA 128 rank 约 3 天可复现。
8. 局限与未来更新
| 当前局限 | 官方 roadmap |
|---|---|
| 需 5×H800,硬件门槛高 | RTX 4090/A100 3 步优化 |
| 仅支持英文/中文语音 | TTS 模块集成,多语言 |
| 720×400 分辨率 | SVD 量化 + Tile 1080p |
| 无 ComfyUI 节点 | ComfyUI 插件 12 月底发布 |
| 模型 14B 显存大 | 1.3B 轻量版 Q1 上线 |
9. 一句话总结
LiveAvatar 把“大模型、小步采样、流水线并行、滚动锚帧”四个齿轮咬合在一起,首次让 14B 参数的扩散模型跑出 20 FPS 的实时流,并且把数字人的“脸”稳到 10000 秒都不崩——如果你在做虚拟主播、远程客服或游戏 NPC,这套开源方案值得直接 pull 下来试跑。
仓库地址:https://github.com/Alibaba-Quark/LiveAvatar
论文全文:arXiv:2512.04677
