Yw22 commited on
Commit
2771d54
·
verified ·
1 Parent(s): 4d32856

Add tiny Echo-WM checkpoint for Diffusers tests

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: diffusers
3
+ tags:
4
+ - modular-diffusers
5
+ - diffusers
6
+ - echo-wm
7
+ - text-to-image
8
+ ---
9
+ This is a modular diffusion pipeline built with 🧨 Diffusers' modular pipeline framework.
10
+
11
+ **Pipeline Type**: EchoWMBlocks
12
+
13
+ **Description**:
14
+
15
+ This pipeline uses a 5-block architecture that can be customized and extended.
16
+
17
+ ## Example Usage
18
+
19
+ [TODO]
20
+
21
+ ## Pipeline Architecture
22
+
23
+ This modular pipeline is composed of the following blocks:
24
+
25
+ 1. **text** (`LTX2TextConditioningStep`)
26
+ - Text-conditioning stage for LTX-2.X: encodes the prompt(s), then runs the text connectors to produce the video/audio-branch connector embeddings the denoiser consumes. Outputs stay at one row per prompt -- the denoise stage expands them by `num_videos_per_prompt` -- so they can be reused across denoise runs.
27
+ 2. **camera** (`EchoWMCameraConditionStep`)
28
+ 3. **image_encoder** (`EchoWMVaeEncoderStep`)
29
+ - VAE encoder step that encodes the input `image` into normalized latents for image-to-video generation.
30
+ 4. **denoise** (`EchoWMImage2VideoCoreDenoiseStep`)
31
+ - Denoise block (image-to-video) that expands the text conditioning by `num_videos_per_prompt`, adds image conditioning and runs the joint denoising loop.
32
+ 5. **decode** (`EchoWMDecoderStep`)
33
+
34
+ ## Model Components
35
+
36
+ 1. text_encoder (`PreTrainedModel`)
37
+ 2. tokenizer (`PreTrainedTokenizerBase`)
38
+ 3. connectors (`LTX2TextConnectors`)
39
+ 4. transformer (`EchoWMTransformer3DModel`)
40
+ 5. vae (`AutoencoderKLLTX2Video`)
41
+ 6. video_processor (`VideoProcessor`)
42
+ 7. scheduler (`FlowMatchEulerDiscreteScheduler`)
43
+ 8. audio_vae (`AutoencoderKLLTX2Audio`)
44
+ 9. guider (`LTX2Guidance`)
45
+ 10. audio_guider (`LTX2Guidance`)
46
+ 11. vocoder (`LTX2Vocoder`)
47
+
48
+ ## Input/Output Specification
49
+
50
+ **Inputs:**
51
+
52
+ - `prompt` (`str`): The prompt or prompts to guide image generation.
53
+ - `negative_prompt` (`str`, *optional*): The prompt or prompts not to guide the image generation.
54
+ - `max_sequence_length` (`int`, *optional*, defaults to `1024`): Maximum sequence length for prompt encoding.
55
+ - `action` (`str`): WASD/IJKL action program.
56
+ - `height` (`int`, *optional*, defaults to `704`): The height in pixels of the generated image.
57
+ - `width` (`int`, *optional*, defaults to `1280`): The width in pixels of the generated image.
58
+ - `num_frames` (`int`, *optional*, defaults to `241`): Number of output video frames.
59
+ - `frame_rate` (`float`, *optional*, defaults to `24.0`): Output video frame rate.
60
+ - `translation_speed` (`float`, *optional*, defaults to `0.05`): Per-frame camera translation speed for W/A/S/D actions.
61
+ - `rotation_speed_deg` (`float`, *optional*, defaults to `0.5`): Per-frame camera yaw speed in degrees for J/L actions.
62
+ - `pitch_speed_deg` (`float`, *optional*, defaults to `0.2`): Per-frame camera pitch speed in degrees for I/K actions.
63
+ - `pitch_limit_deg` (`float`, *optional*, defaults to `60.0`): Maximum absolute camera pitch in degrees.
64
+ - `fov_deg` (`float`, *optional*, defaults to `70.0`): Horizontal camera field of view in degrees.
65
+ - `num_videos_per_prompt` (`int`, *optional*, defaults to `1`): The number of images to generate per prompt.
66
+ - `image` (`Image | list`): Reference image(s) for denoising. Can be a single image or list of images.
67
+ - `image_crf` (`int`, *optional*): H.264 CRF used to re-compress the conditioning `image` before VAE encode, matching the compression the model was trained against. `None` (default) resolves from the text-encoder generation (33 through LTX-2.3, 18 for LTX-2.5). Pass `0` to skip re-compression. Requires a `PIL.Image.Image` when re-compression runs.
68
+ - `generator` (`Generator`, *optional*): Torch generator for deterministic generation.
69
+ - `num_inference_steps` (`int`, *optional*, defaults to `30`): The number of denoising steps.
70
+ - `timesteps` (`Tensor`, *optional*): Timesteps for the denoising process.
71
+ - `sigmas` (`list`, *optional*): Custom sigmas for the denoising process.
72
+ - `latents` (`Tensor`, *optional*): Pre-generated noisy latents for image generation.
73
+ - `noise_scale` (`float`, *optional*): Interpolation factor between random noise and any provided latents. `None` (default) resolves to 0.0, which keeps the provided latents.
74
+ - `audio_latents` (`Tensor`, *optional*): Optional pre-encoded audio latents; random noise is used when not provided.
75
+ - `**denoiser_input_fields` (`None`, *optional*): conditional model inputs for the denoiser: e.g. prompt_embeds, negative_prompt_embeds, etc.
76
+ - `use_cross_timestep` (`bool`, *optional*, defaults to `True`): Whether to condition the transformer on a separate per-token cross timestep (LTX-2.3+).
77
+ - `attention_kwargs` (`dict`, *optional*): Additional kwargs for attention processors.
78
+ - `output_type` (`str`, *optional*, defaults to `pil`): Output format: 'pil', 'np', 'pt'.
79
+ - `decode_timestep` (`None`, *optional*, defaults to `0.0`): The timestep at which the VAE decodes the final latents.
80
+ - `decode_noise_scale` (`None`, *optional*): Noise interpolation factor applied to the latents at the decode timestep.
81
+ - `vae_tiling` (`bool`, *optional*, defaults to `True`): Enable spatial and temporal VAE decoding tiles to reduce peak memory usage.
82
+ - `vae_tile_size` (`int`, *optional*, defaults to `512`): Spatial tile long-side size in pixels; the short side follows the video aspect ratio.
83
+ - `vae_tile_overlap` (`int`, *optional*, defaults to `64`): Spatial tile overlap in pixels.
84
+ - `vae_temporal_tile_size` (`int`, *optional*, defaults to `64`): Temporal tile size in sample frames, excluding the causal boundary frame.
85
+ - `vae_temporal_tile_overlap` (`int`, *optional*, defaults to `24`): Temporal tile overlap in sample frames.
86
+
87
+ **Outputs:**
88
+
89
+ - `videos` (`list`): The generated videos.
90
+ - `audio` (`Tensor`): The generated audio waveform.
audio_vae/config.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "AutoencoderKLLTX2Audio",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "_name_or_path": "/tmp/tiny-echo-wm-base-diffusers",
5
+ "attn_resolutions": null,
6
+ "base_channels": 4,
7
+ "causality_axis": "height",
8
+ "ch_mult": [
9
+ 1
10
+ ],
11
+ "double_z": true,
12
+ "dropout": 0.0,
13
+ "in_channels": 2,
14
+ "is_causal": true,
15
+ "latent_channels": 2,
16
+ "mel_bins": 8,
17
+ "mel_hop_length": 160,
18
+ "mid_block_add_attention": false,
19
+ "norm_type": "pixel",
20
+ "num_res_blocks": 1,
21
+ "output_channels": 2,
22
+ "resolution": 32,
23
+ "sample_rate": 16000
24
+ }
audio_vae/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a86c1d8d653163146e3e1c6e5f4365ba23edb41993640b9f4458d39950862610
3
+ size 13416
connectors/config.json ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "LTX2TextConnectors",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "_name_or_path": "/tmp/tiny-echo-wm-base-diffusers",
5
+ "audio_connector_attention_head_dim": 8,
6
+ "audio_connector_num_attention_heads": 4,
7
+ "audio_connector_num_layers": 1,
8
+ "audio_connector_num_learnable_registers": null,
9
+ "audio_gated_attn": false,
10
+ "audio_hidden_dim": 2048,
11
+ "caption_channels": 32,
12
+ "causal_temporal_positioning": false,
13
+ "connector_rope_base_seq_len": 32,
14
+ "per_modality_projections": false,
15
+ "proj_bias": false,
16
+ "rope_double_precision": false,
17
+ "rope_theta": 10000.0,
18
+ "rope_type": "split",
19
+ "text_proj_in_factor": 3,
20
+ "video_connector_attention_head_dim": 8,
21
+ "video_connector_num_attention_heads": 4,
22
+ "video_connector_num_layers": 1,
23
+ "video_connector_num_learnable_registers": null,
24
+ "video_gated_attn": false,
25
+ "video_hidden_dim": 4096
26
+ }
connectors/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bf8b2f822740f1cc4cbad5462b9679dc7c1ff1a9138080d08ae432d17e51d01d
3
+ size 116776
modular_model_index.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_blocks_class_name": "EchoWMBlocks",
3
+ "_class_name": "EchoWMModularPipeline",
4
+ "_diffusers_version": "0.41.0.dev0",
5
+ "audio_vae": [
6
+ "diffusers",
7
+ "AutoencoderKLLTX2Audio",
8
+ {
9
+ "pretrained_model_name_or_path": "Echo-Team/tiny-echo-wm-base-diffusers",
10
+ "revision": null,
11
+ "subfolder": "audio_vae",
12
+ "type_hint": [
13
+ "diffusers",
14
+ "AutoencoderKLLTX2Audio"
15
+ ],
16
+ "variant": null
17
+ }
18
+ ],
19
+ "connectors": [
20
+ "ltx2",
21
+ "LTX2TextConnectors",
22
+ {
23
+ "pretrained_model_name_or_path": "Echo-Team/tiny-echo-wm-base-diffusers",
24
+ "revision": null,
25
+ "subfolder": "connectors",
26
+ "type_hint": [
27
+ "ltx2",
28
+ "LTX2TextConnectors"
29
+ ],
30
+ "variant": null
31
+ }
32
+ ],
33
+ "text_encoder": [
34
+ "transformers",
35
+ "Gemma3ForConditionalGeneration",
36
+ {
37
+ "pretrained_model_name_or_path": "Echo-Team/tiny-echo-wm-base-diffusers",
38
+ "revision": null,
39
+ "subfolder": "text_encoder",
40
+ "type_hint": [
41
+ "transformers",
42
+ "Gemma3ForConditionalGeneration"
43
+ ],
44
+ "variant": null
45
+ }
46
+ ],
47
+ "tokenizer": [
48
+ "transformers",
49
+ "GemmaTokenizer",
50
+ {
51
+ "pretrained_model_name_or_path": "Echo-Team/tiny-echo-wm-base-diffusers",
52
+ "revision": null,
53
+ "subfolder": "tokenizer",
54
+ "type_hint": [
55
+ "transformers",
56
+ "GemmaTokenizer"
57
+ ],
58
+ "variant": null
59
+ }
60
+ ],
61
+ "transformer": [
62
+ "diffusers",
63
+ "EchoWMTransformer3DModel",
64
+ {
65
+ "pretrained_model_name_or_path": "Echo-Team/tiny-echo-wm-base-diffusers",
66
+ "revision": null,
67
+ "subfolder": "transformer",
68
+ "type_hint": [
69
+ "diffusers",
70
+ "EchoWMTransformer3DModel"
71
+ ],
72
+ "variant": null
73
+ }
74
+ ],
75
+ "vae": [
76
+ "diffusers",
77
+ "AutoencoderKLLTX2Video",
78
+ {
79
+ "pretrained_model_name_or_path": "Echo-Team/tiny-echo-wm-base-diffusers",
80
+ "revision": null,
81
+ "subfolder": "vae",
82
+ "type_hint": [
83
+ "diffusers",
84
+ "AutoencoderKLLTX2Video"
85
+ ],
86
+ "variant": null
87
+ }
88
+ ],
89
+ "vocoder": [
90
+ "ltx2",
91
+ "LTX2Vocoder",
92
+ {
93
+ "pretrained_model_name_or_path": "Echo-Team/tiny-echo-wm-base-diffusers",
94
+ "revision": null,
95
+ "subfolder": "vocoder",
96
+ "type_hint": [
97
+ "ltx2",
98
+ "LTX2Vocoder"
99
+ ],
100
+ "variant": null
101
+ }
102
+ ]
103
+ }
text_encoder/config.json ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Gemma3ForConditionalGeneration"
4
+ ],
5
+ "boi_token_index": 255999,
6
+ "dtype": "float32",
7
+ "eoi_token_index": 256000,
8
+ "eos_token_id": [
9
+ 1,
10
+ 106
11
+ ],
12
+ "image_token_index": 262144,
13
+ "initializer_range": 0.02,
14
+ "mm_tokens_per_image": 256,
15
+ "model_type": "gemma3",
16
+ "text_config": {
17
+ "_sliding_window_pattern": 2,
18
+ "attention_bias": false,
19
+ "attention_dropout": 0.0,
20
+ "attn_logit_softcapping": null,
21
+ "bos_token_id": 2,
22
+ "cache_implementation": "hybrid",
23
+ "dtype": "float32",
24
+ "eos_token_id": 1,
25
+ "final_logit_softcapping": null,
26
+ "head_dim": 32,
27
+ "hidden_activation": "gelu_pytorch_tanh",
28
+ "hidden_size": 32,
29
+ "initializer_range": 0.02,
30
+ "intermediate_size": 128,
31
+ "layer_types": [
32
+ "sliding_attention",
33
+ "full_attention"
34
+ ],
35
+ "max_position_embeddings": 131072,
36
+ "model_type": "gemma3_text",
37
+ "num_attention_heads": 1,
38
+ "num_hidden_layers": 2,
39
+ "num_key_value_heads": 1,
40
+ "pad_token_id": 0,
41
+ "query_pre_attn_scalar": 168,
42
+ "rms_norm_eps": 1e-06,
43
+ "rope_parameters": {
44
+ "full_attention": {
45
+ "factor": 8.0,
46
+ "rope_theta": 1000000.0,
47
+ "rope_type": "linear"
48
+ },
49
+ "sliding_attention": {
50
+ "rope_theta": 10000.0,
51
+ "rope_type": "default"
52
+ }
53
+ },
54
+ "sliding_window": 1024,
55
+ "sliding_window_pattern": 2,
56
+ "tie_word_embeddings": true,
57
+ "use_bidirectional_attention": false,
58
+ "use_cache": true,
59
+ "vocab_size": 262208
60
+ },
61
+ "tie_word_embeddings": true,
62
+ "transformers_version": "5.16.1",
63
+ "vision_config": {
64
+ "attention_dropout": 0.0,
65
+ "dtype": "float32",
66
+ "hidden_act": "gelu_pytorch_tanh",
67
+ "hidden_size": 32,
68
+ "image_size": 896,
69
+ "intermediate_size": 128,
70
+ "layer_norm_eps": 1e-06,
71
+ "model_type": "siglip_vision_model",
72
+ "num_attention_heads": 1,
73
+ "num_channels": 3,
74
+ "num_hidden_layers": 2,
75
+ "patch_size": 14,
76
+ "vision_use_head": false
77
+ }
78
+ }
text_encoder/generation_config.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "bos_token_id": 2,
4
+ "cache_implementation": "hybrid",
5
+ "eos_token_id": [
6
+ 1,
7
+ 106
8
+ ],
9
+ "pad_token_id": 0,
10
+ "transformers_version": "5.16.1"
11
+ }
text_encoder/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2f2b2e38ee7aced4b332a26484feae78e3d809c0cec32b1bb2a50e62962d0614
3
+ size 34409608
tokenizer/chat_template.jinja ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {{ bos_token }}
2
+ {%- if messages[0]['role'] == 'system' -%}
3
+ {%- if messages[0]['content'] is string -%}
4
+ {%- set first_user_prefix = messages[0]['content'] + '
5
+
6
+ ' -%}
7
+ {%- else -%}
8
+ {%- set first_user_prefix = messages[0]['content'][0]['text'] + '
9
+
10
+ ' -%}
11
+ {%- endif -%}
12
+ {%- set loop_messages = messages[1:] -%}
13
+ {%- else -%}
14
+ {%- set first_user_prefix = "" -%}
15
+ {%- set loop_messages = messages -%}
16
+ {%- endif -%}
17
+ {%- for message in loop_messages -%}
18
+ {%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) -%}
19
+ {{ raise_exception("Conversation roles must alternate user/assistant/user/assistant/...") }}
20
+ {%- endif -%}
21
+ {%- if (message['role'] == 'assistant') -%}
22
+ {%- set role = "model" -%}
23
+ {%- else -%}
24
+ {%- set role = message['role'] -%}
25
+ {%- endif -%}
26
+ {{ '<start_of_turn>' + role + '
27
+ ' + (first_user_prefix if loop.first else "") }}
28
+ {%- if message['content'] is string -%}
29
+ {{ message['content'] | trim }}
30
+ {%- elif message['content'] is iterable -%}
31
+ {%- for item in message['content'] -%}
32
+ {%- if item['type'] == 'image' -%}
33
+ {{ '<start_of_image>' }}
34
+ {%- elif item['type'] == 'text' -%}
35
+ {{ item['text'] | trim }}
36
+ {%- endif -%}
37
+ {%- endfor -%}
38
+ {%- else -%}
39
+ {{ raise_exception("Invalid content type") }}
40
+ {%- endif -%}
41
+ {{ '<end_of_turn>
42
+ ' }}
43
+ {%- endfor -%}
44
+ {%- if add_generation_prompt -%}
45
+ {{'<start_of_turn>model
46
+ '}}
47
+ {%- endif -%}
tokenizer/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:daab2354f8a74e70d70b4d1f804939b68a8c9624dd06cb7858e52dd8970e9726
3
+ size 33384567
tokenizer/tokenizer_config.json ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "backend": "tokenizers",
3
+ "boi_token": "<start_of_image>",
4
+ "bos_token": "<bos>",
5
+ "clean_up_tokenization_spaces": false,
6
+ "eoi_token": "<end_of_image>",
7
+ "eos_token": "<eos>",
8
+ "image_token": "<image_soft_token>",
9
+ "is_local": true,
10
+ "local_files_only": false,
11
+ "mask_token": "<mask>",
12
+ "model_max_length": 1000000000000000019884624838656,
13
+ "model_specific_special_tokens": {
14
+ "boi_token": "<start_of_image>",
15
+ "eoi_token": "<end_of_image>",
16
+ "image_token": "<image_soft_token>"
17
+ },
18
+ "pad_token": "<pad>",
19
+ "processor_class": "Gemma3Processor",
20
+ "sp_model_kwargs": null,
21
+ "spaces_between_special_tokens": false,
22
+ "tokenizer_class": "GemmaTokenizer",
23
+ "unk_token": "<unk>",
24
+ "use_default_system_prompt": false,
25
+ "variant": null
26
+ }
transformer/config.json ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "EchoWMTransformer3DModel",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "_name_or_path": "/tmp/tiny-echo-wm-base-diffusers",
5
+ "activation_fn": "gelu-approximate",
6
+ "attention_bias": true,
7
+ "attention_head_dim": 8,
8
+ "attention_out_bias": true,
9
+ "audio_attention_head_dim": 4,
10
+ "audio_cross_attention_dim": 8,
11
+ "audio_cross_attn_mod": false,
12
+ "audio_ff_bias": true,
13
+ "audio_gated_attn": false,
14
+ "audio_hop_length": 160,
15
+ "audio_in_channels": 4,
16
+ "audio_num_attention_heads": 2,
17
+ "audio_out_channels": 4,
18
+ "audio_patch_size": 1,
19
+ "audio_patch_size_t": 1,
20
+ "audio_pos_embed_max_pos": 20,
21
+ "audio_sampling_rate": 16000,
22
+ "audio_scale_factor": 4,
23
+ "base_height": 2048,
24
+ "base_width": 2048,
25
+ "caption_channels": 32,
26
+ "causal_offset": 1,
27
+ "cross_attention_dim": 16,
28
+ "cross_attn_mod": false,
29
+ "cross_attn_timestep_scale_multiplier": 1000,
30
+ "ff_bias": true,
31
+ "gated_attn": false,
32
+ "in_channels": 4,
33
+ "norm_elementwise_affine": false,
34
+ "norm_eps": 1e-06,
35
+ "num_attention_heads": 2,
36
+ "num_layers": 2,
37
+ "out_channels": 4,
38
+ "patch_size": 1,
39
+ "patch_size_t": 1,
40
+ "perturbed_attn": false,
41
+ "pos_embed_max_pos": 20,
42
+ "qk_norm": "rms_norm_across_heads",
43
+ "rope_double_precision": false,
44
+ "rope_theta": 10000.0,
45
+ "rope_type": "split",
46
+ "timestep_scale_multiplier": 1000,
47
+ "ucpe_attention_dim": 16,
48
+ "ucpe_block_indices": [
49
+ 0,
50
+ 1
51
+ ],
52
+ "ucpe_freq_base": 100.0,
53
+ "ucpe_freq_scale": 1.0,
54
+ "ucpe_image_height": 32,
55
+ "ucpe_image_width": 32,
56
+ "ucpe_num_attention_heads": 2,
57
+ "ucpe_patches_x": 16,
58
+ "ucpe_patches_y": 16,
59
+ "use_keyframes_abs_pos_embedding": false,
60
+ "use_prompt_adaln_single": true,
61
+ "use_prompt_embeddings": true,
62
+ "vae_scale_factors": [
63
+ 8,
64
+ 32,
65
+ 32
66
+ ]
67
+ }
transformer/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:29ba3051f4bd3f28d856a4176456fe1a0756400f7ddc092369195376d23b5484
3
+ size 182912
vae/config.json ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "AutoencoderKLLTX2Video",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "_name_or_path": "/tmp/tiny-echo-wm-base-diffusers",
5
+ "block_out_channels": [
6
+ 8
7
+ ],
8
+ "decoder_block_out_channels": [
9
+ 8
10
+ ],
11
+ "decoder_causal": false,
12
+ "decoder_inject_noise": [
13
+ false,
14
+ false
15
+ ],
16
+ "decoder_layers_per_block": [
17
+ 1,
18
+ 1
19
+ ],
20
+ "decoder_spatial_padding_mode": "reflect",
21
+ "decoder_spatio_temporal_scaling": [
22
+ true
23
+ ],
24
+ "down_block_types": [
25
+ "LTX2VideoDownBlock3D",
26
+ "LTX2VideoDownBlock3D",
27
+ "LTX2VideoDownBlock3D",
28
+ "LTX2VideoDownBlock3D"
29
+ ],
30
+ "downsample_type": [
31
+ "spatial"
32
+ ],
33
+ "encoder_causal": true,
34
+ "encoder_spatial_padding_mode": "zeros",
35
+ "in_channels": 3,
36
+ "latent_channels": 4,
37
+ "layers_per_block": [
38
+ 1
39
+ ],
40
+ "out_channels": 3,
41
+ "patch_size": 1,
42
+ "patch_size_t": 1,
43
+ "resnet_norm_eps": 1e-06,
44
+ "scaling_factor": 1.0,
45
+ "spatial_compression_ratio": null,
46
+ "spatio_temporal_scaling": [
47
+ true
48
+ ],
49
+ "temporal_compression_ratio": null,
50
+ "timestep_conditioning": false,
51
+ "upsample_factor": [
52
+ 1
53
+ ],
54
+ "upsample_residual": [
55
+ false
56
+ ],
57
+ "upsample_type": [
58
+ "spatiotemporal",
59
+ "spatiotemporal",
60
+ "spatiotemporal"
61
+ ]
62
+ }
vae/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:056241bb4b8a029713f5f71bbe3c5f904cdea378fab80ecbb2a8e7e9035140c8
3
+ size 116464
vocoder/config.json ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "LTX2Vocoder",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "_name_or_path": "/tmp/tiny-echo-wm-base-diffusers",
5
+ "act_fn": "leaky_relu",
6
+ "antialias": false,
7
+ "antialias_kernel_size": 12,
8
+ "antialias_ratio": 2,
9
+ "final_act_fn": "tanh",
10
+ "final_bias": true,
11
+ "hidden_channels": 32,
12
+ "in_channels": 16,
13
+ "leaky_relu_negative_slope": 0.1,
14
+ "out_channels": 2,
15
+ "output_sampling_rate": 16000,
16
+ "resnet_dilations": [
17
+ [
18
+ 1,
19
+ 3,
20
+ 5
21
+ ]
22
+ ],
23
+ "resnet_kernel_sizes": [
24
+ 3
25
+ ],
26
+ "upsample_factors": [
27
+ 2,
28
+ 2
29
+ ],
30
+ "upsample_kernel_sizes": [
31
+ 4,
32
+ 4
33
+ ]
34
+ }
vocoder/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:be58882aaf71ba653bb607eb160f025c3526a85b589770836a1169b513cfbb94
3
+ size 51616