跳到主要内容

数字人 · 音频驱动口播视频

Hallo 本地部署:一张照片、一段音频,四代模型的显存账算给你看

复旦 Generative Vision Lab 的 Hallo 系列已经迭代到第四代,从 SD 1.5 主干一路换到视频 DiT,显存门槛从 9.77GB 涨到 80GB。选错版本,你会为一段 60 秒口播多付十倍的卡钱。

Hallo 做的事情很单一:给它一张正脸照片和一段语音,它输出一段嘴型、表情、头部姿态都跟着音频动的视频。初代论文《Hallo: Hierarchical Audio-Driven Visual Synthesis for Portrait Image Animation》2024 年 6 月放出,主干是 Stable Diffusion 1.5 的去噪 UNet,加上 AnimateDiff 的 mm_sd_v15_v2 运动模块、wav2vec2-base-960h 音频编码器,以及论文的核心贡献 HADVS——把音频特征分层送进唇部、表情、姿态三路交叉注意力。这也是为什么推理脚本上挂着 --lip_weight、--face_weight、--pose_weight 三个可调权重,你能单独把嘴型咬紧、把头部晃动压小。

接下来三代是三次不同方向的加码。Hallo2(ICLR 2025)保持 SD 1.5 主干不动,解决的是「只能出几秒」和「只有 512×512」两个硬伤:靠 patch-drop 增广把连续生成拉到最长 1 小时,再挂一个从 CodeFormer 改出来的视频超分头输出 4K。Hallo3(CVPR 2025)直接换主干,把 UNet 换成 CogVideoX-5B-I2V 的视频扩散 Transformer,背景动态和大幅度头部运动质量跃升,代价是整套权重涨到 52GB、48GB 显存的卡都跑不动。Hallo4(SIGGRAPH Asia 2025,复旦 + 百度 + 南大 + 阿里)又换到 Wan2.1-1.3B,用 DPO 直接偏好对齐来抬保真度,主干反而小了回去。

所以「Hallo 需要多大显存」根本不是一个数字,而是四个差了将近十倍的数字。这页把每一代的权重体积、实测显存、单次生成长度、以及自建时真正会绊倒你的地方(英文 wav2vec2 带来的中文口型问题、音量没归一化导致结果飘、Hallo3 没有多卡推理路径、Hallo4 明明是音频驱动却要加载 11GB 的 umT5-XXL 文本编码器)全列出来,再配上 NexGPU 上按秒计费的对应机型,你按行对号入座就行。

01 —

四代版本对照:权重体积、实测显存、能出多长

全部来自官方仓库、HuggingFace 权重清单与论文表格,不是估算

版本参数量显存上下文说明
Hallo(初代,arXiv 2024.06,MIT)SD 1.5 UNet 主干 + HADVS | net.pth 4.85GB,全套权重约 11.3GBfp16 256×256 ≈ 6.62GB | 512×512 ≈ 9.77GB | 1024×1024 ≈ 20.66GB512×512 · 25fps · 16 帧滑窗 + 2 帧运动帧 · 40 步 · CFG 3.5最省显存的一档,24GB 单卡随便跑。显存数字取自论文 Table 7,同时给出了 0.46 / 1.63 / 10.29 秒的耗时口径。适合先跑通管线、验证素材质量。
Hallo2(ICLR 2025,MIT + S-Lab 1.0)同 SD 1.5 主干 net.pth 4.85GB + 超分头 net_g.pth 905MB | 全套约 13GB生成阶段与初代同级 ≈ 10GB;4K 超分是独立第二遍,逐帧过 CodeFormer + RealESRGAN_x2plus最长 1 小时连续生成 · 基础 512×512 · 超分后最高 4K真正能拿去做长口播的一代。两段式:先 inference_long.py 出 512×512 长片,再 video_sr.py 单独超分。超分那一遍的成本要单独算,它是完整过一遍所有帧。
Hallo3(CVPR 2025,MIT,受 CogVideoX 许可约束)CogVideoX-5B-I2V DiT + 3D VAE + T5-v1.1-XXL | 主检查点 29.1GB,全套约 52GBbf16 推理:仓库 issue 里 48GB 报 OOM、A100 开 xformers 仍 OOM、4090 24GB 直接卡死 —— 按 80GB 单卡准备sampling_num_frames 13(3D VAE 时序 4 倍压缩,对应 49 帧片段)· 25fps · 参考图 1:1 或 3:2画质和动态幅度最强的一代,也是最贵的一代。没有多卡推理路径,issue #13 里 4×RTX 6000 Ada 也只能用上一张,15 秒音频就把单卡吃满。训练阶段 A800 80GB 都有人 OOM。
Hallo4(SIGGRAPH Asia 2025,随 Wan2.1 许可)Wan2.1-1.3B 主干 model_weight.ckpt 5.54GB + umT5-XXL 编码器 11.36GB + Wan2.1_VAE 508MB | 全套约 17.8GBbf16 ≈ 32GB 起步(主干小但 11.36GB 文本编码器同时驻留);缓存 T5 embedding 后能压进 RTX 5090 32GB参考图 1:1 至 480:832 竖屏 · Wan 480p 档当前主线。用 DPO 直接对齐人类偏好来抬保真度,主干比 Hallo3 小四倍多,显存回落到消费级可及的区间,是四代里性价比最好的一档。

