命令行怎么改参数?Live Avatar脚本自定义教程
Live Avatar不是那种点几下就能出结果的“傻瓜式”数字人工具——它更像一位需要你亲手调校的专业演员。当你第一次运行./run_4gpu_tpp.sh,看到终端里滚动的日志、显存占用跳动的数字、最终生成的那几秒微微晃动的视频时,你其实已经站在了可控创作的起点。而真正决定效果上限的,从来不是模型本身,而是你如何用命令行这把“手术刀”,精准地修改每一个参数。
本文不讲抽象原理,不堆技术术语,只聚焦一个最实际的问题:当你想换分辨率、改口型同步精度、缩短生成时间,甚至让数字人穿红裙子而不是蓝西装——这些改动,到底该改哪一行脚本?参数名是什么?值设多少才不爆显存?我们会带你逐行拆解启动脚本,手把手教你从“运行成功”迈向“按需定制”。
1. 先搞清:你用的是哪种运行模式?
Live Avatar提供三种启动方式,但只有CLI推理模式(即.sh脚本)支持完整参数自定义。Gradio Web UI虽然友好,但界面里隐藏了许多关键开关——比如--enable_online_decode这种长视频救命参数,UI里根本找不到。所以,想真正掌控生成过程,必须回到命令行。
你当前用的脚本,决定了你能改什么、怎么改:
| 脚本名称 | 适用硬件 | 可修改参数范围 | 特别说明 |
|---|---|---|---|
run_4gpu_tpp.sh | 4×24GB GPU(如4090) | 全部核心参数 | 推荐新手从这里开始,结构清晰,注释完整 |
infinite_inference_multi_gpu.sh | 5×80GB GPU | 全部参数 + 分布式高级选项 | 需要超大显存,普通用户暂不建议碰 |
infinite_inference_single_gpu.sh | 1×80GB GPU | 全部参数 + CPU卸载控制 | --offload_model True是唯一能跑通的配置 |
重要提醒:文档里明确写了“5×24GB GPU无法运行”,这不是bug,是物理限制。21.48GB分片加载 + 4.17GB推理重组 = 25.65GB需求 > 22.15GB可用。所以如果你用4张4090,请务必使用
run_4gpu_tpp.sh,不要尝试强行运行其他脚本——否则只会看到一连串CUDA Out of Memory。
2. 打开脚本:找到那个被注释掉的“参数入口”
以最常用的run_4gpu_tpp.sh为例。用任意文本编辑器打开它,你会看到类似这样的结构:
#!/bin/bash # LiveAvatar 4-GPU CLI 推理脚本 # 修改下方参数即可定制你的生成效果 export CUDA_VISIBLE_DEVICES=0,1,2,3 export NCCL_P2P_DISABLE=1 python inference.py \ --prompt "A young woman with long black hair..." \ --image "examples/portrait.jpg" \ --audio "examples/speech.wav" \ --size "688*368" \ --num_clip 100 \ --infer_frames 48 \ --sample_steps 4 \ --sample_guide_scale 0 \ --load_lora \ --lora_path_dmd "Quark-Vision/Live-Avatar" \ --ckpt_dir "ckpt/Wan2.2-S2V-14B/" \ --num_gpus_dit 3 \ --ulysses_size 3 \ --enable_vae_parallel \ --offload_model False \ --enable_online_decode这就是全部!整个脚本的核心就是这一长串python inference.py \命令。所有你想改的参数,都在这后面。而每一行开头的#是注释,告诉你这行是干啥的;反斜杠\是换行符,让长命令可读。
为什么不用环境变量或配置文件?
因为Live Avatar的参数逻辑是“一次生成、一整套配置”。用命令行参数而非配置文件,能确保每次运行都干净隔离,避免上一次的--size残留影响下一次测试。这是工程实践中的务实选择。
3. 关键参数详解:改什么?怎么改?改完有什么效果?
别被参数列表吓到。我们只挑最常改、最实用、改了立刻见效的6个参数,用大白话讲清楚:
3.1--size "宽*高":分辨率不是越大越好,而是“够用就好”
- 作用:决定最终视频画面有多清晰、多细腻
- 格式:必须用英文星号
*,不是小写字母x(写成704x384会报错) - 常见值:
"384*256":预览专用,显存省一半,适合试提示词"688*368":4090四卡黄金平衡点,画质够用,显存不爆"704*384":再提一档,但4090四卡已逼近极限,需配合--infer_frames 32
- 改了之后:
- 分辨率翻倍 → 显存占用约+80%,生成时间+120%
- 选错值直接OOM:“
CUDA out of memory”不是警告,是判决书
实操建议:先用
"384*256"跑通全流程,确认图像/音频/提示词都没问题;再切到"688*368"生成正式版。别一上来就挑战"704*384"——那是在和显存较劲,不是在做数字人。
3.2--num_clip 100:控制视频总时长的“总开关”
- 作用:生成多少个视频片段。总时长 =
num_clip × infer_frames / fps - 默认值:100(对应约5分钟视频)
- 怎么算:
infer_frames固定为48帧/片段,fps固定为16 → 每片段3秒 → 100片段=300秒=5分钟 - 改了之后:
- 设
50→ 2.5分钟视频,显存压力减半,适合快速验证 - 设
1000→ 50分钟长视频,必须加--enable_online_decode,否则显存炸裂
- 设
实操建议:长视频永远分两步走:
- 先用
--num_clip 100生成前5分钟,检查口型、动作、画质;- 确认无误后,再用
--num_clip 1000 --enable_online_decode跑完整版。
别指望一次生成50分钟还不出错——AI生成不是录像机,是精密计算。
3.3--sample_steps 4:质量与速度的“天平支点”
- 作用:扩散模型采样次数。步数越多,细节越丰富,但越慢
- 默认值:4(DMD蒸馏模型的最优平衡点)
- 可选值:3(快)、4(默认)、5(精)、6(慢)
- 改了之后:
3→ 速度+25%,画质微降(边缘略糊,适合预览)5→ 速度-30%,细节提升(发丝、衣纹更清晰,但4090四卡可能卡顿)
- 注意:这不是“越高越好”。Live Avatar用的是蒸馏模型,
step=4已是官方调优结果;盲目加到6,可能只是让GPU多烧几分钟电,画质提升肉眼难辨。
实操建议:日常使用死守
4;赶时间用3;对某段关键镜头(如产品特写)追求极致,再临时提至5。别全局改成5——得不偿失。
3.4--infer_frames 48:每片段的“动作流畅度”
- 作用:每个视频片段包含多少帧。帧数越多,动作越顺滑,过渡越自然
- 默认值:48(3秒/片段,16fps)
- 可选值:32(2秒/片段)、48(3秒)、64(4秒)
- 改了之后:
32→ 显存-15%,但动作略“卡”,适合静态讲解64→ 显存+20%,动作丝滑,但4090四卡大概率OOM
实操建议:除非你在做舞蹈类内容,否则不要动这个值。48是经过大量测试的稳定值。想让动作更自然?去优化提示词里的动词(“waving hand”比“standing”好),而不是硬加帧数。
3.5--sample_guide_scale 0:提示词的“听话程度”
- 作用:控制模型多“听你的话”。数值越高,越严格遵循提示词,但可能牺牲自然感
- 默认值:0(无分类器引导,最自然)
- 可选值:0(自然)、3(稍强)、5(明显)、7(过拟合)
- 改了之后:
0→ 数字人表情柔和,动作松弛,像真人说话5→ 衣服颜色、背景元素更贴提示词,但可能僵硬、眼神发直
- 关键真相:这个参数对“风格描述”(如
cinematic style)几乎无效,主要影响颜色、物体存在性、基础构图。
实操建议:永远从0开始。如果生成结果完全偏离你的描述(比如提示“红裙子”却出蓝裙子),再尝试
3;如果口型同步变差或人物变塑料感,立刻切回0。它不是万能调节钮,而是最后的微调手段。
3.6--enable_online_decode:长视频的“保命符”
- 作用:启用在线解码,边生成边写入视频,避免把所有帧缓存在显存里
- 默认值:不启用(即不加此参数)
- 何时必须加:当
--num_clip > 200时,不加必崩 - 改了之后:
- 显存占用稳定在~18GB/GPU(不再随片段数线性增长)
- 生成速度略降5-10%,但换来的是50分钟视频的可行性
实操建议:把它当成一个开关。短片(<5分钟)关着;长片(>10分钟)开着。加在命令末尾就行,无需改其他参数。
4. 动手改:一个真实案例,从“跑不通”到“生成成功”
假设你有一张高清人像图my_photo.jpg,一段10秒语音my_voice.wav,想生成3分钟带口型的数字人视频。但第一次运行run_4gpu_tpp.sh就报错:
torch.OutOfMemoryError: CUDA out of memory别删脚本重来。按步骤改:
步骤1:降低分辨率(立竿见影)
打开run_4gpu_tpp.sh,找到这行:
--size "688*368" \改成:
--size "384*256" \步骤2:减少片段数(控制时长)
找到:
--num_clip 100 \改成(3分钟=180秒,180÷3=60片段):
--num_clip 60 \步骤3:确认关键开关
确保末尾有:
--enable_online_decode(如果原脚本没有,手动加上)
步骤4:保存并运行
chmod +x run_4gpu_tpp.sh ./run_4gpu_tpp.sh你会看到:显存占用稳定在13GB左右,2分钟后输出output.mp4,口型基本同步,画质虽不如高清,但已足够验证流程。
再进阶:等这次成功后,把--size慢慢调回"688*368",--num_clip调回100,观察显存是否仍可控。这才是渐进式调优的正确姿势。
5. 高级技巧:不改脚本,也能动态调参
有时候你不想每次改完都保存脚本。Live Avatar支持命令行覆盖参数,优先级高于脚本内设值:
# 在原有脚本基础上,临时把分辨率改成704*384,片段数改成200 ./run_4gpu_tpp.sh --size "704*384" --num_clip 200这行命令会自动覆盖脚本里写的--size和--num_clip,其他参数保持不变。适合快速AB测试。
注意:这种覆盖只对
inference.py的参数有效,对export环境变量(如CUDA_VISIBLE_DEVICES)无效。想换GPU,还是得改脚本。
6. 常见陷阱:那些让你浪费2小时的“小错误”
陷阱1:路径带空格
错误:--image "my images/portrait.jpg"→ 脚本会把my和images/portrait.jpg当成两个参数
正确:--image "my_images/portrait.jpg"或--image my_images/portrait.jpg(不带引号,无空格)陷阱2:音频采样率不对
即使文件是.wav,如果采样率是44.1kHz,Live Avatar会静音或崩溃。用ffmpeg转:ffmpeg -i input.wav -ar 16000 -ac 1 output_16k.wav陷阱3:提示词里混中文
脚本能跑,但生成结果随机。Live Avatar的T5文本编码器只认英文。中文提示词请翻译后再用。陷阱4:忘记删旧输出
output.mp4不会自动覆盖。多次运行后,你可能在看上一次的旧视频。养成习惯:rm output.mp4 && ./run_4gpu_tpp.sh
7. 总结:参数修改的本质,是理解你的硬件边界
Live Avatar的参数不是魔法咒语,而是一张硬件能力地图。--size告诉你显存还剩多少;--num_clip提醒你时间成本;--sample_steps在问你“此刻要速度,还是要细节?”——每一次修改,都是你和硬件的一次诚实对话。
所以,别追求“一步到位”的完美参数。真正的自定义流程应该是:
- 跑通最小可行(
384*256+10片段) - 逐项放开限制(先提分辨率,再提片段数,最后调步数)
- 用监控盯住显存(
watch -n 1 nvidia-smi是你的新朋友) - 接受合理妥协(4090四卡做不了80GB单卡的事,但能做得更稳、更可控)
当你能熟练地在OOM报错和满意结果之间找到那条窄窄的平衡线时,你就不再是参数的搬运工,而是数字人世界的真正导演。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。