Skip to content

LTX Video 2 快速入门

本示例将使用 LTX-2 视频/音频 VAE 与所选 LTX-2 版本匹配的 Gemma 文本编码器训练 LTX Video 2 LoRA。

硬件要求

LTX Video 2 是重量级 19B 模型,由以下组件组成: 1. Gemma3 / Gemma4:文本编码器。LTX-2.0 与 LTX-2.3 使用 Gemma3;LTX-2.5 使用 Gemma4。 2. LTX-2 Video VAE(音频条件时还会使用 Audio VAE)。 3. 19B Video Transformer:大型 DiT 主干。

该组合非常耗 VRAM,VAE 预缓存步骤可能会显著抬高内存峰值。

  • 注意:初始 VAE 预缓存步骤 可能需要更多 VRAM。可能需要 CPU offload 或更大 GPU 仅用于缓存阶段。
  • 提示:在 config.json 中设置 "offload_during_startup": true,确保 VAE 与文本编码器不会同时加载到 GPU,可显著降低预缓存压力。
  • 系统内存:大规模训练建议 64GB+,更多内存有助于缓存。

实测性能与内存(实测报告)

  • 基准设置:480p、17 帧、batch size 2(最小视频长度/分辨率)。
  • RamTorch(含文本编码器):AMD 7900XTX 上 VRAM 约 13 GB。
  • NVIDIA 3090/4090/5090+ 应有相近或更好的 VRAM 余量。
  • 不使用 offload(int8 TorchAO):VRAM 约 29-30 GB;建议 32 GB 显存。
  • 系统内存峰值:先加载 bf16 Gemma 文本编码器再量化到 int8(VRAM ~32 GB)时约 46 GB。
  • 系统内存峰值:先加载 bf16 LTX-2 transformer 再量化到 int8(VRAM ~30 GB)时约 34 GB。
  • 不使用 offload(完整 bf16):无任何 offload 训练约需 48 GB VRAM。
  • 吞吐:
  • A100-80G SXM4 约 8 秒/step(未启用编译)。
  • 7900XTX 约 16 秒/step(本地运行)。
  • A100-80G SXM4 跑 200 steps 约 30 分钟。

⚠️ 请先测试 regional compilation,再决定是否保留。 dynamo_use_regional_compilation 并不一定能加速 LTX Video 2,即使编译预热完成后也可能降低稳定吞吐。请在相同的固定 batch、帧数和分辨率下比较 eager 与 compiled 运行,并根据预热后的多个训练 step 判断,而不是依据最初的编译 step。

前提条件

确保已安装 Python 3.12。

python --version

安装

pip install 'simpletuner[cuda]'

# CUDA 13 / Blackwell users (NVIDIA B-series GPUs)
pip install 'simpletuner[cuda13]' --extra-index-url https://download.pytorch.org/whl/cu130

高级安装选项参见 INSTALL.md。

设置环境

Web 界面

simpletuner server

访问 http://localhost:8001。

手动配置

运行辅助脚本:

simpletuner configure

或复制示例并手动修改:

cp config/config.json.example config/config.json

配置参数

LTX Video 2 的关键设置:

  • model_family: ltxvideo2
  • model_flavour: dev(默认)、dev-fp4、dev-fp8、2.3-dev、2.3-distilled、2.5-dev 或 2.5-distilled。
  • pretrained_model_name_or_path: Lightricks/LTX-2、dg845/LTX-2.3-Diffusers、dg845/LTX-2.3-Distilled-Diffusers、Lightricks/LTX-2.5 或本地 .safetensors 文件。
  • train_batch_size: 1。除非有 A100/H100,否则不要提高。
  • validation_resolution:
  • 512x768 是安全的测试默认值。
  • 720x1280(720p)可行但较重。
  • validation_num_video_frames: 必须与 VAE 压缩比例 (4x) 兼容。
  • 5 秒(约 12-24fps):使用 61 或 49。
  • 公式:(frames - 1) % 4 == 0。
  • validation_guidance: 5.0。
  • ltx2_validation_audio_guidance: 验证时可选的独立音频 CFG scale。未设置时音频会复用 validation_guidance;LTX-2.5 AV validation 中,ComfyUI dual-CFG 节点默认 video CFG 为 3.0、audio CFG 为 7.0。
  • ltx2_validation_pipeline_mode: 常规验证保持 trained-stage。使用 spatial-upscale 可运行 LTX-2 两阶段 spatial upscaler 路径:半分辨率 latent 生成、spatial latent upscaling,然后以完整分辨率重新去噪。
  • spatial-upscale 要求 validation_resolution 可被 64 整除。
  • 可选覆盖:ltx2_validation_spatial_upsampler_model 与 ltx2_validation_spatial_upsampler_filename。默认值为 Lightricks/LTX-2.3 和 ltx-2.3-spatial-upscaler-x2-1.1.safetensors。
  • frame_rate: 默认 25。