02 —

按版本选卡:NexGPU 机型与每卡时价格

显存按实测峰值配,不把 5B 视频 DiT 塞进 24GB 卡里骗你

  • Hallo / Hallo2 跑 512×512,验证素材与批量出片

    RTX 3090 24GB$0.193/卡·时

    论文实测峰值 9.77GB,24GB 装得下 UNet、运动模块和 onnxruntime 的几个人脸会话还剩一半余量,而它是整个价目表里最便宜的一张卡。

  • Hallo 出 1024×1024,或 Hallo2 长视频 + 4K 超分两段流水

    RTX 5090 32GB$0.723/卡·时

    1024×1024 实测 20.66GB、10.29 秒的耗时口径,24GB 卡余量太窄;32GB 留够缓冲,而超分那第二遍是逐帧硬算,新架构省下的就是真金白银的机时。

  • Hallo4(Wan2.1-1.3B + DPO)推理出片

    RTX A6000 48GB$0.817/卡·时

    5.54GB 主干 + 11.36GB umT5-XXL + VAE 要同时在显存里,48GB 不用打任何补丁就能跑通;等你把 T5 embedding 缓存下来再换 5090 32GB 省钱。

  • Hallo3(CogVideoX-5B DiT)推理与长片段拼接

    A100 PCIE 80GB$0.824/卡·时

    48GB 已被证实不够,而 Hallo3 没有多卡推理路径,堆卡救不了你——只能上单张 80GB。单卡推理不吃 NVLink,PCIE 版比 SXM4 每小时省 $0.264。

03 —

从开机到出片:四步

