Avatar · audio-driven talking head video
Self-hosting Hallo: one photo, one audio track, and four generations of VRAM math
Fudan's Generative Vision Lab has shipped four generations of Hallo, swapping the backbone from SD 1.5 all the way to a video DiT. The VRAM floor went from 9.77GB to 80GB. Pick the wrong one and a 60-second clip costs you ten times more than it should.
Hallo · self-hosted
Hallo does exactly one thing: hand it a front-facing portrait and a speech track, and it returns video where the lips, expression and head pose all follow the audio. The original paper — Hallo: Hierarchical Audio-Driven Visual Synthesis for Portrait Image Animation — landed in June 2024 on a Stable Diffusion 1.5 denoising UNet, with AnimateDiff's mm_sd_v15_v2 motion module, a wav2vec2-base-960h audio encoder, and the paper's actual contribution: HADVS, which routes audio features into three separate cross-attention paths for lips, expression and pose. That is why the inference script exposes --lip_weight, --face_weight and --pose_weight as independent dials — you can tighten the mouth without amplifying the head sway.
The next three releases each pushed in a different direction. Hallo2 (ICLR 2025) kept the SD 1.5 backbone and fixed the two things that made v1 a demo rather than a tool: patch-drop augmentation extends continuous generation to as long as an hour, and a video super-resolution head derived from CodeFormer takes the output to 4K. Hallo3 (CVPR 2025) replaced the backbone outright, swapping the UNet for CogVideoX-5B-I2V's video diffusion transformer — background dynamics and large head motion improve dramatically, at the cost of a 52GB weight set that OOMs on a 48GB card. Hallo4 (SIGGRAPH Asia 2025, from Fudan with Baidu, Nanjing University and Alibaba) moved again, this time onto Wan2.1-1.3B, using Direct Preference Optimization to push fidelity with a backbone four times smaller than Hallo3's.
So "how much VRAM does Hallo need" is not one number — it is four numbers that span nearly an order of magnitude. This page lays out the weight sizes, measured VRAM, clip lengths, and the things that actually trip people up when self-hosting: the English-only wav2vec2 encoder and what it does to Chinese lip sync, unnormalised audio producing inconsistent results, Hallo3 having no multi-GPU inference path at all, and Hallo4 loading an 11GB umT5-XXL text encoder for a task that is driven entirely by audio. Each row maps to a specific per-second-billed NexGPU machine.
01 —
Four generations: weight size, measured VRAM, clip length
Taken from the official repos, the HuggingFace file manifests and the paper tables — not estimated
| Version | Parameters | VRAM | Context | Notes |
|---|---|---|---|---|
| Hallo (v1, arXiv June 2024, MIT) | SD 1.5 UNet backbone + HADVS | net.pth 4.85GB, ~11.3GB total weights | fp16 256×256 ≈ 6.62GB | 512×512 ≈ 9.77GB | 1024×1024 ≈ 20.66GB | 512×512 · 25fps · 16-frame window + 2 motion frames · 40 steps · CFG 3.5 | The cheapest tier to run — any 24GB card is comfortable. The VRAM figures come from Table 7 of the paper, alongside 0.46 / 1.63 / 10.29 second timings. Use it to validate your pipeline and source material before spending real money. |
| Hallo2 (ICLR 2025, MIT + S-Lab 1.0) | Same SD 1.5 backbone net.pth 4.85GB + SR head net_g.pth 905MB | ~13GB total | Generation stage on par with v1 at ~10GB; the 4K upscale is a separate second pass through CodeFormer + RealESRGAN_x2plus, frame by frame | Up to 1 hour of continuous generation · 512×512 base · up to 4K after upscaling | The generation you would actually ship long-form content with. Two stages: inference_long.py produces the 512×512 cut, then video_sr.py upscales it separately. Budget the SR pass on its own — it walks every frame again. |
| Hallo3 (CVPR 2025, MIT, bound by the CogVideoX licence) | CogVideoX-5B-I2V DiT + 3D VAE + T5-v1.1-XXL | main checkpoint 29.1GB, ~52GB total | bf16 inference: repo issues report OOM at 48GB, OOM on an A100 even with xformers, and an RTX 4090 24GB stalling at 51-step sampling — plan for a single 80GB card | sampling_num_frames 13 (4× temporal compression in the 3D VAE, i.e. 49-frame clips) · 25fps · 1:1 or 3:2 reference images | The best-looking and most expensive generation. There is no multi-GPU inference path — issue #13 shows 4× RTX 6000 Ada (48GB each) using only one card, saturated by 15 seconds of audio. Even training has OOM'd on an A800 80GB. |
| Hallo4 (SIGGRAPH Asia 2025, under the Wan2.1 licence) | Wan2.1-1.3B backbone model_weight.ckpt 5.54GB + umT5-XXL encoder 11.36GB + Wan2.1_VAE 508MB | ~17.8GB total | bf16 from ~32GB (small backbone, but the 11.36GB text encoder is resident too); caching the T5 embeddings brings it onto an RTX 5090 32GB | Reference images from 1:1 to 480:832 portrait · Wan 480p tier | The current line. DPO aligns the model directly against human preference for fidelity, on a backbone over four times smaller than Hallo3's — which puts VRAM back into consumer-card territory. Best value of the four. |
02 —
Which GPU per generation, with NexGPU per-hour rates
Sized against measured peaks — we will not pretend a 5B video DiT fits on a 24GB card
Hallo / Hallo2 at 512×512, validating footage and batch generation
RTX 3090 24GB$0.193/GPU-hr
The measured peak is 9.77GB; 24GB holds the UNet, the motion module and the onnxruntime face sessions with half the card to spare — and it is the cheapest GPU on the list.
Hallo at 1024×1024, or the Hallo2 long-video plus 4K upscale pipeline
RTX 5090 32GB$0.723/GPU-hr
1024×1024 measures at 20.66GB and 10.29 seconds, which leaves a 24GB card uncomfortably tight. 32GB gives you the buffer, and the SR pass is brute-force per-frame work where newer silicon converts directly into fewer billed hours.
Hallo4 (Wan2.1-1.3B + DPO) inference
RTX A6000 48GB$0.817/GPU-hr
The 5.54GB backbone, the 11.36GB umT5-XXL and the VAE all sit in VRAM at once; 48GB runs it unpatched. Once you have cached the T5 embeddings, drop to a 5090 32GB and save.
Hallo3 (CogVideoX-5B DiT) inference and long-clip stitching
A100 PCIE 80GB$0.824/GPU-hr
48GB is confirmed insufficient and Hallo3 has no multi-GPU inference path, so adding cards will not save you — a single 80GB card is the floor. Single-card inference does not need NVLink, so PCIE saves $0.264/hr over SXM4.
03 —
Boot to finished clip in four steps
Following the Hallo2 long-video pipeline, with the other generations' differences noted inline
- 01
Spin up an instance and build the environment
NexGPU's prebuilt PyTorch images ship CUDA and conda, so you go straight to the env. All four generations want Python 3.10, but the CUDA target is not uniform — Hallo, Hallo3 and Hallo4 document CUDA 12.1 while Hallo2 documents 11.8, and mixing torch builds across them fails most often at xformers. ffmpeg is a hard dependency for frame extraction and muxing; do not skip it.
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 - 02
Pull the weights onto the data volume, with the exact directory layout
The Hallo2 set is about 13GB: hallo2/net.pth at 4.85GB, the SR head net_g.pth at 905MB, the SD 1.5 UNet at 3.44GB, the AnimateDiff motion module mm_sd_v15_v2.ckpt at 1.82GB, sd-vae-ft-mse at 335MB, wav2vec2-base-960h at 378MB, plus the InsightFace scrfd / glintr100 / 1k3d68 ONNX set and Kim_Vocal_2.onnx for vocal separation. Hallo3 is 52GB; Hallo4 is roughly 17.8GB. The scripts resolve models by hard-coded paths, so the tree under pretrained_models must match the README exactly — this is the single most common first-run failure.
huggingface-cli download fudan-generative-ai/hallo2 --local-dir ./pretrained_models - 03
Generate the 512×512 cut first
long.yaml defaults to 512×512, fp16, 40 steps, CFG 3.5, 25fps, 16-frame clips with 2 motion frames. Three hard rules on source images: square crop, face occupying 50–70% of the frame, front-facing with under 30° rotation — use --face_expand_ratio if yours does not fit. Audio must be WAV; background music is fine because Kim_Vocal_2.onnx separates the vocal track before wav2vec2 sees it — but normalise the volume first, since the repo lists audio level affecting inference results as an open item. v1 uses scripts/inference.py, Hallo3 uses bash scripts/inference_long_batch.sh or python hallo3/app.py for the Gradio UI, and Hallo4 runs bash inf.sh.
python scripts/inference_long.py --config ./configs/inference/long.yaml - 04
Run the 4K upscale separately, then stop the instance
The upscale is a full second pass over every frame, so budget it on its own and only run it once you are happy with the 512×512 cut. -w is CodeFormer's fidelity weight (1 favours fidelity, 0 favours quality), -s 4 is the scale factor, --face_upsample enhances the face region separately. Copy the output off, then stop the instance — compute billing halts immediately. Storage keeps accruing at $0.414/GB-month until you destroy the volume. Egress is $0.0081/GB, so a one-hour 4K render at roughly 18GB costs about $0.15 to pull down.
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
What a 60-second talking-head clip actually costs
Take the 512×512 default used by Hallo and Hallo2. Table 7 of the paper reports 9.77GB and 1.63 seconds on A100-class hardware (issue #28 in the repo questions whether that timing is per-frame; the community reads it as per-frame, and one run on your own instance settles it). At 1.63 s/frame and 25fps: a 60-second clip is 1,500 frames, so 1,500 × 1.63 s = 2,445 s ≈ 0.68 hours. On an A100 PCIE 80GB at $0.824/GPU-hr that is 0.68 × $0.824 ≈ $0.56 of compute, plus roughly 10 minutes to pull weights and warm up at 0.17 × $0.824 ≈ $0.14 — about $0.70 all in. Now run the same job on an RTX 3090 24GB at $0.193/GPU-hr: 9.77GB fits with room to spare, wall-clock stretches — call it 2.5× longer, so ~1.7 hours — and 1.7 × $0.193 ≈ $0.33. Slower, and less than half the price per finished clip. That is exactly why we default this tier to the 3090. Hallo3 is a different ledger entirely: 48GB is not enough, so you start at an A100 PCIE 80GB burning $0.824/GPU-hr from second one, and the 52GB weight set alone costs 52 × $0.414 ÷ 30 ≈ $0.72/day just sitting on disk. Billing is metered per second with no minimum, no setup fee and no quota request, and compute stops the moment the instance does — so the cheapest sequence is to get the pipeline and the source material right on a 3090, then switch to the 80GB card only for the final render.
04 —
FAQ
How much VRAM does Hallo need to self-host? Is a 24GB card enough?
Which one should I use — Hallo, Hallo2, Hallo3 or Hallo4?
Does Hallo work with Chinese or other non-English audio?
Can I run Hallo3 across several 24GB or 48GB cards?
How long does the Hallo2 4K upscale take, and is it worth it?
What is the licence — can I use Hallo commercially?
More in Digital humans and face animation
Start building on NexGPU
Enterprise R&D team or solo developer — either way, your first job can be running in minutes.
Sign up to browse live network pricing. No payment method required.