LTX-2 2.0 变体以单个 .safetensors checkpoint 形式发布,包含 transformer、视频 VAE、音频 VAE 和 vocoder。 对于 LTX-2.3,SimpleTuner 会根据 model_flavour 加载对应的 Diffusers 仓库 (2.3-dev 或 2.3-distilled)。 对于 LTX-2.5,SimpleTuner 假定 Diffusers 仓库路径为 Lightricks/LTX-2.5,并将文本编码器路由到 Gemma4。如果加载本地 single-file LTX-2.5 checkpoint,请保持 model_flavour 为 2.5-dev 或 2.5-distilled;除非用本地路径覆盖,SimpleTuner 会使用 Lightricks/LTX-2.5 作为组件/配置来源。

LTX-2 AV validation 的 dual CFG 使用普通的 conditional 与 unconditional predictions,并对视频和音频 latent stream 应用不同 scale。它本身不会增加额外的模型 pass。STG、modality guidance 或 reference-audio identity guidance 等额外 guidance 功能启用后会各自增加额外 pass。

可选:VRAM 优化

如果需要更多 VRAM 余量: - Musubi 块交换:设置 musubi_blocks_to_swap(建议 4-8),可选设置 musubi_block_swap_device(默认 cpu),将最后的 Transformer 块从 CPU 流式加载。吞吐下降但峰值 VRAM 降低。 - VAE 补丁卷积:设置 --vae_enable_patch_conv=true 启用 LTX-2 VAE 的时间分块;速度略降但峰值 VRAM 更低。 - VAE temporal roll:设置 --vae_enable_temporal_roll=true 进行更激进的时间分块(速度下降更明显)。 - VAE 分块:设置 --vae_enable_tiling=true 在大分辨率下对 VAE 编码/解码进行分块。

可选:CREPA 时间正则

为减少闪烁并保持主体跨帧稳定: - 在 Training → Loss functions 中启用 CREPA。 - 推荐初始值:Block Index = 8, Weight = 0.5, Adjacent Distance = 1, Temporal Decay = 1.0。 - 保持默认视觉编码器(dinov2_vitg14,尺寸 518),除非需要更小的 dinov2_vits14 + 224。 - 首次需要联网(或已缓存 torch hub)以获取 DINOv2 权重。 - 仅在完全使用缓存 latents 训练时启用 Drop VAE Encoder;否则保持关闭。

高级实验功能