以最实用的 Hallo2 长视频管线为主线,其余版本的差异写在每步说明里

  1. 01

    起实例、建环境

    NexGPU 的 PyTorch 预置镜像已经带好 CUDA 与 conda,开机直接建环境。全系要求 Python 3.10;注意 CUDA 版本不统一——Hallo / Hallo3 / Hallo4 官方标 CUDA 12.1,Hallo2 标的是 CUDA 11.8,跨版本混装 torch 最典型的报错就是 xformers 起不来。ffmpeg 是硬依赖,抽帧和封装都靠它,别漏。

    git clone https://github.com/fudan-generative-vision/hallo2 && cd hallo2 && conda create -n hallo python=3.10 -y && conda activate hallo && pip install -r requirements.txt && apt-get install -y ffmpeg
  2. 02

    把权重拉到数据盘,目录结构必须对

    Hallo2 这一整套约 13GB:hallo2/net.pth 4.85GB、超分头 net_g.pth 905MB、SD 1.5 UNet 3.44GB、AnimateDiff 运动模块 mm_sd_v15_v2.ckpt 1.82GB、sd-vae-ft-mse 335MB、wav2vec2-base-960h 378MB,外加 InsightFace 的 scrfd / glintr100 / 1k3d68 一组 onnx 和做人声分离的 Kim_Vocal_2.onnx。换 Hallo3 就是 52GB,Hallo4 约 17.8GB。脚本按硬路径找模型,pretrained_models 下的目录层级必须和 README 完全一致,这是新手第一大坑。

    huggingface-cli download fudan-generative-ai/hallo2 --local-dir ./pretrained_models
  3. 03

    先出 512×512 长视频

    long.yaml 的默认值是 512×512、fp16、40 步、CFG 3.5、25fps、16 帧片段配 2 帧运动帧。素材上有三条硬规矩:正方形裁切、人脸占画面 50%~70%、正脸且旋转角小于 30°,不满足就先用 --face_expand_ratio 调。音频要 WAV,背景音乐可以留着——管线里 Kim_Vocal_2.onnx 会先把人声抠出来再喂 wav2vec2;但音量务必先归一化,仓库把「音量影响推理结果」列在了待办里,这不是玄学。初代用 scripts/inference.py,Hallo3 用 bash scripts/inference_long_batch.sh 或 python hallo3/app.py 起 Gradio,Hallo4 直接 bash inf.sh。

    python scripts/inference_long.py --config ./configs/inference/long.yaml
  4. 04

    4K 超分单独跑,跑完就停机

    超分是完整的第二遍逐帧计算,机时要单独算进预算,所以先看 512×512 的成片满不满意再决定要不要跑。-w 是 CodeFormer 的保真度权重(1 偏保真、0 偏画质),-s 4 是四倍放大,--face_upsample 单独增强人脸区域。跑完把成片拷走,实例一停计算立刻停止计费;权重盘按 $0.414/GB·月 继续计,不用了就销毁。出网 $0.0081/GB,一段一小时的 4K 成片约 18GB,出网费约 $0.15。

    python scripts/video_sr.py --input_path ./output_long/debug/result.mp4 --output_path ./output_sr --bg_upsampler realesrgan --face_upsample -w 1 -s 4

一段 60 秒口播视频,到底多少钱

