facehain Phr00t commited on
Commit
a19677b
·
0 Parent(s):

Duplicate from Phr00t/LTX2-Rapid-Merges

Browse files

Co-authored-by: Phr00t <Phr00t@users.noreply.huggingface.co>

.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz 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
LORAs/phr00t-povnsfw-v1.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e217a01d0e134047cd9be0695b5e6f63135a75cbdd4a2f95255d847484b35094
3
+ size 1233513128
LORAs/povnsfw-v3-complete.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5fde7f423f8974979802fef2614b67d320879b1cb974ef0ae72efe0c39b5f4d2
3
+ size 1233513128
LTXV-DoAlmostEverything-v3.json ADDED
@@ -0,0 +1,2640 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "6211fad4-3e9f-4c5c-8a17-a40a6126eebb",
3
+ "revision": 0,
4
+ "last_node_id": 189,
5
+ "last_link_id": 543,
6
+ "nodes": [
7
+ {
8
+ "id": 86,
9
+ "type": "ConditioningZeroOut",
10
+ "pos": [
11
+ 468.93724003880976,
12
+ 304.1977656746682
13
+ ],
14
+ "size": [
15
+ 204.134765625,
16
+ 26
17
+ ],
18
+ "flags": {},
19
+ "order": 32,
20
+ "mode": 0,
21
+ "inputs": [
22
+ {
23
+ "name": "conditioning",
24
+ "type": "CONDITIONING",
25
+ "link": 182
26
+ }
27
+ ],
28
+ "outputs": [
29
+ {
30
+ "name": "CONDITIONING",
31
+ "type": "CONDITIONING",
32
+ "links": [
33
+ 183
34
+ ]
35
+ }
36
+ ],
37
+ "properties": {
38
+ "Node name for S&R": "ConditioningZeroOut"
39
+ },
40
+ "widgets_values": []
41
+ },
42
+ {
43
+ "id": 13,
44
+ "type": "EmptyLTXVLatentVideo",
45
+ "pos": [
46
+ 70.38546001645443,
47
+ 320.9296935740362
48
+ ],
49
+ "size": [
50
+ 270,
51
+ 130
52
+ ],
53
+ "flags": {
54
+ "collapsed": true
55
+ },
56
+ "order": 27,
57
+ "mode": 0,
58
+ "inputs": [
59
+ {
60
+ "name": "width",
61
+ "type": "INT",
62
+ "widget": {
63
+ "name": "width"
64
+ },
65
+ "link": 113
66
+ },
67
+ {
68
+ "name": "height",
69
+ "type": "INT",
70
+ "widget": {
71
+ "name": "height"
72
+ },
73
+ "link": 114
74
+ },
75
+ {
76
+ "name": "length",
77
+ "type": "INT",
78
+ "widget": {
79
+ "name": "length"
80
+ },
81
+ "link": 123
82
+ }
83
+ ],
84
+ "outputs": [
85
+ {
86
+ "name": "LATENT",
87
+ "type": "LATENT",
88
+ "links": [
89
+ 237
90
+ ]
91
+ }
92
+ ],
93
+ "properties": {
94
+ "Node name for S&R": "EmptyLTXVLatentVideo"
95
+ },
96
+ "widgets_values": [
97
+ 768,
98
+ 512,
99
+ 97,
100
+ 1
101
+ ]
102
+ },
103
+ {
104
+ "id": 6,
105
+ "type": "CLIPTextEncode",
106
+ "pos": [
107
+ 57.70957238306283,
108
+ 386.75429600792825
109
+ ],
110
+ "size": [
111
+ 422.84503173828125,
112
+ 164.31304931640625
113
+ ],
114
+ "flags": {
115
+ "collapsed": true
116
+ },
117
+ "order": 28,
118
+ "mode": 0,
119
+ "inputs": [
120
+ {
121
+ "name": "clip",
122
+ "type": "CLIP",
123
+ "link": 222
124
+ },
125
+ {
126
+ "name": "text",
127
+ "type": "STRING",
128
+ "widget": {
129
+ "name": "text"
130
+ },
131
+ "link": 160
132
+ }
133
+ ],
134
+ "outputs": [
135
+ {
136
+ "name": "CONDITIONING",
137
+ "type": "CONDITIONING",
138
+ "slot_index": 0,
139
+ "links": [
140
+ 25,
141
+ 182
142
+ ]
143
+ }
144
+ ],
145
+ "properties": {
146
+ "Node name for S&R": "CLIPTextEncode"
147
+ },
148
+ "widgets_values": [
149
+ ""
150
+ ]
151
+ },
152
+ {
153
+ "id": 98,
154
+ "type": "Reroute",
155
+ "pos": [
156
+ 706.2275102752171,
157
+ 1239.9816184716012
158
+ ],
159
+ "size": [
160
+ 75,
161
+ 26
162
+ ],
163
+ "flags": {},
164
+ "order": 22,
165
+ "mode": 0,
166
+ "inputs": [
167
+ {
168
+ "name": "",
169
+ "type": "*",
170
+ "link": 257
171
+ }
172
+ ],
173
+ "outputs": [
174
+ {
175
+ "name": "",
176
+ "type": "VAE",
177
+ "links": [
178
+ 231,
179
+ 305
180
+ ]
181
+ }
182
+ ],
183
+ "properties": {
184
+ "showOutputText": false,
185
+ "horizontal": false
186
+ }
187
+ },
188
+ {
189
+ "id": 120,
190
+ "type": "LTXVCropGuides",
191
+ "pos": [
192
+ 470.88998941226936,
193
+ 741.1077405498987
194
+ ],
195
+ "size": [
196
+ 152.7134765625,
197
+ 66
198
+ ],
199
+ "flags": {},
200
+ "order": 42,
201
+ "mode": 0,
202
+ "inputs": [
203
+ {
204
+ "name": "positive",
205
+ "type": "CONDITIONING",
206
+ "link": 283
207
+ },
208
+ {
209
+ "name": "negative",
210
+ "type": "CONDITIONING",
211
+ "link": 284
212
+ },
213
+ {
214
+ "name": "latent",
215
+ "type": "LATENT",
216
+ "link": 312
217
+ }
218
+ ],
219
+ "outputs": [
220
+ {
221
+ "name": "positive",
222
+ "type": "CONDITIONING",
223
+ "links": null
224
+ },
225
+ {
226
+ "name": "negative",
227
+ "type": "CONDITIONING",
228
+ "links": null
229
+ },
230
+ {
231
+ "name": "latent",
232
+ "type": "LATENT",
233
+ "links": [
234
+ 339
235
+ ]
236
+ }
237
+ ],
238
+ "properties": {
239
+ "Node name for S&R": "LTXVCropGuides"
240
+ },
241
+ "widgets_values": []
242
+ },
243
+ {
244
+ "id": 87,
245
+ "type": "VAELoaderKJ",
246
+ "pos": [
247
+ 52.01282979897152,
248
+ 898.6521803548703
249
+ ],
250
+ "size": [
251
+ 270,
252
+ 106
253
+ ],
254
+ "flags": {},
255
+ "order": 0,
256
+ "mode": 0,
257
+ "inputs": [],
258
+ "outputs": [
259
+ {
260
+ "name": "VAE",
261
+ "type": "VAE",
262
+ "links": [
263
+ 184,
264
+ 185
265
+ ]
266
+ }
267
+ ],
268
+ "properties": {
269
+ "Node name for S&R": "VAELoaderKJ"
270
+ },
271
+ "widgets_values": [
272
+ "LTX2_audio_vae_bf16.safetensors",
273
+ "main_device",
274
+ "bf16"
275
+ ]
276
+ },
277
+ {
278
+ "id": 107,
279
+ "type": "VAELoaderKJ",
280
+ "pos": [
281
+ 61.71063803456682,
282
+ 1056.4618379666133
283
+ ],
284
+ "size": [
285
+ 270,
286
+ 106
287
+ ],
288
+ "flags": {},
289
+ "order": 1,
290
+ "mode": 0,
291
+ "inputs": [],
292
+ "outputs": [
293
+ {
294
+ "name": "VAE",
295
+ "type": "VAE",
296
+ "links": [
297
+ 257
298
+ ]
299
+ }
300
+ ],
301
+ "properties": {
302
+ "Node name for S&R": "VAELoaderKJ"
303
+ },
304
+ "widgets_values": [
305
+ "LTX2_video_vae_bf16.safetensors",
306
+ "main_device",
307
+ "bf16"
308
+ ]
309
+ },
310
+ {
311
+ "id": 83,
312
+ "type": "PrimitiveString",
313
+ "pos": [
314
+ -450.1769459783028,
315
+ 656.2021435835231
316
+ ],
317
+ "size": [
318
+ 270,
319
+ 58
320
+ ],
321
+ "flags": {},
322
+ "order": 2,
323
+ "mode": 0,
324
+ "inputs": [],
325
+ "outputs": [
326
+ {
327
+ "name": "STRING",
328
+ "type": "STRING",
329
+ "links": [
330
+ 172
331
+ ]
332
+ }
333
+ ],
334
+ "title": "CONFIG OutputDir",
335
+ "properties": {
336
+ "Node name for S&R": "PrimitiveString"
337
+ },
338
+ "widgets_values": [
339
+ "testrun/vid"
340
+ ]
341
+ },
342
+ {
343
+ "id": 113,
344
+ "type": "AudioConcat",
345
+ "pos": [
346
+ 476.48786333909476,
347
+ 1345.4204259126598
348
+ ],
349
+ "size": [
350
+ 270,
351
+ 78
352
+ ],
353
+ "flags": {
354
+ "collapsed": true
355
+ },
356
+ "order": 45,
357
+ "mode": 0,
358
+ "inputs": [
359
+ {
360
+ "name": "audio1",
361
+ "type": "AUDIO",
362
+ "link": 266
363
+ },
364
+ {
365
+ "name": "audio2",
366
+ "type": "AUDIO",
367
+ "link": 267
368
+ }
369
+ ],
370
+ "outputs": [
371
+ {
372
+ "name": "AUDIO",
373
+ "type": "AUDIO",
374
+ "links": [
375
+ 268
376
+ ]
377
+ }
378
+ ],
379
+ "properties": {
380
+ "Node name for S&R": "AudioConcat"
381
+ },
382
+ "widgets_values": [
383
+ "after"
384
+ ]
385
+ },
386
+ {
387
+ "id": 16,
388
+ "type": "LTXVAudioVAEDecode",
389
+ "pos": [
390
+ -65.49473092589464,
391
+ 1257.766946013722
392
+ ],
393
+ "size": [
394
+ 202.991796875,
395
+ 46
396
+ ],
397
+ "flags": {},
398
+ "order": 43,
399
+ "mode": 0,
400
+ "inputs": [
401
+ {
402
+ "name": "samples",
403
+ "type": "LATENT",
404
+ "link": 294
405
+ },
406
+ {
407
+ "label": "Audio VAE",
408
+ "name": "audio_vae",
409
+ "type": "VAE",
410
+ "link": 184
411
+ }
412
+ ],
413
+ "outputs": [
414
+ {
415
+ "name": "Audio",
416
+ "type": "AUDIO",
417
+ "links": [
418
+ 266,
419
+ 267
420
+ ]
421
+ }
422
+ ],
423
+ "properties": {
424
+ "Node name for S&R": "LTXVAudioVAEDecode"
425
+ },
426
+ "widgets_values": []
427
+ },
428
+ {
429
+ "id": 30,
430
+ "type": "ImageScale",
431
+ "pos": [
432
+ 395.8790588437294,
433
+ -747.2248575034247
434
+ ],
435
+ "size": [
436
+ 270,
437
+ 130
438
+ ],
439
+ "flags": {},
440
+ "order": 30,
441
+ "mode": 0,
442
+ "inputs": [
443
+ {
444
+ "name": "image",
445
+ "type": "IMAGE",
446
+ "link": 327
447
+ },
448
+ {
449
+ "name": "width",
450
+ "type": "INT",
451
+ "widget": {
452
+ "name": "width"
453
+ },
454
+ "link": 115
455
+ },
456
+ {
457
+ "name": "height",
458
+ "type": "INT",
459
+ "widget": {
460
+ "name": "height"
461
+ },
462
+ "link": 116
463
+ }
464
+ ],
465
+ "outputs": [
466
+ {
467
+ "name": "IMAGE",
468
+ "type": "IMAGE",
469
+ "links": [
470
+ 55
471
+ ]
472
+ }
473
+ ],
474
+ "properties": {
475
+ "Node name for S&R": "ImageScale"
476
+ },
477
+ "widgets_values": [
478
+ "lanczos",
479
+ 768,
480
+ 512,
481
+ "center"
482
+ ]
483
+ },
484
+ {
485
+ "id": 14,
486
+ "type": "LTXVSeparateAVLatent",
487
+ "pos": [
488
+ 856.0361542285414,
489
+ 522.0418220056398
490
+ ],
491
+ "size": [
492
+ 193.2916015625,
493
+ 46
494
+ ],
495
+ "flags": {},
496
+ "order": 41,
497
+ "mode": 0,
498
+ "inputs": [
499
+ {
500
+ "name": "av_latent",
501
+ "type": "LATENT",
502
+ "link": 524
503
+ }
504
+ ],
505
+ "outputs": [
506
+ {
507
+ "name": "video_latent",
508
+ "type": "LATENT",
509
+ "links": [
510
+ 312
511
+ ]
512
+ },
513
+ {
514
+ "name": "audio_latent",
515
+ "type": "LATENT",
516
+ "links": [
517
+ 294
518
+ ]
519
+ }
520
+ ],
521
+ "properties": {
522
+ "Node name for S&R": "LTXVSeparateAVLatent"
523
+ },
524
+ "widgets_values": []
525
+ },
526
+ {
527
+ "id": 36,
528
+ "type": "ImageScale",
529
+ "pos": [
530
+ 365.22403683350336,
531
+ -310.62561396611557
532
+ ],
533
+ "size": [
534
+ 270,
535
+ 130
536
+ ],
537
+ "flags": {},
538
+ "order": 31,
539
+ "mode": 0,
540
+ "inputs": [
541
+ {
542
+ "name": "image",
543
+ "type": "IMAGE",
544
+ "link": 326
545
+ },
546
+ {
547
+ "name": "width",
548
+ "type": "INT",
549
+ "widget": {
550
+ "name": "width"
551
+ },
552
+ "link": 111
553
+ },
554
+ {
555
+ "name": "height",
556
+ "type": "INT",
557
+ "widget": {
558
+ "name": "height"
559
+ },
560
+ "link": 112
561
+ }
562
+ ],
563
+ "outputs": [
564
+ {
565
+ "name": "IMAGE",
566
+ "type": "IMAGE",
567
+ "links": [
568
+ 78
569
+ ]
570
+ }
571
+ ],
572
+ "properties": {
573
+ "Node name for S&R": "ImageScale"
574
+ },
575
+ "widgets_values": [
576
+ "lanczos",
577
+ 768,
578
+ 512,
579
+ "center"
580
+ ]
581
+ },
582
+ {
583
+ "id": 138,
584
+ "type": "FL_RIFE",
585
+ "pos": [
586
+ 367.8592721627909,
587
+ 927.7948077939733
588
+ ],
589
+ "size": [
590
+ 281.7359375,
591
+ 106
592
+ ],
593
+ "flags": {},
594
+ "order": 47,
595
+ "mode": 0,
596
+ "inputs": [
597
+ {
598
+ "name": "images",
599
+ "type": "IMAGE",
600
+ "link": 337
601
+ },
602
+ {
603
+ "name": "multiplier",
604
+ "type": "INT",
605
+ "widget": {
606
+ "name": "multiplier"
607
+ },
608
+ "link": 340
609
+ }
610
+ ],
611
+ "outputs": [
612
+ {
613
+ "name": "IMAGE",
614
+ "type": "IMAGE",
615
+ "links": [
616
+ 338
617
+ ]
618
+ }
619
+ ],
620
+ "properties": {
621
+ "Node name for S&R": "FL_RIFE"
622
+ },
623
+ "widgets_values": [
624
+ "rife49",
625
+ 2,
626
+ false
627
+ ],
628
+ "color": "#16727c",
629
+ "bgcolor": "#4F0074"
630
+ },
631
+ {
632
+ "id": 18,
633
+ "type": "LTXVEmptyLatentAudio",
634
+ "pos": [
635
+ 501.5232855595259,
636
+ 506.7905336662731
637
+ ],
638
+ "size": [
639
+ 294.1360463610554,
640
+ 106
641
+ ],
642
+ "flags": {},
643
+ "order": 26,
644
+ "mode": 0,
645
+ "inputs": [
646
+ {
647
+ "label": "Audio VAE",
648
+ "name": "audio_vae",
649
+ "type": "VAE",
650
+ "link": 185
651
+ },
652
+ {
653
+ "name": "frames_number",
654
+ "type": "INT",
655
+ "widget": {
656
+ "name": "frames_number"
657
+ },
658
+ "link": 262
659
+ },
660
+ {
661
+ "name": "frame_rate",
662
+ "type": "INT",
663
+ "widget": {
664
+ "name": "frame_rate"
665
+ },
666
+ "link": 120
667
+ }
668
+ ],
669
+ "outputs": [
670
+ {
671
+ "name": "Latent",
672
+ "type": "LATENT",
673
+ "links": [
674
+ 22
675
+ ]
676
+ }
677
+ ],
678
+ "properties": {
679
+ "Node name for S&R": "LTXVEmptyLatentAudio"
680
+ },
681
+ "widgets_values": [
682
+ 93,
683
+ 20,
684
+ 1
685
+ ]
686
+ },
687
+ {
688
+ "id": 28,
689
+ "type": "LTXVPreprocess",
690
+ "pos": [
691
+ 399.6236101128782,
692
+ -558.659475973149
693
+ ],
694
+ "size": [
695
+ 270,
696
+ 58
697
+ ],
698
+ "flags": {},
699
+ "order": 34,
700
+ "mode": 0,
701
+ "inputs": [
702
+ {
703
+ "name": "image",
704
+ "type": "IMAGE",
705
+ "link": 55
706
+ },
707
+ {
708
+ "name": "img_compression",
709
+ "type": "INT",
710
+ "widget": {
711
+ "name": "img_compression"
712
+ },
713
+ "link": 166
714
+ }
715
+ ],
716
+ "outputs": [
717
+ {
718
+ "name": "output_image",
719
+ "type": "IMAGE",
720
+ "links": [
721
+ 429
722
+ ]
723
+ }
724
+ ],
725
+ "properties": {
726
+ "Node name for S&R": "LTXVPreprocess"
727
+ },
728
+ "widgets_values": [
729
+ 33
730
+ ]
731
+ },
732
+ {
733
+ "id": 20,
734
+ "type": "LTXVConditioning",
735
+ "pos": [
736
+ 167.91154661599933,
737
+ 1346.8726432456729
738
+ ],
739
+ "size": [
740
+ 270,
741
+ 78
742
+ ],
743
+ "flags": {
744
+ "collapsed": true
745
+ },
746
+ "order": 36,
747
+ "mode": 0,
748
+ "inputs": [
749
+ {
750
+ "name": "positive",
751
+ "type": "CONDITIONING",
752
+ "link": 25
753
+ },
754
+ {
755
+ "name": "negative",
756
+ "type": "CONDITIONING",
757
+ "link": 183
758
+ },
759
+ {
760
+ "name": "frame_rate",
761
+ "type": "FLOAT",
762
+ "widget": {
763
+ "name": "frame_rate"
764
+ },
765
+ "link": 130
766
+ }
767
+ ],
768
+ "outputs": [
769
+ {
770
+ "name": "positive",
771
+ "type": "CONDITIONING",
772
+ "links": [
773
+ 229
774
+ ]
775
+ },
776
+ {
777
+ "name": "negative",
778
+ "type": "CONDITIONING",
779
+ "links": [
780
+ 230
781
+ ]
782
+ }
783
+ ],
784
+ "properties": {
785
+ "Node name for S&R": "LTXVConditioning"
786
+ },
787
+ "widgets_values": [
788
+ 20
789
+ ]
790
+ },
791
+ {
792
+ "id": 64,
793
+ "type": "FL_IntToFloat",
794
+ "pos": [
795
+ 206.39800135510814,
796
+ 1257.3077356956799
797
+ ],
798
+ "size": [
799
+ 270,
800
+ 58
801
+ ],
802
+ "flags": {
803
+ "collapsed": true
804
+ },
805
+ "order": 23,
806
+ "mode": 0,
807
+ "inputs": [
808
+ {
809
+ "name": "int_value",
810
+ "type": "INT",
811
+ "widget": {
812
+ "name": "int_value"
813
+ },
814
+ "link": 129
815
+ }
816
+ ],
817
+ "outputs": [
818
+ {
819
+ "name": "float_value",
820
+ "type": "FLOAT",
821
+ "links": [
822
+ 130
823
+ ]
824
+ }
825
+ ],
826
+ "properties": {
827
+ "Node name for S&R": "FL_IntToFloat"
828
+ },
829
+ "widgets_values": [
830
+ 0
831
+ ],
832
+ "color": "#16727c",
833
+ "bgcolor": "#4F0074"
834
+ },
835
+ {
836
+ "id": 122,
837
+ "type": "LTXVChunkFeedForward",
838
+ "pos": [
839
+ -94.80819974734366,
840
+ 507.2728573836142
841
+ ],
842
+ "size": [
843
+ 272.35703125,
844
+ 82
845
+ ],
846
+ "flags": {},
847
+ "order": 29,
848
+ "mode": 0,
849
+ "inputs": [
850
+ {
851
+ "name": "model",
852
+ "type": "MODEL",
853
+ "link": 542
854
+ }
855
+ ],
856
+ "outputs": [
857
+ {
858
+ "name": "model",
859
+ "type": "MODEL",
860
+ "links": [
861
+ 422
862
+ ]
863
+ }
864
+ ],
865
+ "properties": {
866
+ "Node name for S&R": "LTXVChunkFeedForward"
867
+ },
868
+ "widgets_values": [
869
+ 4,
870
+ 4096
871
+ ]
872
+ },
873
+ {
874
+ "id": 55,
875
+ "type": "PrimitiveInt",
876
+ "pos": [
877
+ -744.0563043917452,
878
+ 536.042809803344
879
+ ],
880
+ "size": [
881
+ 270,
882
+ 82
883
+ ],
884
+ "flags": {},
885
+ "order": 3,
886
+ "mode": 0,
887
+ "inputs": [],
888
+ "outputs": [
889
+ {
890
+ "name": "INT",
891
+ "type": "INT",
892
+ "links": [
893
+ 120,
894
+ 129
895
+ ]
896
+ }
897
+ ],
898
+ "title": "CONFIG FrameRate",
899
+ "properties": {
900
+ "Node name for S&R": "PrimitiveInt"
901
+ },
902
+ "widgets_values": [
903
+ 24,
904
+ "fixed"
905
+ ]
906
+ },
907
+ {
908
+ "id": 67,
909
+ "type": "PrimitiveFloat",
910
+ "pos": [
911
+ -876.7196732219651,
912
+ 661.1026332072104
913
+ ],
914
+ "size": [
915
+ 406.8122377135361,
916
+ 58
917
+ ],
918
+ "flags": {},
919
+ "order": 4,
920
+ "mode": 0,
921
+ "inputs": [],
922
+ "outputs": [
923
+ {
924
+ "name": "FLOAT",
925
+ "type": "FLOAT",
926
+ "links": [
927
+ 132
928
+ ]
929
+ }
930
+ ],
931
+ "title": "CONFIG OutputFrameRate (FrameRate * Interpolate)",
932
+ "properties": {
933
+ "Node name for S&R": "PrimitiveFloat"
934
+ },
935
+ "widgets_values": [
936
+ 48
937
+ ]
938
+ },
939
+ {
940
+ "id": 17,
941
+ "type": "VHS_VideoCombine",
942
+ "pos": [
943
+ 1166.209921716292,
944
+ 237.68982087837267
945
+ ],
946
+ "size": [
947
+ 441.7333984375,
948
+ 672.4103064903845
949
+ ],
950
+ "flags": {},
951
+ "order": 48,
952
+ "mode": 0,
953
+ "inputs": [
954
+ {
955
+ "name": "images",
956
+ "type": "IMAGE",
957
+ "link": 338
958
+ },
959
+ {
960
+ "name": "audio",
961
+ "shape": 7,
962
+ "type": "AUDIO",
963
+ "link": 268
964
+ },
965
+ {
966
+ "name": "meta_batch",
967
+ "shape": 7,
968
+ "type": "VHS_BatchManager",
969
+ "link": null
970
+ },
971
+ {
972
+ "name": "vae",
973
+ "shape": 7,
974
+ "type": "VAE",
975
+ "link": null
976
+ },
977
+ {
978
+ "name": "frame_rate",
979
+ "type": "FLOAT",
980
+ "widget": {
981
+ "name": "frame_rate"
982
+ },
983
+ "link": 132
984
+ },
985
+ {
986
+ "name": "filename_prefix",
987
+ "type": "STRING",
988
+ "widget": {
989
+ "name": "filename_prefix"
990
+ },
991
+ "link": 172
992
+ }
993
+ ],
994
+ "outputs": [
995
+ {
996
+ "name": "Filenames",
997
+ "type": "VHS_FILENAMES",
998
+ "links": null
999
+ }
1000
+ ],
1001
+ "properties": {
1002
+ "Node name for S&R": "VHS_VideoCombine"
1003
+ },
1004
+ "widgets_values": {
1005
+ "frame_rate": 40,
1006
+ "loop_count": 0,
1007
+ "filename_prefix": "AnimateDiff",
1008
+ "format": "video/nvenc_h264-mp4",
1009
+ "pix_fmt": "yuv420p",
1010
+ "bitrate": 5,
1011
+ "megabit": true,
1012
+ "save_metadata": true,
1013
+ "pingpong": false,
1014
+ "save_output": false,
1015
+ "videopreview": {
1016
+ "hidden": false,
1017
+ "paused": false,
1018
+ "params": {
1019
+ "filename": "vid_00053-audio.mp4",
1020
+ "subfolder": "testrun",
1021
+ "type": "temp",
1022
+ "format": "video/nvenc_h264-mp4",
1023
+ "frame_rate": 48,
1024
+ "workflow": "vid_00053.png",
1025
+ "fullpath": "D:\\ComfyUI\\ComfyUI\\temp\\testrun\\vid_00053-audio.mp4"
1026
+ }
1027
+ }
1028
+ }
1029
+ },
1030
+ {
1031
+ "id": 80,
1032
+ "type": "PrimitiveFloat",
1033
+ "pos": [
1034
+ -752.686429575399,
1035
+ 895.1490401381469
1036
+ ],
1037
+ "size": [
1038
+ 270,
1039
+ 58
1040
+ ],
1041
+ "flags": {},
1042
+ "order": 5,
1043
+ "mode": 0,
1044
+ "inputs": [],
1045
+ "outputs": [
1046
+ {
1047
+ "name": "FLOAT",
1048
+ "type": "FLOAT",
1049
+ "links": [
1050
+ 238
1051
+ ]
1052
+ }
1053
+ ],
1054
+ "title": "CONFIG ImgStartStrength (I2V)",
1055
+ "properties": {
1056
+ "Node name for S&R": "PrimitiveFloat"
1057
+ },
1058
+ "widgets_values": [
1059
+ 1
1060
+ ]
1061
+ },
1062
+ {
1063
+ "id": 103,
1064
+ "type": "PrimitiveFloat",
1065
+ "pos": [
1066
+ -462.84754052220404,
1067
+ 892.3417262030376
1068
+ ],
1069
+ "size": [
1070
+ 270,
1071
+ 58
1072
+ ],
1073
+ "flags": {},
1074
+ "order": 6,
1075
+ "mode": 0,
1076
+ "inputs": [],
1077
+ "outputs": [
1078
+ {
1079
+ "name": "FLOAT",
1080
+ "type": "FLOAT",
1081
+ "links": [
1082
+ 260
1083
+ ]
1084
+ }
1085
+ ],
1086
+ "title": "CONFIG ImgEndStrength (I2V)",
1087
+ "properties": {
1088
+ "Node name for S&R": "PrimitiveFloat"
1089
+ },
1090
+ "widgets_values": [
1091
+ 1
1092
+ ]
1093
+ },
1094
+ {
1095
+ "id": 129,
1096
+ "type": "VAEDecodeTiled",
1097
+ "pos": [
1098
+ 792.9524669825933,
1099
+ 893.5118047386943
1100
+ ],
1101
+ "size": [
1102
+ 270,
1103
+ 150
1104
+ ],
1105
+ "flags": {},
1106
+ "order": 44,
1107
+ "mode": 0,
1108
+ "inputs": [
1109
+ {
1110
+ "name": "samples",
1111
+ "type": "LATENT",
1112
+ "link": 339
1113
+ },
1114
+ {
1115
+ "name": "vae",
1116
+ "type": "VAE",
1117
+ "link": 305
1118
+ }
1119
+ ],
1120
+ "outputs": [
1121
+ {
1122
+ "name": "IMAGE",
1123
+ "type": "IMAGE",
1124
+ "links": [
1125
+ 315
1126
+ ]
1127
+ }
1128
+ ],
1129
+ "properties": {
1130
+ "Node name for S&R": "VAEDecodeTiled"
1131
+ },
1132
+ "widgets_values": [
1133
+ 512,
1134
+ 64,
1135
+ 64,
1136
+ 16
1137
+ ]
1138
+ },
1139
+ {
1140
+ "id": 133,
1141
+ "type": "VHS_SelectImages",
1142
+ "pos": [
1143
+ 841.3662134541903,
1144
+ 1151.3173428866016
1145
+ ],
1146
+ "size": [
1147
+ 212.5712890625,
1148
+ 106
1149
+ ],
1150
+ "flags": {
1151
+ "collapsed": false
1152
+ },
1153
+ "order": 46,
1154
+ "mode": 0,
1155
+ "inputs": [
1156
+ {
1157
+ "name": "image",
1158
+ "type": "IMAGE",
1159
+ "link": 315
1160
+ },
1161
+ {
1162
+ "name": "indexes",
1163
+ "type": "STRING",
1164
+ "widget": {
1165
+ "name": "indexes"
1166
+ },
1167
+ "link": 314
1168
+ }
1169
+ ],
1170
+ "outputs": [
1171
+ {
1172
+ "name": "IMAGE",
1173
+ "type": "IMAGE",
1174
+ "links": [
1175
+ 337
1176
+ ]
1177
+ }
1178
+ ],
1179
+ "properties": {
1180
+ "Node name for S&R": "VHS_SelectImages"
1181
+ },
1182
+ "widgets_values": {
1183
+ "indexes": "0",
1184
+ "err_if_missing": false,
1185
+ "err_if_empty": false
1186
+ }
1187
+ },
1188
+ {
1189
+ "id": 79,
1190
+ "type": "PrimitiveInt",
1191
+ "pos": [
1192
+ -532.1519154002644,
1193
+ 761.7685982047618
1194
+ ],
1195
+ "size": [
1196
+ 344.13510055073175,
1197
+ 82.76428881288575
1198
+ ],
1199
+ "flags": {},
1200
+ "order": 7,
1201
+ "mode": 0,
1202
+ "inputs": [],
1203
+ "outputs": [
1204
+ {
1205
+ "name": "INT",
1206
+ "type": "INT",
1207
+ "links": [
1208
+ 166,
1209
+ 167
1210
+ ]
1211
+ }
1212
+ ],
1213
+ "title": "CONFIG CompressionArtifacts (I2V)",
1214
+ "properties": {
1215
+ "Node name for S&R": "PrimitiveInt"
1216
+ },
1217
+ "widgets_values": [
1218
+ 28,
1219
+ "fixed"
1220
+ ]
1221
+ },
1222
+ {
1223
+ "id": 124,
1224
+ "type": "RandomNoise",
1225
+ "pos": [
1226
+ 826.4017537364975,
1227
+ 612.0844950861072
1228
+ ],
1229
+ "size": [
1230
+ 270,
1231
+ 82
1232
+ ],
1233
+ "flags": {},
1234
+ "order": 25,
1235
+ "mode": 0,
1236
+ "inputs": [
1237
+ {
1238
+ "name": "noise_seed",
1239
+ "type": "INT",
1240
+ "widget": {
1241
+ "name": "noise_seed"
1242
+ },
1243
+ "link": 303
1244
+ }
1245
+ ],
1246
+ "outputs": [
1247
+ {
1248
+ "name": "NOISE",
1249
+ "type": "NOISE",
1250
+ "links": [
1251
+ 292
1252
+ ]
1253
+ }
1254
+ ],
1255
+ "properties": {
1256
+ "Node name for S&R": "RandomNoise"
1257
+ },
1258
+ "widgets_values": [
1259
+ 915634509670181,
1260
+ "randomize"
1261
+ ]
1262
+ },
1263
+ {
1264
+ "id": 126,
1265
+ "type": "KSamplerSelect",
1266
+ "pos": [
1267
+ 367.9038131289896,
1268
+ 1119.4486746851785
1269
+ ],
1270
+ "size": [
1271
+ 270,
1272
+ 58
1273
+ ],
1274
+ "flags": {},
1275
+ "order": 8,
1276
+ "mode": 0,
1277
+ "inputs": [],
1278
+ "outputs": [
1279
+ {
1280
+ "name": "SAMPLER",
1281
+ "type": "SAMPLER",
1282
+ "links": [
1283
+ 298
1284
+ ]
1285
+ }
1286
+ ],
1287
+ "properties": {
1288
+ "Node name for S&R": "KSamplerSelect"
1289
+ },
1290
+ "widgets_values": [
1291
+ "lcm"
1292
+ ]
1293
+ },
1294
+ {
1295
+ "id": 132,
1296
+ "type": "ManualSigmas",
1297
+ "pos": [
1298
+ 382.3291314535384,
1299
+ 1244.7781430275843
1300
+ ],
1301
+ "size": [
1302
+ 270,
1303
+ 58
1304
+ ],
1305
+ "flags": {},
1306
+ "order": 9,
1307
+ "mode": 0,
1308
+ "inputs": [],
1309
+ "outputs": [
1310
+ {
1311
+ "name": "SIGMAS",
1312
+ "type": "SIGMAS",
1313
+ "links": [
1314
+ 313
1315
+ ]
1316
+ }
1317
+ ],
1318
+ "properties": {
1319
+ "Node name for S&R": "ManualSigmas",
1320
+ "cnr_id": "comfy-core",
1321
+ "ver": "0.5.1",
1322
+ "enableTabs": false,
1323
+ "tabWidth": 65,
1324
+ "tabXOffset": 10,
1325
+ "hasSecondTab": false,
1326
+ "secondTabText": "Send Back",
1327
+ "secondTabOffset": 80,
1328
+ "secondTabWidth": 65
1329
+ },
1330
+ "widgets_values": [
1331
+ "1., 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0"
1332
+ ]
1333
+ },
1334
+ {
1335
+ "id": 19,
1336
+ "type": "LTXVConcatAVLatent",
1337
+ "pos": [
1338
+ 528.0239794986891,
1339
+ 385.7500846718483
1340
+ ],
1341
+ "size": [
1342
+ 181.308203125,
1343
+ 46
1344
+ ],
1345
+ "flags": {},
1346
+ "order": 39,
1347
+ "mode": 0,
1348
+ "inputs": [
1349
+ {
1350
+ "name": "video_latent",
1351
+ "type": "LATENT",
1352
+ "link": 236
1353
+ },
1354
+ {
1355
+ "name": "audio_latent",
1356
+ "type": "LATENT",
1357
+ "link": 22
1358
+ }
1359
+ ],
1360
+ "outputs": [
1361
+ {
1362
+ "name": "latent",
1363
+ "type": "LATENT",
1364
+ "links": [
1365
+ 301
1366
+ ]
1367
+ }
1368
+ ],
1369
+ "properties": {
1370
+ "Node name for S&R": "LTXVConcatAVLatent"
1371
+ },
1372
+ "widgets_values": []
1373
+ },
1374
+ {
1375
+ "id": 160,
1376
+ "type": "LTX2AttentionTunerPatch",
1377
+ "pos": [
1378
+ 205.55804225546288,
1379
+ 504.17707568278354
1380
+ ],
1381
+ "size": [
1382
+ 272.1225332638537,
1383
+ 154
1384
+ ],
1385
+ "flags": {},
1386
+ "order": 33,
1387
+ "mode": 0,
1388
+ "inputs": [
1389
+ {
1390
+ "name": "model",
1391
+ "type": "MODEL",
1392
+ "link": 422
1393
+ }
1394
+ ],
1395
+ "outputs": [
1396
+ {
1397
+ "name": "model",
1398
+ "type": "MODEL",
1399
+ "links": [
1400
+ 478
1401
+ ]
1402
+ }
1403
+ ],
1404
+ "properties": {
1405
+ "Node name for S&R": "LTX2AttentionTunerPatch"
1406
+ },
1407
+ "widgets_values": [
1408
+ "",
1409
+ 1,
1410
+ 1,
1411
+ 1,
1412
+ 1
1413
+ ]
1414
+ },
1415
+ {
1416
+ "id": 123,
1417
+ "type": "LTXVNormalizingSampler",
1418
+ "pos": [
1419
+ 778.8917828717998,
1420
+ 312.5793865247201
1421
+ ],
1422
+ "size": [
1423
+ 322.87109375,
1424
+ 162
1425
+ ],
1426
+ "flags": {},
1427
+ "order": 40,
1428
+ "mode": 0,
1429
+ "inputs": [
1430
+ {
1431
+ "name": "noise",
1432
+ "type": "NOISE",
1433
+ "link": 292
1434
+ },
1435
+ {
1436
+ "name": "guider",
1437
+ "type": "GUIDER",
1438
+ "link": 525
1439
+ },
1440
+ {
1441
+ "name": "sampler",
1442
+ "type": "SAMPLER",
1443
+ "link": 298
1444
+ },
1445
+ {
1446
+ "name": "sigmas",
1447
+ "type": "SIGMAS",
1448
+ "link": 313
1449
+ },
1450
+ {
1451
+ "name": "latent_image",
1452
+ "type": "LATENT",
1453
+ "link": 301
1454
+ }
1455
+ ],
1456
+ "outputs": [
1457
+ {
1458
+ "name": "denoised_output",
1459
+ "type": "LATENT",
1460
+ "links": [
1461
+ 524
1462
+ ]
1463
+ }
1464
+ ],
1465
+ "properties": {
1466
+ "Node name for S&R": "LTXVNormalizingSampler"
1467
+ },
1468
+ "widgets_values": [
1469
+ "1,1,1,1,1,1,1,1",
1470
+ "1,1,0.25,1,1,0.25,1,1"
1471
+ ]
1472
+ },
1473
+ {
1474
+ "id": 170,
1475
+ "type": "BasicGuider",
1476
+ "pos": [
1477
+ 871.7937029860939,
1478
+ 774.5575550315218
1479
+ ],
1480
+ "size": [
1481
+ 159.568359375,
1482
+ 46
1483
+ ],
1484
+ "flags": {},
1485
+ "order": 38,
1486
+ "mode": 0,
1487
+ "inputs": [
1488
+ {
1489
+ "name": "model",
1490
+ "type": "MODEL",
1491
+ "link": 478
1492
+ },
1493
+ {
1494
+ "name": "conditioning",
1495
+ "type": "CONDITIONING",
1496
+ "link": 479
1497
+ }
1498
+ ],
1499
+ "outputs": [
1500
+ {
1501
+ "name": "GUIDER",
1502
+ "type": "GUIDER",
1503
+ "links": [
1504
+ 525
1505
+ ]
1506
+ }
1507
+ ],
1508
+ "properties": {
1509
+ "Node name for S&R": "BasicGuider"
1510
+ },
1511
+ "widgets_values": []
1512
+ },
1513
+ {
1514
+ "id": 110,
1515
+ "type": "Reroute",
1516
+ "pos": [
1517
+ 562.412226379484,
1518
+ -50.32402535799788
1519
+ ],
1520
+ "size": [
1521
+ 75,
1522
+ 26
1523
+ ],
1524
+ "flags": {},
1525
+ "order": 24,
1526
+ "mode": 0,
1527
+ "inputs": [
1528
+ {
1529
+ "name": "",
1530
+ "type": "*",
1531
+ "link": 260
1532
+ }
1533
+ ],
1534
+ "outputs": [
1535
+ {
1536
+ "name": "",
1537
+ "type": "FLOAT",
1538
+ "links": []
1539
+ }
1540
+ ],
1541
+ "properties": {
1542
+ "showOutputText": false,
1543
+ "horizontal": false
1544
+ }
1545
+ },
1546
+ {
1547
+ "id": 88,
1548
+ "type": "DualCLIPLoader",
1549
+ "pos": [
1550
+ -97.09658469846406,
1551
+ 711.7819231794958
1552
+ ],
1553
+ "size": [
1554
+ 499.1569560157438,
1555
+ 139.72588938149875
1556
+ ],
1557
+ "flags": {},
1558
+ "order": 10,
1559
+ "mode": 0,
1560
+ "inputs": [],
1561
+ "outputs": [
1562
+ {
1563
+ "name": "CLIP",
1564
+ "type": "CLIP",
1565
+ "links": [
1566
+ 222
1567
+ ]
1568
+ }
1569
+ ],
1570
+ "properties": {
1571
+ "Node name for S&R": "DualCLIPLoader"
1572
+ },
1573
+ "widgets_values": [
1574
+ "gemma_3_12B_it_fp8_scaled.safetensors",
1575
+ "ltx-2-19b-embeddings_connector_distill_bf16.safetensors",
1576
+ "ltxv",
1577
+ "cpu"
1578
+ ]
1579
+ },
1580
+ {
1581
+ "id": 62,
1582
+ "type": "PrimitiveString",
1583
+ "pos": [
1584
+ -871.269686219571,
1585
+ 1158.2921644464702
1586
+ ],
1587
+ "size": [
1588
+ 675.8886281681756,
1589
+ 70.95390259380656
1590
+ ],
1591
+ "flags": {},
1592
+ "order": 11,
1593
+ "mode": 0,
1594
+ "inputs": [],
1595
+ "outputs": [
1596
+ {
1597
+ "name": "STRING",
1598
+ "type": "STRING",
1599
+ "links": [
1600
+ 314
1601
+ ]
1602
+ }
1603
+ ],
1604
+ "title": "CONFIG ImageFrameSelect (0:<frame count - 16>*2 or 0:-1 for no cutting)",
1605
+ "properties": {
1606
+ "Node name for S&R": "PrimitiveString"
1607
+ },
1608
+ "widgets_values": [
1609
+ "0:-1"
1610
+ ]
1611
+ },
1612
+ {
1613
+ "id": 128,
1614
+ "type": "PrimitiveInt",
1615
+ "pos": [
1616
+ -875.1093351130005,
1617
+ 1011.1969092930555
1618
+ ],
1619
+ "size": [
1620
+ 270,
1621
+ 82
1622
+ ],
1623
+ "flags": {},
1624
+ "order": 12,
1625
+ "mode": 0,
1626
+ "inputs": [],
1627
+ "outputs": [
1628
+ {
1629
+ "name": "INT",
1630
+ "type": "INT",
1631
+ "links": [
1632
+ 303
1633
+ ]
1634
+ }
1635
+ ],
1636
+ "title": "CONFIG Seed",
1637
+ "properties": {
1638
+ "Node name for S&R": "PrimitiveInt"
1639
+ },
1640
+ "widgets_values": [
1641
+ 7667576467,
1642
+ "fixed"
1643
+ ]
1644
+ },
1645
+ {
1646
+ "id": 139,
1647
+ "type": "PrimitiveInt",
1648
+ "pos": [
1649
+ -832.7218103395901,
1650
+ 766.312898014661
1651
+ ],
1652
+ "size": [
1653
+ 270,
1654
+ 82
1655
+ ],
1656
+ "flags": {},
1657
+ "order": 13,
1658
+ "mode": 0,
1659
+ "inputs": [],
1660
+ "outputs": [
1661
+ {
1662
+ "name": "INT",
1663
+ "type": "INT",
1664
+ "links": [
1665
+ 340
1666
+ ]
1667
+ }
1668
+ ],
1669
+ "title": "CONFIG InterpolationFactor",
1670
+ "properties": {
1671
+ "Node name for S&R": "PrimitiveInt"
1672
+ },
1673
+ "widgets_values": [
1674
+ 2,
1675
+ "fixed"
1676
+ ]
1677
+ },
1678
+ {
1679
+ "id": 54,
1680
+ "type": "PrimitiveInt",
1681
+ "pos": [
1682
+ -449.03432998374683,
1683
+ 533.2986323299632
1684
+ ],
1685
+ "size": [
1686
+ 270,
1687
+ 82
1688
+ ],
1689
+ "flags": {},
1690
+ "order": 14,
1691
+ "mode": 0,
1692
+ "inputs": [],
1693
+ "outputs": [
1694
+ {
1695
+ "name": "INT",
1696
+ "type": "INT",
1697
+ "links": [
1698
+ 123,
1699
+ 262
1700
+ ]
1701
+ }
1702
+ ],
1703
+ "title": "CONFIG FrameCount",
1704
+ "properties": {
1705
+ "Node name for S&R": "PrimitiveInt"
1706
+ },
1707
+ "widgets_values": [
1708
+ 121,
1709
+ "fixed"
1710
+ ]
1711
+ },
1712
+ {
1713
+ "id": 56,
1714
+ "type": "PrimitiveInt",
1715
+ "pos": [
1716
+ -442.913271355913,
1717
+ 282.2015636936886
1718
+ ],
1719
+ "size": [
1720
+ 270,
1721
+ 82
1722
+ ],
1723
+ "flags": {},
1724
+ "order": 15,
1725
+ "mode": 0,
1726
+ "inputs": [],
1727
+ "outputs": [
1728
+ {
1729
+ "name": "INT",
1730
+ "type": "INT",
1731
+ "links": [
1732
+ 111,
1733
+ 113,
1734
+ 115
1735
+ ]
1736
+ }
1737
+ ],
1738
+ "title": "CONFIG SizeX",
1739
+ "properties": {
1740
+ "Node name for S&R": "PrimitiveInt"
1741
+ },
1742
+ "widgets_values": [
1743
+ 832,
1744
+ "fixed"
1745
+ ]
1746
+ },
1747
+ {
1748
+ "id": 57,
1749
+ "type": "PrimitiveInt",
1750
+ "pos": [
1751
+ -442.9833464416511,
1752
+ 403.8690970341667
1753
+ ],
1754
+ "size": [
1755
+ 270,
1756
+ 82
1757
+ ],
1758
+ "flags": {},
1759
+ "order": 16,
1760
+ "mode": 0,
1761
+ "inputs": [],
1762
+ "outputs": [
1763
+ {
1764
+ "name": "INT",
1765
+ "type": "INT",
1766
+ "links": [
1767
+ 112,
1768
+ 114,
1769
+ 116
1770
+ ]
1771
+ }
1772
+ ],
1773
+ "title": "CONFIG SizeY",
1774
+ "properties": {
1775
+ "Node name for S&R": "PrimitiveInt"
1776
+ },
1777
+ "widgets_values": [
1778
+ 640,
1779
+ "fixed"
1780
+ ]
1781
+ },
1782
+ {
1783
+ "id": 59,
1784
+ "type": "PrimitiveStringMultiline",
1785
+ "pos": [
1786
+ -868.5261419919644,
1787
+ 294.60652825190135
1788
+ ],
1789
+ "size": [
1790
+ 400,
1791
+ 200
1792
+ ],
1793
+ "flags": {},
1794
+ "order": 17,
1795
+ "mode": 0,
1796
+ "inputs": [],
1797
+ "outputs": [
1798
+ {
1799
+ "name": "STRING",
1800
+ "type": "STRING",
1801
+ "links": [
1802
+ 160
1803
+ ]
1804
+ }
1805
+ ],
1806
+ "title": "CONFIG Prompt",
1807
+ "properties": {
1808
+ "Node name for S&R": "PrimitiveStringMultiline"
1809
+ },
1810
+ "widgets_values": [
1811
+ "A cat jumping over a dog."
1812
+ ]
1813
+ },
1814
+ {
1815
+ "id": 91,
1816
+ "type": "UNETLoader",
1817
+ "pos": [
1818
+ -591.7406914557098,
1819
+ 1004.2901366456864
1820
+ ],
1821
+ "size": [
1822
+ 421.6428577423096,
1823
+ 100.07144775390623
1824
+ ],
1825
+ "flags": {},
1826
+ "order": 18,
1827
+ "mode": 0,
1828
+ "inputs": [],
1829
+ "outputs": [
1830
+ {
1831
+ "name": "MODEL",
1832
+ "type": "MODEL",
1833
+ "links": [
1834
+ 542
1835
+ ]
1836
+ }
1837
+ ],
1838
+ "title": "CONFIG LTXModel",
1839
+ "properties": {
1840
+ "Node name for S&R": "UNETLoader"
1841
+ },
1842
+ "widgets_values": [
1843
+ "ltx2-phr00tmerge-sfw-v5.safetensors",
1844
+ "fp8_e4m3fn"
1845
+ ]
1846
+ },
1847
+ {
1848
+ "id": 106,
1849
+ "type": "LoadImage",
1850
+ "pos": [
1851
+ -87.30966556135354,
1852
+ -757.2332102373128
1853
+ ],
1854
+ "size": [
1855
+ 417.92038454162764,
1856
+ 400.21689436808265
1857
+ ],
1858
+ "flags": {},
1859
+ "order": 19,
1860
+ "mode": 0,
1861
+ "inputs": [],
1862
+ "outputs": [
1863
+ {
1864
+ "name": "IMAGE",
1865
+ "type": "IMAGE",
1866
+ "links": [
1867
+ 327
1868
+ ]
1869
+ },
1870
+ {
1871
+ "name": "MASK",
1872
+ "type": "MASK",
1873
+ "links": null
1874
+ }
1875
+ ],
1876
+ "title": "First Image",
1877
+ "properties": {
1878
+ "Node name for S&R": "LoadImage"
1879
+ },
1880
+ "widgets_values": [
1881
+ "example.png",
1882
+ "image"
1883
+ ]
1884
+ },
1885
+ {
1886
+ "id": 35,
1887
+ "type": "LoadImage",
1888
+ "pos": [
1889
+ -86.44536100179037,
1890
+ -298.3175231515558
1891
+ ],
1892
+ "size": [
1893
+ 414.3844105775777,
1894
+ 444.4890226581098
1895
+ ],
1896
+ "flags": {},
1897
+ "order": 20,
1898
+ "mode": 0,
1899
+ "inputs": [],
1900
+ "outputs": [
1901
+ {
1902
+ "name": "IMAGE",
1903
+ "type": "IMAGE",
1904
+ "links": [
1905
+ 326
1906
+ ]
1907
+ },
1908
+ {
1909
+ "name": "MASK",
1910
+ "type": "MASK",
1911
+ "links": null
1912
+ }
1913
+ ],
1914
+ "title": "Last Image",
1915
+ "properties": {
1916
+ "Node name for S&R": "LoadImage"
1917
+ },
1918
+ "widgets_values": [
1919
+ "example.png",
1920
+ "image"
1921
+ ]
1922
+ },
1923
+ {
1924
+ "id": 102,
1925
+ "type": "LTXVAddGuideMulti",
1926
+ "pos": [
1927
+ 711.0017742609549,
1928
+ -301.90487422000064
1929
+ ],
1930
+ "size": [
1931
+ 300.611328125,
1932
+ 254
1933
+ ],
1934
+ "flags": {},
1935
+ "order": 37,
1936
+ "mode": 0,
1937
+ "inputs": [
1938
+ {
1939
+ "name": "positive",
1940
+ "type": "CONDITIONING",
1941
+ "link": 229
1942
+ },
1943
+ {
1944
+ "name": "negative",
1945
+ "type": "CONDITIONING",
1946
+ "link": 230
1947
+ },
1948
+ {
1949
+ "name": "vae",
1950
+ "type": "VAE",
1951
+ "link": 231
1952
+ },
1953
+ {
1954
+ "name": "latent",
1955
+ "type": "LATENT",
1956
+ "link": 237
1957
+ },
1958
+ {
1959
+ "label": "image_1",
1960
+ "name": "num_guides.image_1",
1961
+ "type": "IMAGE",
1962
+ "link": 429
1963
+ },
1964
+ {
1965
+ "name": "num_guides.strength_1",
1966
+ "type": "FLOAT",
1967
+ "widget": {
1968
+ "name": "num_guides.strength_1"
1969
+ },
1970
+ "link": 238
1971
+ },
1972
+ {
1973
+ "label": "image_2",
1974
+ "name": "num_guides.image_2",
1975
+ "type": "IMAGE",
1976
+ "link": 543
1977
+ }
1978
+ ],
1979
+ "outputs": [
1980
+ {
1981
+ "name": "positive",
1982
+ "type": "CONDITIONING",
1983
+ "links": [
1984
+ 283,
1985
+ 479
1986
+ ]
1987
+ },
1988
+ {
1989
+ "name": "negative",
1990
+ "type": "CONDITIONING",
1991
+ "links": [
1992
+ 284
1993
+ ]
1994
+ },
1995
+ {
1996
+ "name": "latent",
1997
+ "type": "LATENT",
1998
+ "links": [
1999
+ 236
2000
+ ]
2001
+ }
2002
+ ],
2003
+ "properties": {
2004
+ "Node name for S&R": "LTXVAddGuideMulti"
2005
+ },
2006
+ "widgets_values": [
2007
+ "2",
2008
+ 0,
2009
+ 1,
2010
+ -1,
2011
+ 1
2012
+ ]
2013
+ },
2014
+ {
2015
+ "id": 37,
2016
+ "type": "LTXVPreprocess",
2017
+ "pos": [
2018
+ 366.4490642616451,
2019
+ -124.14229413462802
2020
+ ],
2021
+ "size": [
2022
+ 270,
2023
+ 58
2024
+ ],
2025
+ "flags": {},
2026
+ "order": 35,
2027
+ "mode": 0,
2028
+ "inputs": [
2029
+ {
2030
+ "name": "image",
2031
+ "type": "IMAGE",
2032
+ "link": 78
2033
+ },
2034
+ {
2035
+ "name": "img_compression",
2036
+ "type": "INT",
2037
+ "widget": {
2038
+ "name": "img_compression"
2039
+ },
2040
+ "link": 167
2041
+ }
2042
+ ],
2043
+ "outputs": [
2044
+ {
2045
+ "name": "output_image",
2046
+ "type": "IMAGE",
2047
+ "links": [
2048
+ 543
2049
+ ]
2050
+ }
2051
+ ],
2052
+ "properties": {
2053
+ "Node name for S&R": "LTXVPreprocess"
2054
+ },
2055
+ "widgets_values": [
2056
+ 33
2057
+ ]
2058
+ },
2059
+ {
2060
+ "id": 140,
2061
+ "type": "Note",
2062
+ "pos": [
2063
+ -842.2026639749197,
2064
+ -316.4639047325439
2065
+ ],
2066
+ "size": [
2067
+ 687.0133900544962,
2068
+ 493.0743919786187
2069
+ ],
2070
+ "flags": {},
2071
+ "order": 21,
2072
+ "mode": 0,
2073
+ "inputs": [],
2074
+ "outputs": [],
2075
+ "properties": {},
2076
+ "widgets_values": [
2077
+ "This workflow is messy as shit, but LTX kinda requires that.\n\nMake sure all of these nodes are installed and updated:\nComfy-KJNodes (LTX improvements)\nComfy-LTXVideo (core nodes)\nVideoHelperSuite (core video)\nFill-Nodes (simplifies config + fast interpolation)\n\nDefaults are \"first to last\" generation. Bypass the \"Last Image\" to the right and set LTXVAddGuideMulti \"Number of Guides\" to 1 if just doing I2V \"First Frame\".\n\nBypass the whole top group for T2V.\n\nModify stuff below to specify what kind of video you want to generate.\n\nYou shouldn't need to touch anything in the middle blue section, which contains all of the best settings and optimizations I could find.\n\nThe audio concat stuff is to support \"ping pong\" video output to add audio and double video length for looping purposes (better than silence imho).\n\nIf you have motion issues, try increasing the frame rate (to like 30 or higher). Also try disabling/bypassing RIFE interpolation which could contribute to very high motion artifacts too.\n\nThe \"ImageFrameSelect\" config can help cut off strange frames near the end if its not using your \"last frame\" correctly. This hasn't really been an issue lately, but I'll keep it there for now.\n\nGood luck, this model is pretty neat."
2078
+ ],
2079
+ "color": "#432",
2080
+ "bgcolor": "#653"
2081
+ }
2082
+ ],
2083
+ "links": [
2084
+ [
2085
+ 22,
2086
+ 18,
2087
+ 0,
2088
+ 19,
2089
+ 1,
2090
+ "LATENT"
2091
+ ],
2092
+ [
2093
+ 25,
2094
+ 6,
2095
+ 0,
2096
+ 20,
2097
+ 0,
2098
+ "CONDITIONING"
2099
+ ],
2100
+ [
2101
+ 55,
2102
+ 30,
2103
+ 0,
2104
+ 28,
2105
+ 0,
2106
+ "IMAGE"
2107
+ ],
2108
+ [
2109
+ 78,
2110
+ 36,
2111
+ 0,
2112
+ 37,
2113
+ 0,
2114
+ "IMAGE"
2115
+ ],
2116
+ [
2117
+ 111,
2118
+ 56,
2119
+ 0,
2120
+ 36,
2121
+ 1,
2122
+ "INT"
2123
+ ],
2124
+ [
2125
+ 112,
2126
+ 57,
2127
+ 0,
2128
+ 36,
2129
+ 2,
2130
+ "INT"
2131
+ ],
2132
+ [
2133
+ 113,
2134
+ 56,
2135
+ 0,
2136
+ 13,
2137
+ 0,
2138
+ "INT"
2139
+ ],
2140
+ [
2141
+ 114,
2142
+ 57,
2143
+ 0,
2144
+ 13,
2145
+ 1,
2146
+ "INT"
2147
+ ],
2148
+ [
2149
+ 115,
2150
+ 56,
2151
+ 0,
2152
+ 30,
2153
+ 1,
2154
+ "INT"
2155
+ ],
2156
+ [
2157
+ 116,
2158
+ 57,
2159
+ 0,
2160
+ 30,
2161
+ 2,
2162
+ "INT"
2163
+ ],
2164
+ [
2165
+ 120,
2166
+ 55,
2167
+ 0,
2168
+ 18,
2169
+ 2,
2170
+ "INT"
2171
+ ],
2172
+ [
2173
+ 123,
2174
+ 54,
2175
+ 0,
2176
+ 13,
2177
+ 2,
2178
+ "INT"
2179
+ ],
2180
+ [
2181
+ 129,
2182
+ 55,
2183
+ 0,
2184
+ 64,
2185
+ 0,
2186
+ "INT"
2187
+ ],
2188
+ [
2189
+ 130,
2190
+ 64,
2191
+ 0,
2192
+ 20,
2193
+ 2,
2194
+ "FLOAT"
2195
+ ],
2196
+ [
2197
+ 132,
2198
+ 67,
2199
+ 0,
2200
+ 17,
2201
+ 4,
2202
+ "FLOAT"
2203
+ ],
2204
+ [
2205
+ 160,
2206
+ 59,
2207
+ 0,
2208
+ 6,
2209
+ 1,
2210
+ "STRING"
2211
+ ],
2212
+ [
2213
+ 166,
2214
+ 79,
2215
+ 0,
2216
+ 28,
2217
+ 1,
2218
+ "INT"
2219
+ ],
2220
+ [
2221
+ 167,
2222
+ 79,
2223
+ 0,
2224
+ 37,
2225
+ 1,
2226
+ "INT"
2227
+ ],
2228
+ [
2229
+ 172,
2230
+ 83,
2231
+ 0,
2232
+ 17,
2233
+ 5,
2234
+ "STRING"
2235
+ ],
2236
+ [
2237
+ 182,
2238
+ 6,
2239
+ 0,
2240
+ 86,
2241
+ 0,
2242
+ "CONDITIONING"
2243
+ ],
2244
+ [
2245
+ 183,
2246
+ 86,
2247
+ 0,
2248
+ 20,
2249
+ 1,
2250
+ "CONDITIONING"
2251
+ ],
2252
+ [
2253
+ 184,
2254
+ 87,
2255
+ 0,
2256
+ 16,
2257
+ 1,
2258
+ "VAE"
2259
+ ],
2260
+ [
2261
+ 185,
2262
+ 87,
2263
+ 0,
2264
+ 18,
2265
+ 0,
2266
+ "VAE"
2267
+ ],
2268
+ [
2269
+ 222,
2270
+ 88,
2271
+ 0,
2272
+ 6,
2273
+ 0,
2274
+ "CLIP"
2275
+ ],
2276
+ [
2277
+ 229,
2278
+ 20,
2279
+ 0,
2280
+ 102,
2281
+ 0,
2282
+ "CONDITIONING"
2283
+ ],
2284
+ [
2285
+ 230,
2286
+ 20,
2287
+ 1,
2288
+ 102,
2289
+ 1,
2290
+ "CONDITIONING"
2291
+ ],
2292
+ [
2293
+ 231,
2294
+ 98,
2295
+ 0,
2296
+ 102,
2297
+ 2,
2298
+ "VAE"
2299
+ ],
2300
+ [
2301
+ 236,
2302
+ 102,
2303
+ 2,
2304
+ 19,
2305
+ 0,
2306
+ "LATENT"
2307
+ ],
2308
+ [
2309
+ 237,
2310
+ 13,
2311
+ 0,
2312
+ 102,
2313
+ 3,
2314
+ "LATENT"
2315
+ ],
2316
+ [
2317
+ 238,
2318
+ 80,
2319
+ 0,
2320
+ 102,
2321
+ 5,
2322
+ "FLOAT"
2323
+ ],
2324
+ [
2325
+ 257,
2326
+ 107,
2327
+ 0,
2328
+ 98,
2329
+ 0,
2330
+ "VAE"
2331
+ ],
2332
+ [
2333
+ 260,
2334
+ 103,
2335
+ 0,
2336
+ 110,
2337
+ 0,
2338
+ "FLOAT"
2339
+ ],
2340
+ [
2341
+ 262,
2342
+ 54,
2343
+ 0,
2344
+ 18,
2345
+ 1,
2346
+ "INT"
2347
+ ],
2348
+ [
2349
+ 266,
2350
+ 16,
2351
+ 0,
2352
+ 113,
2353
+ 0,
2354
+ "AUDIO"
2355
+ ],
2356
+ [
2357
+ 267,
2358
+ 16,
2359
+ 0,
2360
+ 113,
2361
+ 1,
2362
+ "AUDIO"
2363
+ ],
2364
+ [
2365
+ 268,
2366
+ 113,
2367
+ 0,
2368
+ 17,
2369
+ 1,
2370
+ "AUDIO"
2371
+ ],
2372
+ [
2373
+ 283,
2374
+ 102,
2375
+ 0,
2376
+ 120,
2377
+ 0,
2378
+ "CONDITIONING"
2379
+ ],
2380
+ [
2381
+ 284,
2382
+ 102,
2383
+ 1,
2384
+ 120,
2385
+ 1,
2386
+ "CONDITIONING"
2387
+ ],
2388
+ [
2389
+ 292,
2390
+ 124,
2391
+ 0,
2392
+ 123,
2393
+ 0,
2394
+ "NOISE"
2395
+ ],
2396
+ [
2397
+ 294,
2398
+ 14,
2399
+ 1,
2400
+ 16,
2401
+ 0,
2402
+ "LATENT"
2403
+ ],
2404
+ [
2405
+ 298,
2406
+ 126,
2407
+ 0,
2408
+ 123,
2409
+ 2,
2410
+ "SAMPLER"
2411
+ ],
2412
+ [
2413
+ 301,
2414
+ 19,
2415
+ 0,
2416
+ 123,
2417
+ 4,
2418
+ "LATENT"
2419
+ ],
2420
+ [
2421
+ 303,
2422
+ 128,
2423
+ 0,
2424
+ 124,
2425
+ 0,
2426
+ "INT"
2427
+ ],
2428
+ [
2429
+ 305,
2430
+ 98,
2431
+ 0,
2432
+ 129,
2433
+ 1,
2434
+ "VAE"
2435
+ ],
2436
+ [
2437
+ 312,
2438
+ 14,
2439
+ 0,
2440
+ 120,
2441
+ 2,
2442
+ "LATENT"
2443
+ ],
2444
+ [
2445
+ 313,
2446
+ 132,
2447
+ 0,
2448
+ 123,
2449
+ 3,
2450
+ "SIGMAS"
2451
+ ],
2452
+ [
2453
+ 314,
2454
+ 62,
2455
+ 0,
2456
+ 133,
2457
+ 1,
2458
+ "STRING"
2459
+ ],
2460
+ [
2461
+ 315,
2462
+ 129,
2463
+ 0,
2464
+ 133,
2465
+ 0,
2466
+ "IMAGE"
2467
+ ],
2468
+ [
2469
+ 326,
2470
+ 35,
2471
+ 0,
2472
+ 36,
2473
+ 0,
2474
+ "IMAGE"
2475
+ ],
2476
+ [
2477
+ 327,
2478
+ 106,
2479
+ 0,
2480
+ 30,
2481
+ 0,
2482
+ "IMAGE"
2483
+ ],
2484
+ [
2485
+ 337,
2486
+ 133,
2487
+ 0,
2488
+ 138,
2489
+ 0,
2490
+ "IMAGE"
2491
+ ],
2492
+ [
2493
+ 338,
2494
+ 138,
2495
+ 0,
2496
+ 17,
2497
+ 0,
2498
+ "IMAGE"
2499
+ ],
2500
+ [
2501
+ 339,
2502
+ 120,
2503
+ 2,
2504
+ 129,
2505
+ 0,
2506
+ "LATENT"
2507
+ ],
2508
+ [
2509
+ 340,
2510
+ 139,
2511
+ 0,
2512
+ 138,
2513
+ 1,
2514
+ "INT"
2515
+ ],
2516
+ [
2517
+ 422,
2518
+ 122,
2519
+ 0,
2520
+ 160,
2521
+ 0,
2522
+ "MODEL"
2523
+ ],
2524
+ [
2525
+ 429,
2526
+ 28,
2527
+ 0,
2528
+ 102,
2529
+ 4,
2530
+ "IMAGE"
2531
+ ],
2532
+ [
2533
+ 478,
2534
+ 160,
2535
+ 0,
2536
+ 170,
2537
+ 0,
2538
+ "MODEL"
2539
+ ],
2540
+ [
2541
+ 479,
2542
+ 102,
2543
+ 0,
2544
+ 170,
2545
+ 1,
2546
+ "CONDITIONING"
2547
+ ],
2548
+ [
2549
+ 524,
2550
+ 123,
2551
+ 0,
2552
+ 14,
2553
+ 0,
2554
+ "LATENT"
2555
+ ],
2556
+ [
2557
+ 525,
2558
+ 170,
2559
+ 0,
2560
+ 123,
2561
+ 1,
2562
+ "GUIDER"
2563
+ ],
2564
+ [
2565
+ 542,
2566
+ 91,
2567
+ 0,
2568
+ 122,
2569
+ 0,
2570
+ "MODEL"
2571
+ ],
2572
+ [
2573
+ 543,
2574
+ 37,
2575
+ 0,
2576
+ 102,
2577
+ 6,
2578
+ "IMAGE"
2579
+ ]
2580
+ ],
2581
+ "groups": [
2582
+ {
2583
+ "id": 1,
2584
+ "title": "I2V / First to Last Frame (Bypass if doing T2V)",
2585
+ "bounding": [
2586
+ -118.55839617373792,
2587
+ -846.3134792458198,
2588
+ 1175.1397966081684,
2589
+ 1027.4161608638976
2590
+ ],
2591
+ "color": "#8A8",
2592
+ "font_size": 24,
2593
+ "flags": {}
2594
+ },
2595
+ {
2596
+ "id": 2,
2597
+ "title": "Configuration & Prompt",
2598
+ "bounding": [
2599
+ -894.1455674446069,
2600
+ 212.2923672604866,
2601
+ 739.2019582499095,
2602
+ 1039.8355479558713
2603
+ ],
2604
+ "color": "#8A8",
2605
+ "font_size": 24,
2606
+ "flags": {}
2607
+ },
2608
+ {
2609
+ "id": 3,
2610
+ "title": "Brains / Model Sampling (Shouldn't need to touch anything in here)",
2611
+ "bounding": [
2612
+ -124.03453089774423,
2613
+ 209.64992140416265,
2614
+ 1267.7980404416276,
2615
+ 1159.5499763641924
2616
+ ],
2617
+ "color": "#3f789e",
2618
+ "font_size": 24,
2619
+ "flags": {}
2620
+ }
2621
+ ],
2622
+ "config": {},
2623
+ "extra": {
2624
+ "ds": {
2625
+ "scale": 0.8954302432552388,
2626
+ "offset": [
2627
+ 903.9633351276846,
2628
+ -412.35713990599004
2629
+ ]
2630
+ },
2631
+ "workflowRendererVersion": "LG",
2632
+ "ue_links": [],
2633
+ "frontendVersion": "1.37.11",
2634
+ "VHS_latentpreview": false,
2635
+ "VHS_latentpreviewrate": 0,
2636
+ "VHS_MetadataImage": true,
2637
+ "VHS_KeepIntermediate": true
2638
+ },
2639
+ "version": 0.4
2640
+ }
MergingScript/fancy-apply.py ADDED
@@ -0,0 +1,381 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+
3
+ # THIS IS FOR ADVANCED LORA INTO BASE MODEL MERGING
4
+ # Designed for use with the LTX2 model
5
+ #
6
+ # Make a text file with a list of LORAs you want to merge in this format for each line:
7
+ # <path to safetensors>,<strength>,<lerp>
8
+ #
9
+ # The "lerp" parameter means "how much should I overwrite tensors that compete with LORAs listed above?". A value of "0" just mixes them all together, while "1" hard applies the LORA delta
10
+ #
11
+ # You can also supply a separate audio and video strengths like this:
12
+ # <path to safetensors>,<video strength>,<lerp>,<audio strength>
13
+ #
14
+ # Use this script like this:
15
+ # python fancy-apply.py <base model safetensors> <lora list txt file> <merged output filename>
16
+
17
+ import argparse
18
+ import os
19
+ from typing import Dict, Tuple, List, Optional
20
+ from collections import defaultdict
21
+ import math
22
+
23
+ import torch
24
+ from safetensors.torch import load_file, save_file
25
+ from safetensors import safe_open
26
+
27
+
28
+ # ----------------- Tuning knobs ----------------- #
29
+
30
+ # If True, the normalized component uses:
31
+ # scale_norm = eff_strength / max(1.0, sum_eff_strengths_for_key)
32
+ NORMALIZE_OVERLAPS = True
33
+
34
+ # Per‑LoRA clipping threshold:
35
+ # If not None, each LoRA's delta is clipped so that:
36
+ # ||delta|| <= CLIP_RATIO * ||W||
37
+ CLIP_RATIO: Optional[float] = 1.0
38
+
39
+
40
+ # ----------------- Parsing LoRA list ----------------- #
41
+
42
+ def parse_lora_list(path: str) -> List[Tuple[str, float, float, float]]:
43
+ """
44
+ Parse list_of_loras.txt with lines like:
45
+ filename.safetensors,0.7,0.0
46
+ filename2.safetensors,1.0,0.5,0.3
47
+
48
+ Returns list of tuples:
49
+ (path, video_strength, lerp_with_existing, audio_strength)
50
+
51
+ Where:
52
+ video_strength: base strength for video/shared weights
53
+ audio_strength: base strength for audio weights
54
+ (defaults to video_strength if omitted)
55
+ lerp_with_existing in [0, 1]:
56
+ 0.0 -> fully normalized
57
+ 1.0 -> fully direct
58
+ between -> blend between normalized and direct
59
+ """
60
+ loras: List[Tuple[str, float, float, float]] = []
61
+ with open(path, "r", encoding="utf-8") as f:
62
+ for line in f:
63
+ line = line.strip()
64
+ if not line or line.startswith("#"):
65
+ continue
66
+
67
+ parts = [p.strip() for p in line.split(",")]
68
+ if len(parts) < 3:
69
+ raise ValueError(f"Invalid LoRA line (need at least file,video_strength,lerp): {line}")
70
+
71
+ filename = parts[0]
72
+ video_strength = float(parts[1])
73
+ lerp = float(parts[2])
74
+
75
+ if len(parts) >= 4:
76
+ audio_strength = float(parts[3])
77
+ else:
78
+ audio_strength = video_strength
79
+
80
+ lerp = max(0.0, min(1.0, lerp))
81
+
82
+ loras.append((filename, video_strength, lerp, audio_strength))
83
+
84
+ return loras
85
+
86
+
87
+ # ----------------- Base loading ----------------- #
88
+
89
+ def load_base_with_metadata(path: str):
90
+ with safe_open(path, framework="pt", device="cpu") as f:
91
+ metadata = f.metadata() or {}
92
+ tensors = load_file(path, device="cpu")
93
+ return tensors, metadata
94
+
95
+
96
+ # ----------------- LoRA key grouping ----------------- #
97
+
98
+ def group_lora_pairs(lora_tensors: Dict[str, torch.Tensor]):
99
+ prefixes = {}
100
+ for k in lora_tensors.keys():
101
+ if k.endswith(".lora_A.weight"):
102
+ prefix = k[: -len(".lora_A.weight")]
103
+ prefixes.setdefault(prefix, {})["A"] = k
104
+ elif k.endswith(".lora_B.weight"):
105
+ prefix = k[: -len(".lora_B.weight")]
106
+ prefixes.setdefault(prefix, {})["B"] = k
107
+ elif k.endswith(".alpha"):
108
+ prefix = k[: -len(".alpha")]
109
+ prefixes.setdefault(prefix, {})["alpha"] = k
110
+
111
+ for prefix, keys in prefixes.items():
112
+ if "A" not in keys or "B" not in keys:
113
+ print(f"Warning: incomplete LoRA prefix {prefix}")
114
+ continue
115
+ yield prefix, keys["A"], keys["B"], keys.get("alpha")
116
+
117
+
118
+ def find_base_weight_key(base_tensors, lora_prefix):
119
+ candidates = [
120
+ f"{lora_prefix}.weight",
121
+ f"model.{lora_prefix}.weight",
122
+ lora_prefix,
123
+ f"model.{lora_prefix}",
124
+ ]
125
+ for c in candidates:
126
+ if c in base_tensors:
127
+ return c
128
+ return None
129
+
130
+
131
+ # ----------------- Audio / video classification ----------------- #
132
+
133
+ def classify_prefix(prefix: str) -> str:
134
+ """
135
+ Classify a LoRA prefix as 'audio', 'video', 'cross', or 'shared'.
136
+ """
137
+ p = prefix.lower()
138
+
139
+ # Cross-modal first
140
+ if "audio_to_video" in p or "video_to_audio" in p:
141
+ return "cross"
142
+
143
+ # Audio-specific
144
+ if "audio_attn" in p or "audio_ff" in p or ".audio_" in p:
145
+ return "audio"
146
+
147
+ # Video-specific (heuristic)
148
+ if "video_attn" in p or "video_ff" in p or ".video_" in p:
149
+ return "video"
150
+
151
+ # Default: shared (treated as video-strength)
152
+ return "shared"
153
+
154
+
155
+ def effective_strength_for_prefix(
156
+ prefix: str,
157
+ video_strength: float,
158
+ audio_strength: float,
159
+ ) -> float:
160
+ kind = classify_prefix(prefix)
161
+ if kind == "audio":
162
+ return audio_strength
163
+ elif kind == "video":
164
+ return video_strength
165
+ elif kind == "cross":
166
+ # Blend strengths for cross-modal
167
+ return math.sqrt(max(video_strength, 0.0) * max(audio_strength, 0.0))
168
+ else:
169
+ # shared
170
+ return video_strength
171
+
172
+
173
+ # ----------------- Pass 1: strength sums per key ----------------- #
174
+
175
+ def compute_strength_sums(
176
+ base_tensors,
177
+ lora_specs: List[Tuple[str, float, float, float]],
178
+ ) -> Dict[str, float]:
179
+ """
180
+ For each base weight key, compute the sum of effective strengths of all LoRAs
181
+ that touch it (using video/audio/cross classification).
182
+ """
183
+ strength_sum: Dict[str, float] = defaultdict(float)
184
+
185
+ for lora_path, video_strength, lerp, audio_strength in lora_specs:
186
+ print(f"[Pass 1] Scanning {lora_path} (video={video_strength}, audio={audio_strength}, lerp={lerp})")
187
+ lora_tensors = load_file(lora_path, device="cpu")
188
+
189
+ for prefix, A_key, B_key, alpha_key in group_lora_pairs(lora_tensors):
190
+ base_key = find_base_weight_key(base_tensors, prefix)
191
+ if base_key is None:
192
+ continue
193
+
194
+ eff_strength = effective_strength_for_prefix(prefix, video_strength, audio_strength)
195
+ strength_sum[base_key] += eff_strength
196
+
197
+ del lora_tensors
198
+
199
+ print(f"[Pass 1] Keys with strength contributions: {len(strength_sum)}")
200
+ return strength_sum
201
+
202
+
203
+ # ----------------- Pass 2: streaming application ----------------- #
204
+
205
+ def apply_loras_streaming(
206
+ base_tensors,
207
+ lora_specs: List[Tuple[str, float, float, float]],
208
+ strength_sum: Dict[str, float],
209
+ clip_ratio: Optional[float] = CLIP_RATIO,
210
+ ):
211
+ for lora_path, video_strength, lerp, audio_strength in lora_specs:
212
+ print(f"[Pass 2] Applying {lora_path} (video={video_strength}, audio={audio_strength}, lerp={lerp})")
213
+ lora_tensors = load_file(lora_path, device="cpu")
214
+
215
+ applied = 0
216
+ skipped = 0
217
+
218
+ for prefix, A_key, B_key, alpha_key in group_lora_pairs(lora_tensors):
219
+ base_key = find_base_weight_key(base_tensors, prefix)
220
+ if base_key is None:
221
+ skipped += 1
222
+ continue
223
+
224
+ W = base_tensors[base_key]
225
+
226
+ A = lora_tensors[A_key].to(torch.float32)
227
+ B = lora_tensors[B_key].to(torch.float32)
228
+ delta = B @ A
229
+
230
+ if delta.shape != W.shape:
231
+ raise ValueError(
232
+ f"Shape mismatch for {prefix}: delta {delta.shape} vs base {W.shape}"
233
+ )
234
+
235
+ rank = A.shape[0] if A.dim() == 2 else A.numel()
236
+
237
+ # Effective strength for this prefix (audio/video/cross/shared)
238
+ eff_strength = effective_strength_for_prefix(prefix, video_strength, audio_strength)
239
+
240
+ # Base strength + alpha scaling
241
+ if alpha_key is not None:
242
+ alpha = float(lora_tensors[alpha_key].to(torch.float32).item())
243
+ base_scale = eff_strength * alpha / max(rank, 1)
244
+ else:
245
+ base_scale = eff_strength
246
+
247
+ # Weighted normalization
248
+ if NORMALIZE_OVERLAPS:
249
+ total_strength = strength_sum.get(base_key, 0.0)
250
+ denom = max(1.0, total_strength)
251
+ scale_norm = base_scale / denom
252
+ else:
253
+ scale_norm = base_scale
254
+
255
+ # Direct (unnormalized) component
256
+ scale_direct = base_scale
257
+
258
+ # LERP between normalized and direct
259
+ scale = (1.0 - lerp) * scale_norm + lerp * scale_direct
260
+
261
+ delta_scaled = delta * scale
262
+
263
+ # Per‑LoRA clipping
264
+ if clip_ratio is not None:
265
+ Wf = W.to(torch.float32)
266
+ base_norm = Wf.norm().item()
267
+ delta_norm = delta_scaled.norm().item()
268
+
269
+ if delta_norm > clip_ratio * base_norm and delta_norm > 0:
270
+ delta_scaled *= (clip_ratio * base_norm) / delta_norm
271
+
272
+ # Apply update
273
+ W_new = W.to(torch.float32) + delta_scaled
274
+ base_tensors[base_key] = W_new.to(W.dtype)
275
+
276
+ applied += 1
277
+
278
+ print(f"[Pass 2] {lora_path}: applied {applied}, skipped {skipped}")
279
+ del lora_tensors
280
+
281
+
282
+ def apply_loras_to_base(base_tensors, lora_specs):
283
+ strength_sum = compute_strength_sums(base_tensors, lora_specs)
284
+ apply_loras_streaming(base_tensors, lora_specs, strength_sum)
285
+
286
+
287
+ # ----------------- FP8 conversion ----------------- #
288
+
289
+ def is_vae_key(key: str) -> bool:
290
+ return any(key.startswith(p) for p in [
291
+ "first_stage_model.",
292
+ "model.first_stage_model.",
293
+ "vae.",
294
+ "model.vae.",
295
+ ])
296
+
297
+
298
+ def is_text_encoder_key(key: str) -> bool:
299
+ return any(key.startswith(p) for p in [
300
+ "text_encoder.",
301
+ "model.text_encoder.",
302
+ "cond_stage_model.",
303
+ "model.cond_stage_model.",
304
+ ])
305
+
306
+
307
+ def is_unet_key(key: str) -> bool:
308
+ return any(key.startswith(p) for p in [
309
+ "model.diffusion_model.",
310
+ "diffusion_model.",
311
+ ])
312
+
313
+
314
+ def convert_to_fp8_inplace(tensors: Dict[str, torch.Tensor]):
315
+ fp8_dtype = torch.float8_e4m3fn
316
+
317
+ converted = 0
318
+ skipped_vae = 0
319
+ skipped_other = 0
320
+
321
+ for k, v in list(tensors.items()):
322
+ if not torch.is_floating_point(v):
323
+ skipped_other += 1
324
+ continue
325
+
326
+ if is_vae_key(k):
327
+ skipped_vae += 1
328
+ continue
329
+
330
+ if is_unet_key(k) or is_text_encoder_key(k):
331
+ tensors[k] = v.to(fp8_dtype)
332
+ converted += 1
333
+ else:
334
+ skipped_other += 1
335
+
336
+ print(
337
+ f"FP8 conversion: converted={converted}, "
338
+ f"skipped_vae={skipped_vae}, skipped_other={skipped_other}"
339
+ )
340
+
341
+
342
+ # ----------------- Main CLI ----------------- #
343
+
344
+ def main():
345
+ parser = argparse.ArgumentParser(
346
+ description=(
347
+ "Apply LTX2-style LoRAs with separate video/audio strengths, "
348
+ "strength-weighted normalization, LERP blending, per‑LoRA clipping, "
349
+ "FP8 conversion, and metadata preservation (streaming, memory‑efficient)."
350
+ )
351
+ )
352
+ parser.add_argument("base", help="Base checkpoint (.safetensors)")
353
+ parser.add_argument("lora_list", help="Text file: path,video_strength,lerp[,audio_strength]")
354
+ parser.add_argument("output", help="Output FP8 checkpoint (.safetensors)")
355
+
356
+ args = parser.parse_args()
357
+
358
+ if not os.path.isfile(args.base):
359
+ raise FileNotFoundError(args.base)
360
+
361
+ lora_specs = parse_lora_list(args.lora_list)
362
+ if not lora_specs:
363
+ raise ValueError("No LoRAs specified.")
364
+
365
+ print(f"Loading base checkpoint: {args.base}")
366
+ base_tensors, metadata = load_base_with_metadata(args.base)
367
+ print(f"Base checkpoint has {len(base_tensors)} tensors.")
368
+
369
+ apply_loras_to_base(base_tensors, lora_specs)
370
+
371
+ print("Converting UNet + text encoder to FP8 (leaving VAE untouched)...")
372
+ convert_to_fp8_inplace(base_tensors)
373
+
374
+ print(f"Saving merged FP8 checkpoint to: {args.output}")
375
+ os.makedirs(os.path.dirname(args.output) or ".", exist_ok=True)
376
+ save_file(base_tensors, args.output, metadata=metadata)
377
+ print("Done.")
378
+
379
+
380
+ if __name__ == "__main__":
381
+ main()
README.md ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: ltx-2-community-license-agreement
4
+ license_link: https://huggingface.co/Lightricks/LTX-2/raw/main/LICENSE
5
+ base_model:
6
+ - Lightricks/LTX-2
7
+ pipeline_tag: image-text-to-video
8
+ tags:
9
+ - ltx2
10
+ - t2v
11
+ - i2v
12
+ ---
13
+ **I'm winding down maintaining these models. I recommend checking out the [merging script](https://huggingface.co/Phr00t/LTX2-Rapid-Merges/blob/main/MergingScript/fancy-apply.py) to create your own, as at least the NSFW model is very outdated. Thank you for all of the support and feedback!**
14
+
15
+ These are experimental FP8 merges of the LTX2 diffusion model. "All in ones" do not seem to be in the cards, as LTX2 has lots of (large) moving parts, including 2 VAEs for video and audio. So, for the meantime, I'm just going to focus on the diffusion model. For all other models needed to run LTX2, please refer here: https://huggingface.co/Kijai/LTXV2_comfy
16
+
17
+ **Workflow uploaded!** It is messy as shit but does "everything" (I2V, First to Last Frame and T2V) very quickly and efficiently using all the tricks I've collected. I highly recommend using it and read the included note (particularly about required nodes). "Save output" is set to "false" on the VideoCombine, so switch that to "true" when you start making something you want to keep.
18
+
19
+ The text encoder can be found here (I recommend fp8-scaled): https://huggingface.co/Comfy-Org/ltx-2/tree/main/split_files/text_encoders
20
+
21
+ **I can only recommend my workflow with the included settings, as there are so many pitfalls getting LTX to work properly**. Old models have been removed because they were generated from a broken script. All models now should be "working" moving forward.
22
+
23
+ **----- SFW VERSION HISTORY -----**
24
+
25
+ **V3:** Distill LORA at 0.9 with the detailer LORA at 0.4. Good general purpose LTX2 model.
26
+
27
+ **V4:** Small adjustment using an updated merging tool. Includes the distill LORA at 1.0 and detailer at 0.5, which works well with my workflow.
28
+
29
+ **V5:** Now contains the I2V Adapter from https://huggingface.co/MachineDelusions/LTX-2_Image2Video_Adapter_LoRa. This seems to work just fine with T2V. I mixed only the video portion, leaving audio untouched (since the LORA degrades audio slightly otherwise).
30
+
31
+ **----- NSFW VERSION HISTORY ----**
32
+
33
+ **V6:** Contains every NSFW LORA I could find on CivitAI for LTX2 at varying weights at of 1/17/26. Fixed a major problem with these merges, and now this is actually a decent, legit first pass at a general purpose NSFW LTX2 diffusion model. Genitals overall are still weak, so I2V for best results. **THIS DOES NOT INCLUDE MY LATEST POVNSFW**
34
+
35
+ **V41:** The version number reflects all of the internal iterations before deciding that this was "good enough" for release! This combines my POV NSFW LORA with lots of great work by CJ, TenStrip and other creators on CivitAI. A new merging method is used that handles overlaped LORA tensors individually to bring the best of the LORAs together. **USE WITH MY WORKFLOW**
36
+
37
+ **V62:** Huge step up in quality from V41. Better order of NSFW LORAs. Includes the "Image2Video_Adapter_LoRa" for better I2V performance. Includes some new NSFW LORAs (but not my "pov v3 complete"). Significantly improves dialog and voice clarity (but not 100%). **Use with my workflow**
38
+
39
+ Please support LORA creators and special thanks to the authors of these!
nsfw/ltx-2-19b-phr00tmerge-nsfw-v6.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2c325de6b2268b22183e05a67e25a90e89d8f811c816dab9f4f06c5973e9e392
3
+ size 18876717024
nsfw/ltx2-phr00tmerge-nsfw-v41.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ec279bcc2d205441e021f13bb544251aaf7270e9adb6cdd275823b3405597022
3
+ size 18876717024
nsfw/ltx2-phr00tmerge-nsfw-v62.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3c6f604ff492401937ba90740fd41302bcb362db46ed1d28e617e102d1fbdb22
3
+ size 18876717024
sfw/ltx-2-19b-phr00tmerge-sfw-v3.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8d824d7d40c1dc16b9847ea2b56ec732ec29a26e6f0e161f54d9bd00590468ea
3
+ size 18876717024
sfw/ltx2-phr00tmerge-sfw-v4.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2e7b575f5be416d8f5a1452651e358a35c8ef4b0279c1411972db6ca7bc98ae2
3
+ size 18876717024
sfw/ltx2-phr00tmerge-sfw-v5.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0f5ce24c1df5e77f901170d24795f1aa2862df9d87454ab89af16a6718a3d4a3
3
+ size 18876717024