显示高级实验详情 SimpleTuner 包含可显著提高训练稳定性和性能的实验功能。 * **[计划采样(Rollout)](../experimental/SCHEDULED_SAMPLING.md):**通过让模型在训练期间生成自己的输入来减少曝光偏差并提高输出质量。 > ⚠️ 这些功能会增加训练的计算开销。 #### 数据集注意事项 视频数据集需要仔细配置。创建 `config/multidatabackend.json`:
[
  {
    "id": "my-video-dataset",
    "type": "local",
    "dataset_type": "video",
    "instance_data_dir": "datasets/videos",
    "caption_strategy": "textfile",
    "resolution": 512,
    "video": {
        "num_frames": 61,
        "min_frames": 61,
        "frame_rate": 25,
        "bucket_strategy": "aspect_ratio"
    },
    "repeats": 10
  },
  {
    "id": "text-embeds",
    "type": "local",
    "dataset_type": "text_embeds",
    "default": true,
    "cache_dir": "cache/text/ltxvideo2",
    "disabled": false
  }
]
在 `video` 子段中: - `num_frames`: 训练目标帧数。 - `min_frames`: 最短视频长度(短于此会被丢弃)。 - `max_frames`: 最长视频长度过滤。 - `bucket_strategy`: 视频分桶方式: - `aspect_ratio`(默认):只按空间宽高比分桶。 - `resolution_frames`:按 `WxH@F` 格式(如 `1920x1080@61`)分桶,适合混合分辨率/时长数据。 - `frame_interval`: 使用 `resolution_frames` 时,将帧数舍入到该间隔。 LTX-2 支持无音频的纯视频训练。若要启用音频训练,请在视频数据集配置中添加 `audio` 块:
"audio": {
    "auto_split": true,
    "sample_rate": 16000,
    "channels": 1,
    "duration_interval": 3.0,
    "allow_zero_audio": false
}
当 `audio` 部分存在时,SimpleTuner 会自动从视频文件中提取音频并缓存音频 latents。如果视频没有音频流,请设置 `audio.allow_zero_audio: true`。不添加 `audio` 部分时,LTX-2 仅训练视频并自动屏蔽音频损失。 > See caption_strategy options and requirements in [DATALOADER.md](../DATALOADER.md#caption_strategy). #### 目录设置
mkdir -p datasets/videos
</details>

# 将 .mp4 / .mov 文件放到这里
# 将对应 .txt 文件(同名)放到这里作为 caption
#### 登录
wandb login
huggingface-cli login
### 执行训练
simpletuner train
## 注意事项与排错提示 ### Out of Memory (OOM) 视频训练非常耗资源,若 OOM: 1. **降低分辨率**:尝试 480p(`480x854` 等)。 2. **减少帧数**:将 `validation_num_video_frames` 与数据集 `num_frames` 降为 `33` 或 `49`。 ### 验证视频质量 - **黑/噪声视频**:通常是 CFG 过高或过低。LTX-2.0/2.3 从 `validation_guidance: 5.0` 开始;LTX-2.5 AV validation 从 video CFG `3.0` 和 `ltx2_validation_audio_guidance: 7.0` 开始。 - **运动抖动**:检查数据集帧率是否与模型训练帧率一致(通常 25fps)。 - **静止视频**:模型可能训练不足,或提示词未描述运动。可使用 “camera pans right”“zoom in”“running”等。 ### TREAD 训练 TREAD 也适用于视频,强烈推荐以节省算力。 在 `config.json` 中添加:
查看示例配置
{
  "tread_config": {
    "routes": [
      {
        "selection_ratio": 0.5,
        "start_layer_idx": 2,
        "end_layer_idx": -2
      }
    ]
  }
}
根据比例可加速约 25-40%。 ### 最低 VRAM 使用配置(7900XTX) 适用于 LTX Video 2 的实测配置,优先最小化 VRAM 使用。
查看 7900XTX 配置(最低 VRAM 使用)
{
  "base_model_precision": "int8-quanto",
  "checkpoint_step_interval": 100,
  "data_backend_config": "config/ltx2/multidatabackend.json",
  "disable_benchmark": true,
  "dynamo_mode": "",
  "evaluation_type": "none",
  "hub_model_id": "simpletuner-ltxvideo2-19b-t2v-lora-test",
  "learning_rate": 0.00006,
  "lr_warmup_steps": 50,
  "lycoris_config": "config/lycoris_config.json",
  "max_grad_norm": 0.1,
  "max_train_steps": 200,
  "minimum_image_size": 0,
  "model_family": "ltxvideo2",
  "model_flavour": "dev",
  "model_type": "lora",
  "num_train_epochs": 0,
  "offload_during_startup": true,
  "optimizer": "adamw_bf16",
  "output_dir": "output/examples/ltxvideo2-19b-t2v.peft-lora",
  "override_dataset_config": true,
  "ramtorch": true,
  "ramtorch_text_encoder": true,
  "report_to": "none",
  "resolution": 480,
  "scheduled_sampling_reflexflow": false,
  "seed": 42,
  "skip_file_discovery": "",
  "tracker_project_name": "lora-training",
  "tracker_run_name": "example-training-run",
  "train_batch_size": 2,
  "vae_batch_size": 1,
  "vae_enable_patch_conv": true,
  "vae_enable_slicing": true,
  "vae_enable_temporal_roll": true,
  "vae_enable_tiling": true,
  "validation_disable": true,
  "validation_disable_unconditional": true,
  "validation_guidance": 5,
  "validation_num_inference_steps": 40,
  "validation_num_video_frames": 81,
  "validation_prompt": "🟫 is holding a sign that says hello world from ltxvideo2",
  "validation_resolution": "768x512",
  "validation_seed": 42,
  "validation_using_datasets": false
}
### 纯音频训练 LTX-2 支持**纯音频训练**,即仅训练音频生成能力而无需视频文件。当您拥有音频数据集但没有对应视频内容时,此功能非常有用。 在纯音频模式下: - 视频 latents 自动置零(最小 64x64 分辨率以节省内存) - 视频损失被屏蔽(不计算) - 仅训练音频生成层 当您的数据集配置仅包含音频数据集(无视频或图像数据集)时,纯音频模式会**自动检测**。您也可以通过 `audio.audio_only: true` 显式启用。 #### 纯音频数据集配置
[
  {
    "id": "my-audio-dataset",
    "type": "local",
    "dataset_type": "audio",
    "instance_data_dir": "datasets/audio",
    "caption_strategy": "textfile",
    "audio": {
      "sample_rate": 16000,
      "channels": 2,
      "duration_interval": 3.0,
      "truncation_mode": "beginning"
    },
    "repeats": 10
  },
  {
    "id": "text-embeds",
    "type": "local",
    "dataset_type": "text_embeds",
    "default": true,
    "cache_dir": "cache/text/ltxvideo2",
    "disabled": false
  }
]
关键音频设置: - `channels`:LTX-2 音频 VAE **必须为 2**(立体声) - `duration_interval`:将音频分桶到指定间隔(例如 3.0 秒)。**对内存管理很重要** - 长音频文件会创建许多视频帧,即使它们是零 - `truncation_mode`:如何处理超过分桶时长的音频(`beginning`、`end` 或 `random`) #### 支持的音频格式 SimpleTuner 支持常见音频格式(`.wav`、`.flac`、`.mp3`、`.ogg`、`.opus` 等)以及可能包含纯音频内容的容器格式(`.mp4`、`.mpeg`、`.mkv`、`.webm`)。容器格式会使用 ffmpeg 自动提取。 #### 音频训练的 LoRA 目标 当数据集中检测到音频数据时,SimpleTuner 会自动将音频特定模块添加到 LoRA 目标中: - `audio_proj_in` - 音频输入投影 - `audio_proj_out` - 音频输出投影 - `audio_caption_projection.linear_1` - 音频字幕投影层 1 - `audio_caption_projection.linear_2` - 音频字幕投影层 2 这对于纯音频训练和联合音频+视频训练都会自动生效。 如果您想手动覆盖 LoRA 目标,请使用 `--peft_lora_target_modules` 并提供模块名称的 JSON 列表。 将音频文件放入 `instance_data_dir`,并提供相应的 `.txt` 字幕文件。 ### 验证流程(T2V vs I2V) - **T2V(文生视频)**:保持 `validation_using_datasets: false`,使用 `validation_prompt` 或 `validation_prompt_library`。 - **I2V(图生视频)**:设置 `validation_using_datasets: true`,并将 `eval_dataset_id` 指向提供参考图像的验证集。验证会切换到图生视频管线,并使用该图像作为条件输入。 - **S2V(音频条件)**:在 `validation_using_datasets: true` 下,确保 `eval_dataset_id` 指向带有 `s2v_datasets`(或默认的 `audio.auto_split`)的数据集。验证会自动加载缓存的音频 latents。 - **Spatial upscale 验证**:设置 `ltx2_validation_pipeline_mode: "spatial-upscale"`,使用 LTX-2 spatial upscaler pass 验证。Stage 1 以半分辨率运行,upsampler 将 video latents 放大 2 倍,stage 2 在请求分辨率重新去噪。`validation_audio_only` 仍使用单阶段路径。 ### 验证适配器(LoRAs) Lightricks 提供的 LoRA 可在验证中通过 `validation_adapter_path`(单个)或 `validation_adapter_config`(多次运行)加载。这些 repo 使用非标准权重文件名,请用 `repo_id:weight_name`。正确的文件名和相关资产请参考 LTX-2 collection: https://huggingface.co/collections/Lightricks/ltx-2 - `Lightricks/LTX-2-19b-IC-LoRA-Canny-Control:ltx-2-19b-ic-lora-canny-control.safetensors` - `Lightricks/LTX-2-19b-IC-LoRA-Depth-Control:ltx-2-19b-ic-lora-depth-control.safetensors` - `Lightricks/LTX-2-19b-IC-LoRA-Detailer:ltx-2-19b-ic-lora-detailer.safetensors` - `Lightricks/LTX-2-19b-IC-LoRA-Pose-Control:ltx-2-19b-ic-lora-pose-control.safetensors` - `Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-In:ltx-2-19b-lora-camera-control-dolly-in.safetensors` - `Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Out:ltx-2-19b-lora-camera-control-dolly-out.safetensors` - `Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Left:ltx-2-19b-lora-camera-control-dolly-left.safetensors` - `Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Right:ltx-2-19b-lora-camera-control-dolly-right.safetensors` - `Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Down:ltx-2-19b-lora-camera-control-jib-down.safetensors` - `Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Up:ltx-2-19b-lora-camera-control-jib-up.safetensors` - `Lightricks/LTX-2-19b-LoRA-Camera-Control-Static:ltx-2-19b-lora-camera-control-static.safetensors` 如需更快的验证,可将 `Lightricks/LTX-2-19b-distilled-lora-384:ltx-2-19b-distilled-lora-384.safetensors` 作为适配器,并设置 `validation_guidance: 1` 与 `validation_num_inference_steps: 8`。