拿 Hallo / Hallo2 的 512×512 默认档算。论文 Table 7 在 A100 级别的机器上给出 9.77GB 显存、1.63 秒的耗时口径(仓库 issue #28 里有人追问过这是不是每帧,社区普遍按每帧理解,你自己跑一遍就知道)。按每帧 1.63 秒、25fps 算:60 秒成片 = 1500 帧,1500 × 1.63 秒 = 2445 秒 ≈ 0.68 小时。挂在 A100 PCIE 80GB($0.824/卡·时)上,算力费 0.68 × $0.824 ≈ $0.56;加上拉权重和预热约 10 分钟,0.17 × $0.824 ≈ $0.14,一段 60 秒口播总共约 $0.70。换成 RTX 3090 24GB($0.193/卡·时),显存 9.77GB 绰绰有余,只是墙上时间会长——按 2.5 倍保守估算约 1.7 小时,1.7 × $0.193 ≈ $0.33,反而比 A100 便宜一半以上。这就是为什么 512×512 这一档我们默认推 3090:慢,但每段成片更省。Hallo3 就完全是另一本账,48GB 不够、必须 A100 PCIE 80GB 起,$0.824/卡·时 从第一秒就开始烧,而且 52GB 权重光挂着就是 52 × $0.414 ÷ 30 ≈ $0.72/天。按秒计费、没有最低时长、没有起步费、停机即停计算费用,所以先在 3090 上把管线和素材调对,再切到 80GB 卡上跑最终版本,是最省钱的顺序。

04 —

常见问题

Hallo 本地部署到底需要多大显存?一张 24GB 的卡够不够?

看版本。初代和 Hallo2 的 512×512 默认档,论文实测峰值 9.77GB,24GB 卡绰绰有余;256×256 只要 6.62GB,1024×1024 是 20.66GB,24GB 能上但余量很窄。Hallo3 完全不同,仓库 issue 里 48GB 显存报 OOM、A100 开了 xformers 也 OOM、4090 24GB 在 51 步采样时直接卡住,请按 80GB 单卡准备。Hallo4 因为要同时驻留 11.36GB 的 umT5-XXL,32GB 起步。NexGPU 上 RTX 3090 24GB 是 $0.193/卡·时、A100 PCIE 80GB 是 $0.824/卡·时,按秒计费,先开一台跑 20 分钟验证显存占用,比在论坛上问快得多。

Hallo、Hallo2、Hallo3、Hallo4 我该用哪个?

只想验证效果、素材是几秒短句 —— 初代,最省显存。要做几分钟到一小时的长口播、还要 4K 交付 —— Hallo2,它就是为这两件事做的。追求最强的背景动态和大幅度头部运动、预算不敏感 —— Hallo3。想在保真度和显存之间取平衡、又不想被 52GB 权重和 80GB 卡绑住 —— Hallo4,Wan2.1-1.3B 主干加 DPO 对齐,是目前性价比最好的一档。真要选,先在 NexGPU 上开一台 RTX 3090($0.193/卡·时)把 Hallo2 跑通,再决定要不要为 Hallo3 付 A100 的钱。

Hallo 支持中文音频吗?中文口型为什么对不上?

这是中文用户最容易踩的坑。四个仓库的输入要求都写着「英文 WAV」,初代的 Roadmap 里「Mandarin Chinese support」到现在仍标着 TBD。原因在音频编码器:wav2vec2-base-960h 是在 960 小时英文 LibriSpeech 上训的,中文音素落在它没见过的分布里。喂中文进去能出片,但唇形明显发软、爆破音和翘舌音尤其糊,官方也没有中文检查点。好消息是训练脚本和数据集都开源了(Hallo3 那边放出了 70+ 小时的说话人视频),自己拿中文语料微调是可行路径。这类活儿正是按秒计费的租卡最划算的场景 —— 在 NexGPU 上开 A100 80GB 或 H100 SXM 80GB,跑完就停,不用为一次微调买一张卡。

Hallo3 能用多张 24GB 或 48GB 的卡拼起来跑吗?

不能,这是 Hallo3 最需要提前知道的一件事。仓库 issue #13 里有人拿 4×RTX 6000 Ada(每张 48GB)测过,推理只用得上其中一张,15 秒音频就把这张卡吃满 —— 官方没有提供多卡推理路径,堆卡救不了显存。想跑 Hallo3 推理,只有单张 80GB 一条路。NexGPU 上 A100 PCIE 80GB $0.824/卡·时最划算(单卡推理用不上 NVLink,没必要为 SXM4 的 $1.088 多花钱);如果你要跑那两阶段的 SFT 微调,再上 H100 SXM 80GB $3.582/卡·时,我们单节点最多 14 张卡、节点显存上限 2,152GB。

Hallo2 的 4K 超分要跑多久?值得吗?

先明确它是独立的第二遍:inference_long.py 出完 512×512 的成片之后,video_sr.py 才逐帧过一遍 CodeFormer + RealESRGAN_x2plus,机时是实打实再花一遍。所以正确顺序是先看 512×512 满不满意,确认口型和表情都对了再超分,别在废片上烧机时。参数上 -w 1 偏保真、往 0 调偏画质,-s 4 是四倍放大,--face_upsample 单独增强人脸。这种「基础 + 超分」的两段式最适合按秒计费:在 NexGPU 上第一遍用 RTX 3090 $0.193/卡·时 慢慢出,第二遍切 RTX 5090 32GB $0.723/卡·时 快速过帧,两段各用最合适的卡,比全程包一张贵卡省得多。

Hallo 的许可证能商用吗?

分开看。初代 Hallo 和 Hallo2 主仓库是 MIT,但 Hallo2 的超分模块改自 CodeFormer,那部分要遵守 S-Lab License 1.0。Hallo3 仓库是 MIT,但它是 CogVideoX-5B 的微调衍生物,得同时满足 CogVideoX 的原始许可。Hallo4 是 Wan2.1-1.3B 的衍生物,直接受 WAN LICENSE 约束。另外四个仓库都写了同一段伦理声明:音频驱动人像动画有被用于深度伪造的风险,请取得被拍摄者的知情同意。合规判断请交给你的法务,我们只负责让算力这一环没有借口 —— NexGPU 覆盖 51 个国家和地区、1,175 个已验证可租节点、2,498 张 GPU、75 种型号,SSH / Jupyter / Web 终端 / REST API / CLI 都能进,2,000+ 预置镜像里 PyTorch 和 ComfyUI 开箱即用,中英文支持走 Telegram,没有工单队列。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。