AviadDahan commited on
Commit
7d77286
·
verified ·
1 Parent(s): 22bd57f

SepGen Generation checkpoint

Browse files
Files changed (4) hide show
  1. README.md +75 -0
  2. config.json +50 -0
  3. lora_weights.safetensors +3 -0
  4. train_config.yaml +128 -0
README.md ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: ltx-2.x-community-license-agreement
4
+ license_link: https://github.com/Lightricks/LTX-2/blob/main/LICENSE-2_x
5
+ base_model: Lightricks/LTX-2.5
6
+ pipeline_tag: text-to-video
7
+ tags:
8
+ - audio-video
9
+ - source-separation
10
+ - audio-generation
11
+ - lora
12
+ - ltx-2.5
13
+ - sepgen
14
+ ---
15
+
16
+ # SepGen generation checkpoint (`gen-3k`)
17
+
18
+ **SepGen: Multi-Stem Audio-Video Separation and Generation in a Single Model**
19
+
20
+ **Aviad Dahan**<sup>1\*</sup>, **Rajaei Khatib**<sup>1\*</sup>, **Yonatan Bitton**<sup>2</sup>,
21
+ **Idan Szpektor**<sup>2</sup>, **Lior Wolf**<sup>1</sup>, **Raja Giryes**<sup>1</sup>
22
+
23
+ <sup>1</sup>Tel Aviv University, <sup>2</sup>Google · <sup>\*</sup>Equal contribution
24
+
25
+ [Paper](ARXIV_URL) · [Project page](https://sepgen.github.io/) · [Code](https://github.com/AviadDahan/SepGen) · Other checkpoint: [sep-12k (separation)](https://huggingface.co/AviadDahan/SepGen-Separation)
26
+
27
+ SepGen extends LTX-2.5 to emit the video, the audio-mix, and one waveform per captioned source in a
28
+ single sampling run. The same weights generate (scene caption and per-source captions → video,
29
+ audio-mix and stems) and separate (observed video and audio-mix → stems), selected by the noise
30
+ level of the audio-mix.
31
+
32
+ `gen-3k` is the generation checkpoint: `sep-12k` continued for 3,000 steps in which 70% of samples present the audio-mix at a noise level no higher than the stems'. From a scene caption and one caption per source it generates the video, the audio-mix and one waveform per source; it also separates, at parity with `sep-12k`.
33
+
34
+ ## Files
35
+
36
+ | File | Content |
37
+ |---|---|
38
+ | `lora_weights.safetensors` | the LoRA adapter (sha256 `a72b3c662ce8d6b6e29013bbedb797d48ee1c90e8b7d219af4a27329eb58515b`) |
39
+ | `config.json` | adapter and training summary |
40
+ | `train_config.yaml` | the full training config |
41
+
42
+ The adapter targets the audio stream of the LTX-2.5 22B dev transformer: rank and alpha 128, 480
43
+ modules, 327M parameters, bf16, ComfyUI key format (`diffusion_model.`). It is trained with
44
+ attention gates (block-diagonal caption routing, the protected audio-mix span, video reading audio
45
+ from the audio-mix only, Cross-Stem Attention Guidance) that must also be installed at inference,
46
+ so run it with the [SepGen code](https://github.com/AviadDahan/SepGen), not as a plain LoRA.
47
+
48
+ ## Usage
49
+
50
+ ```bash
51
+ git clone https://github.com/AviadDahan/SepGen && cd SepGen
52
+ bash setup.sh && source activate.sh && bash download_weights.sh
53
+ python generate.py examples/generation_prompts.json --out-dir outputs/gen # uses gen-3k
54
+ python separate.py --batch-manifest examples/separation_manifest.json --checkpoint gen-3k --out-dir outputs/sep
55
+ ```
56
+
57
+ `--checkpoint gen-3k` downloads this repo on first use.
58
+
59
+ ## License
60
+
61
+ These weights are a Derivative of LTX-2.x and are distributed under the
62
+ [LTX-2.x Community License Agreement](https://github.com/Lightricks/LTX-2/blob/main/LICENSE-2_x),
63
+ including its use-based restrictions (Attachment A) and the
64
+ [LTX Acceptable Use Policy](https://static.lightricks.com/legal/ltx-acceptable-use-policy.pdf).
65
+
66
+ ## Citation
67
+
68
+ ```bibtex
69
+ @article{dahan2026sepgen,
70
+ title = {SepGen: Multi-Stem Audio-Video Separation and Generation in a Single Model},
71
+ author = {Dahan, Aviad and Khatib, Rajaei and Bitton, Yonatan and Szpektor, Idan and Wolf, Lior and Giryes, Raja},
72
+ journal = {arXiv preprint ARXIV_ID},
73
+ year = {2026}
74
+ }
75
+ ```
config.json ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_type": "sepgen",
3
+ "adapter_type": "lora",
4
+ "base_model": "Lightricks/LTX-2.5",
5
+ "base_model_file": "diffusion_models/ltx-2.5-22b-dev-transformer-bf16.safetensors",
6
+ "base_model_quantization": "int8-quanto (separation, as in training); bf16 for generation",
7
+ "weights_file": "lora_weights.safetensors",
8
+ "weights_format": "safetensors, bf16, ComfyUI keys (diffusion_model.*)",
9
+ "lora_rank": 128,
10
+ "lora_alpha": 128,
11
+ "lora_dropout": 0.0,
12
+ "lora_modules": 480,
13
+ "trainable_parameters": 327155712,
14
+ "num_stems": 2,
15
+ "audio_span_layout": [
16
+ "stem0",
17
+ "stem1",
18
+ "audio_mix"
19
+ ],
20
+ "code": "https://github.com/AviadDahan/SepGen",
21
+ "paper_title": "SepGen: Multi-Stem Audio-Video Separation and Generation in a Single Model",
22
+ "license": "LTX-2.x Community License Agreement",
23
+ "checkpoint": "gen-3k",
24
+ "task": [
25
+ "generation",
26
+ "separation"
27
+ ],
28
+ "lora_target_modules": [
29
+ "audio_attn1.to_q",
30
+ "audio_attn1.to_k",
31
+ "audio_attn1.to_v",
32
+ "audio_attn1.to_out.0",
33
+ "audio_attn2.to_q",
34
+ "audio_attn2.to_out.0",
35
+ "video_to_audio_attn.to_q",
36
+ "video_to_audio_attn.to_out.0",
37
+ "audio_ff.net.0.proj",
38
+ "audio_ff.net.2"
39
+ ],
40
+ "training": {
41
+ "steps": 3000,
42
+ "init": "sep-12k",
43
+ "audio_mix_clean_fraction": 0.3,
44
+ "mix_sigma_mode": "independent_leq",
45
+ "learning_rate": 0.0001,
46
+ "scheduler": "linear to 0.1x over 12000 steps, stopped at step 3000",
47
+ "batch_size": 1
48
+ },
49
+ "sha256": "a72b3c662ce8d6b6e29013bbedb797d48ee1c90e8b7d219af4a27329eb58515b"
50
+ }
lora_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a72b3c662ce8d6b6e29013bbedb797d48ee1c90e8b7d219af4a27329eb58515b
3
+ size 654452792
train_config.yaml ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SepGen generation checkpoint (gen-3k): warm start from sep-12k, then 3,000 steps in which 30% of
2
+ # samples present the audio-mix clean and 70% present it at a noise level drawn independently and
3
+ # clamped to at most the stems' level (independent_leq). Fresh optimizer and step counter
4
+ # (no_resume); the LR schedule spans optimization.steps (12,000) and training stops at step 3000.
5
+ # python train.py configs/train_gen3k.yaml --init-checkpoint sep-12k --stop-at-step 3000
6
+ acceleration:
7
+ load_text_encoder_in_8bit: false
8
+ mixed_precision_mode: bf16
9
+ offload_optimizer_during_validation: true
10
+ quantization: int8-quanto
11
+ checkpoints:
12
+ interval: 250
13
+ keep_last_n: -1
14
+ no_resume: true
15
+ precision: bfloat16
16
+ data:
17
+ num_dataloader_workers: 2
18
+ preprocessed_data_root: data/precomputed_train
19
+ flow_matching:
20
+ timestep_sampling_mode: shifted_logit_normal
21
+ timestep_sampling_params: {}
22
+ hub:
23
+ hub_model_id: null
24
+ push_to_hub: false
25
+ joint_stem:
26
+ a2v_mix_only: true
27
+ first_frame_conditioning_p: 0.0
28
+ frozen_mix_lora: true
29
+ include_mix: true
30
+ mix_lead_alpha: 1.0
31
+ mix_loss_weight: 0.0
32
+ mix_sigma_mode: independent_leq
33
+ mix_span_energy_weight: 0.0
34
+ num_stems: 2
35
+ partition_loss_weight: 0.0
36
+ per_source_energy_weight: 0.0
37
+ positional_conditions_suffix: ''
38
+ positional_prompt_p: 0.0
39
+ ref_time_offset: 0.0
40
+ register_avail_dir: register_avail
41
+ register_mix:
42
+ ? ''
43
+ : 1
44
+ _pos: 1
45
+ _short: 1
46
+ rollout_training: false
47
+ sep_pattern_p: 0.3
48
+ span_attention_sibling: true
49
+ span_attention_topology: mix_protected
50
+ stem_audio_conditions_dir_prefix: conditions_stem_audio
51
+ video_loss_weight: 0.0
52
+ video_sigma_zero: false
53
+ positional_spatial_mask: true
54
+ positional_spatial_mask_eps: 1.0e-06
55
+ joint_stem_validation:
56
+ dev_guidance:
57
+ audio_cfg_scale: 7.0
58
+ modality_scale: 1.0
59
+ rescale_scale: 0.7
60
+ stg_scale: 0.0
61
+ video_cfg_scale: 3.0
62
+ lora:
63
+ alpha: 128
64
+ dropout: 0.0
65
+ rank: 128
66
+ target_modules:
67
+ - audio_attn1.to_q
68
+ - audio_attn1.to_k
69
+ - audio_attn1.to_v
70
+ - audio_attn1.to_out.0
71
+ - audio_attn2.to_q
72
+ - audio_attn2.to_out.0
73
+ - video_to_audio_attn.to_q
74
+ - video_to_audio_attn.to_out.0
75
+ - audio_ff.net.0.proj
76
+ - audio_ff.net.2
77
+ model:
78
+ audio_vae_path: ${SEPGEN_MODELS}/vae/ltx-2.5-audio-vae-bf16.safetensors
79
+ load_checkpoint: null
80
+ model_path: ${SEPGEN_MODELS}/diffusion_models/ltx-2.5-22b-dev-transformer-bf16.safetensors
81
+ text_encoder_path: ${SEPGEN_MODELS}/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors
82
+ training_mode: lora
83
+ video_vae_path: ${SEPGEN_MODELS}/vae/ltx-2.5-video-vae-bf16.safetensors
84
+ optimization:
85
+ batch_size: 1
86
+ enable_gradient_checkpointing: true
87
+ gradient_accumulation_steps: 1
88
+ learning_rate: 0.0001
89
+ max_grad_norm: 1.0
90
+ optimizer_type: adamw
91
+ scheduler_params: {}
92
+ scheduler_type: linear
93
+ steps: 12000
94
+ output_dir: outputs/gen-3k
95
+ seed: 42
96
+ training_strategy:
97
+ audio_latents_dir: audio_latents_mix
98
+ first_frame_conditioning_p: 0.0
99
+ name: text_to_video
100
+ with_audio: true
101
+ validation:
102
+ audio_cfg_scale: 7.0
103
+ audio_modality_guidance_scale: 1.0
104
+ audio_stg_scale: 0.0
105
+ frame_rate: 25.0
106
+ generate_audio: true
107
+ guidance_rescale: 0.7
108
+ inference_steps: 30
109
+ interval: null
110
+ negative_prompt: worst quality, inconsistent motion, blurry, jittery, distorted
111
+ seed: 42
112
+ skip_initial_validation: false
113
+ stg_blocks:
114
+ - 28
115
+ video_cfg_scale: 3.0
116
+ video_dims:
117
+ - 768
118
+ - 512
119
+ - 113
120
+ video_modality_guidance_scale: 1.0
121
+ video_stg_scale: 0.0
122
+ wandb:
123
+ enabled: false
124
+ entity: null
125
+ project: sepgen
126
+ log_validation_videos: false
127
+ tags:
128
+ - gen-3k