GelerCAT commited on
Commit
7ff6bbc
·
verified ·
1 Parent(s): 71d38a4

Add tiny Echo modular pipeline fixture

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
audio_vae/config.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "AutoencoderKLLTX2Audio",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "attn_resolutions": null,
5
+ "base_channels": 4,
6
+ "causality_axis": "height",
7
+ "ch_mult": [
8
+ 1,
9
+ 1,
10
+ 1
11
+ ],
12
+ "double_z": true,
13
+ "dropout": 0.0,
14
+ "in_channels": 2,
15
+ "is_causal": true,
16
+ "latent_channels": 2,
17
+ "mel_bins": 8,
18
+ "mel_hop_length": 160,
19
+ "mid_block_add_attention": false,
20
+ "norm_type": "pixel",
21
+ "num_res_blocks": 1,
22
+ "output_channels": 2,
23
+ "resolution": 32,
24
+ "sample_rate": 16000
25
+ }
audio_vae/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b72b3c9f27b83ded97b8e121fc900165297bcc9a49a958c5d82d9bcda22f9a08
3
+ size 26112
connectors/config.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "LTX2TextConnectors",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "audio_connector_attention_head_dim": 4,
5
+ "audio_connector_num_attention_heads": 2,
6
+ "audio_connector_num_layers": 1,
7
+ "audio_connector_num_learnable_registers": null,
8
+ "audio_gated_attn": false,
9
+ "audio_hidden_dim": 8,
10
+ "caption_channels": 16,
11
+ "causal_temporal_positioning": false,
12
+ "connector_rope_base_seq_len": 32,
13
+ "per_modality_projections": true,
14
+ "proj_bias": false,
15
+ "rope_double_precision": false,
16
+ "rope_theta": 10000.0,
17
+ "rope_type": "split",
18
+ "text_proj_in_factor": 3,
19
+ "video_connector_attention_head_dim": 8,
20
+ "video_connector_num_attention_heads": 2,
21
+ "video_connector_num_layers": 1,
22
+ "video_connector_num_learnable_registers": null,
23
+ "video_gated_attn": false,
24
+ "video_hidden_dim": 16
25
+ }
connectors/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0c8fe14a9e80090ab4e1c44fd1af6af833590f1ace569db83963a9938e173ad9
3
+ size 24408
modular_model_index.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_blocks_class_name": "EchoBlocks",
3
+ "_class_name": "EchoModularPipeline",
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-modular-pipe",
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-modular-pipe",
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-modular-pipe",
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-modular-pipe",
52
+ "revision": null,
53
+ "subfolder": "tokenizer",
54
+ "type_hint": [
55
+ "transformers",
56
+ "GemmaTokenizer"
57
+ ],
58
+ "variant": null
59
+ }
60
+ ],
61
+ "transformer": [
62
+ "diffusers",
63
+ "LTX2VideoTransformer3DModel",
64
+ {
65
+ "pretrained_model_name_or_path": "Echo-Team/tiny-echo-modular-pipe",
66
+ "revision": null,
67
+ "subfolder": "transformer",
68
+ "type_hint": [
69
+ "diffusers",
70
+ "LTX2VideoTransformer3DModel"
71
+ ],
72
+ "variant": null
73
+ }
74
+ ],
75
+ "vae": [
76
+ "diffusers",
77
+ "AutoencoderKLLTX2Video",
78
+ {
79
+ "pretrained_model_name_or_path": "Echo-Team/tiny-echo-modular-pipe",
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-modular-pipe",
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,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Gemma3ForConditionalGeneration"
4
+ ],
5
+ "boi_token_index": 255999,
6
+ "dtype": "float32",
7
+ "eoi_token_index": 256000,
8
+ "image_token_index": 262144,
9
+ "initializer_range": 0.02,
10
+ "mm_tokens_per_image": 256,
11
+ "model_type": "gemma3",
12
+ "text_config": {
13
+ "_sliding_window_pattern": 6,
14
+ "attention_bias": false,
15
+ "attention_dropout": 0.0,
16
+ "attn_logit_softcapping": null,
17
+ "bos_token_id": 2,
18
+ "eos_token_id": 1,
19
+ "final_logit_softcapping": null,
20
+ "head_dim": 8,
21
+ "hidden_activation": "gelu_pytorch_tanh",
22
+ "hidden_size": 16,
23
+ "initializer_range": 0.02,
24
+ "intermediate_size": 32,
25
+ "layer_types": [
26
+ "sliding_attention",
27
+ "full_attention"
28
+ ],
29
+ "max_position_embeddings": 128,
30
+ "model_type": "gemma3_text",
31
+ "num_attention_heads": 2,
32
+ "num_hidden_layers": 2,
33
+ "num_key_value_heads": 1,
34
+ "pad_token_id": 0,
35
+ "query_pre_attn_scalar": 256,
36
+ "rms_norm_eps": 1e-06,
37
+ "rope_parameters": {
38
+ "full_attention": {
39
+ "rope_theta": 1000000.0,
40
+ "rope_type": "default"
41
+ },
42
+ "sliding_attention": {
43
+ "rope_theta": 10000.0,
44
+ "rope_type": "default"
45
+ }
46
+ },
47
+ "sliding_window": 32,
48
+ "tie_word_embeddings": true,
49
+ "use_bidirectional_attention": false,
50
+ "use_cache": true,
51
+ "vocab_size": 262145
52
+ },
53
+ "tie_word_embeddings": true,
54
+ "transformers_version": "5.16.1",
55
+ "vision_config": {
56
+ "attention_dropout": 0.0,
57
+ "hidden_act": "gelu_pytorch_tanh",
58
+ "hidden_size": 16,
59
+ "image_size": 16,
60
+ "intermediate_size": 32,
61
+ "layer_norm_eps": 1e-06,
62
+ "model_type": "siglip_vision_model",
63
+ "num_attention_heads": 2,
64
+ "num_channels": 3,
65
+ "num_hidden_layers": 1,
66
+ "patch_size": 8
67
+ }
68
+ }
text_encoder/generation_config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "bos_token_id": 2,
4
+ "eos_token_id": 1,
5
+ "output_attentions": false,
6
+ "output_hidden_states": false,
7
+ "pad_token_id": 0,
8
+ "transformers_version": "5.16.1",
9
+ "use_cache": true
10
+ }
text_encoder/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1db472bab3ced27b0415be199bb108f5c489e765afb9bb6db59309825d9b4147
3
+ size 16835184
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,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": true,
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
+ }
transformer/config.json ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "LTX2VideoTransformer3DModel",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "activation_fn": "gelu-approximate",
5
+ "attention_bias": true,
6
+ "attention_head_dim": 8,
7
+ "attention_out_bias": true,
8
+ "audio_attention_head_dim": 4,
9
+ "audio_cross_attention_dim": 8,
10
+ "audio_cross_attn_mod": true,
11
+ "audio_ff_bias": true,
12
+ "audio_gated_attn": true,
13
+ "audio_hop_length": 160,
14
+ "audio_in_channels": 4,
15
+ "audio_num_attention_heads": 2,
16
+ "audio_out_channels": 4,
17
+ "audio_patch_size": 1,
18
+ "audio_patch_size_t": 1,
19
+ "audio_pos_embed_max_pos": 20,
20
+ "audio_sampling_rate": 16000,
21
+ "audio_scale_factor": 4,
22
+ "base_height": 2048,
23
+ "base_width": 2048,
24
+ "caption_channels": 16,
25
+ "causal_offset": 1,
26
+ "cross_attention_dim": 16,
27
+ "cross_attn_mod": true,
28
+ "cross_attn_timestep_scale_multiplier": 1000,
29
+ "ff_bias": true,
30
+ "gated_attn": true,
31
+ "in_channels": 4,
32
+ "norm_elementwise_affine": false,
33
+ "norm_eps": 1e-06,
34
+ "num_attention_heads": 2,
35
+ "num_layers": 2,
36
+ "out_channels": 4,
37
+ "patch_size": 1,
38
+ "patch_size_t": 1,
39
+ "perturbed_attn": false,
40
+ "pos_embed_max_pos": 20,
41
+ "qk_norm": "rms_norm_across_heads",
42
+ "rope_double_precision": false,
43
+ "rope_theta": 10000.0,
44
+ "rope_type": "split",
45
+ "timestep_scale_multiplier": 1000,
46
+ "use_keyframes_abs_pos_embedding": false,
47
+ "use_prompt_adaln_single": true,
48
+ "use_prompt_embeddings": false,
49
+ "vae_scale_factors": [
50
+ 8,
51
+ 32,
52
+ 32
53
+ ]
54
+ }
transformer/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e636399e51c83b8a8d6706177a252a475de5c3ab85faa368777f178656336969
3
+ size 207896
vae/config.json ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "AutoencoderKLLTX2Video",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "block_out_channels": [
5
+ 8
6
+ ],
7
+ "decoder_block_out_channels": [
8
+ 8
9
+ ],
10
+ "decoder_causal": false,
11
+ "decoder_inject_noise": [
12
+ false,
13
+ false
14
+ ],
15
+ "decoder_layers_per_block": [
16
+ 1,
17
+ 1
18
+ ],
19
+ "decoder_spatial_padding_mode": "reflect",
20
+ "decoder_spatio_temporal_scaling": [
21
+ true
22
+ ],
23
+ "down_block_types": [
24
+ "LTX2VideoDownBlock3D",
25
+ "LTX2VideoDownBlock3D",
26
+ "LTX2VideoDownBlock3D",
27
+ "LTX2VideoDownBlock3D"
28
+ ],
29
+ "downsample_type": [
30
+ "spatial"
31
+ ],
32
+ "encoder_causal": true,
33
+ "encoder_spatial_padding_mode": "zeros",
34
+ "in_channels": 3,
35
+ "latent_channels": 4,
36
+ "layers_per_block": [
37
+ 1
38
+ ],
39
+ "out_channels": 3,
40
+ "patch_size": 1,
41
+ "patch_size_t": 1,
42
+ "resnet_norm_eps": 1e-06,
43
+ "scaling_factor": 1.0,
44
+ "spatial_compression_ratio": null,
45
+ "spatio_temporal_scaling": [
46
+ true
47
+ ],
48
+ "temporal_compression_ratio": null,
49
+ "timestep_conditioning": false,
50
+ "upsample_factor": [
51
+ 1
52
+ ],
53
+ "upsample_residual": [
54
+ false
55
+ ],
56
+ "upsample_type": [
57
+ "spatiotemporal",
58
+ "spatiotemporal",
59
+ "spatiotemporal"
60
+ ]
61
+ }
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,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "LTX2Vocoder",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "act_fn": "leaky_relu",
5
+ "antialias": false,
6
+ "antialias_kernel_size": 12,
7
+ "antialias_ratio": 2,
8
+ "final_act_fn": "tanh",
9
+ "final_bias": true,
10
+ "hidden_channels": 32,
11
+ "in_channels": 16,
12
+ "leaky_relu_negative_slope": 0.1,
13
+ "out_channels": 2,
14
+ "output_sampling_rate": 16000,
15
+ "resnet_dilations": [
16
+ [
17
+ 1,
18
+ 3,
19
+ 5
20
+ ]
21
+ ],
22
+ "resnet_kernel_sizes": [
23
+ 3
24
+ ],
25
+ "upsample_factors": [
26
+ 2,
27
+ 2
28
+ ],
29
+ "upsample_kernel_sizes": [
30
+ 4,
31
+ 4
32
+ ]
33
+ }
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