Lmxyy commited on
Commit
9beaf60
·
verified ·
1 Parent(s): ad05d26

Upload folder using huggingface_hub

Browse files
Files changed (41) hide show
  1. .gitattributes +1 -0
  2. .github/ISSUE_TEMPLATE/1-bug-report.yml +41 -0
  3. .github/ISSUE_TEMPLATE/2-feature-request.yml +24 -0
  4. .github/workflows/close_inactive_issues.yaml +97 -0
  5. .github/workflows/lint.yaml +23 -0
  6. .gitignore +204 -0
  7. .pre-commit-config.yaml +6 -0
  8. .ruff_cache/.gitignore +2 -0
  9. .ruff_cache/0.8.0/10424610330304257446 +0 -0
  10. .ruff_cache/0.8.0/8839166307446693960 +0 -0
  11. .ruff_cache/CACHEDIR.TAG +1 -0
  12. LICENCE.txt +201 -0
  13. README.md +186 -0
  14. README_ZH.md +182 -0
  15. __init__.py +13 -0
  16. assets/comfyui.jpg +3 -0
  17. nodes/__init__.py +0 -0
  18. nodes/lora/__init__.py +1 -0
  19. nodes/lora/flux.py +77 -0
  20. nodes/models/__init__.py +2 -0
  21. nodes/models/configs/flux.1-canny-dev.json +25 -0
  22. nodes/models/configs/flux.1-depth-dev.json +25 -0
  23. nodes/models/configs/flux.1-dev.json +25 -0
  24. nodes/models/configs/flux.1-fill-dev.json +25 -0
  25. nodes/models/configs/flux.1-schnell.json +25 -0
  26. nodes/models/configs/shuttle-jaguar.json +24 -0
  27. nodes/models/flux.py +357 -0
  28. nodes/models/text_encoder.py +139 -0
  29. nodes/preprocessors/__init__.py +1 -0
  30. nodes/preprocessors/depth.py +49 -0
  31. pyproject.toml +23 -0
  32. requirements.txt +6 -0
  33. workflows/nunchaku-flux.1-canny-lora.json +880 -0
  34. workflows/nunchaku-flux.1-canny.json +825 -0
  35. workflows/nunchaku-flux.1-depth-lora.json +868 -0
  36. workflows/nunchaku-flux.1-depth.json +820 -0
  37. workflows/nunchaku-flux.1-dev-controlnet-union-pro.json +1183 -0
  38. workflows/nunchaku-flux.1-dev.json +1169 -0
  39. workflows/nunchaku-flux.1-fill.json +775 -0
  40. workflows/nunchaku-flux.1-redux-dev.json +1413 -0
  41. workflows/nunchaku-flux.1-schnell.json +630 -0
.gitattributes CHANGED
@@ -51,3 +51,4 @@ nunchaku/assets/lora.jpg filter=lfs diff=lfs merge=lfs -text
51
  nunchaku/assets/teaser.jpg filter=lfs diff=lfs merge=lfs -text
52
  nunchaku/assets/visual.jpg filter=lfs diff=lfs merge=lfs -text
53
  nunchaku/assets/wechat.jpg filter=lfs diff=lfs merge=lfs -text
 
 
51
  nunchaku/assets/teaser.jpg filter=lfs diff=lfs merge=lfs -text
52
  nunchaku/assets/visual.jpg filter=lfs diff=lfs merge=lfs -text
53
  nunchaku/assets/wechat.jpg filter=lfs diff=lfs merge=lfs -text
54
+ assets/comfyui.jpg filter=lfs diff=lfs merge=lfs -text
.github/ISSUE_TEMPLATE/1-bug-report.yml ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # modified from https://github.com/sgl-project/sglang/blob/main/.github/ISSUE_TEMPLATE/1-bug-report.yml
2
+ name: 🐞 Bug report
3
+ description: Create a report to help us reproduce and fix the bug
4
+ title: "[Bug] "
5
+ labels: ['Bug']
6
+
7
+ body:
8
+ - type: checkboxes
9
+ attributes:
10
+ label: Checklist
11
+ options:
12
+ - label: 1. I have searched for related issues and FAQs (https://github.com/mit-han-lab/nunchaku/blob/main/docs/faq.md) but was unable to find a solution.
13
+ - label: 2. The issue persists in the latest version.
14
+ - label: 3. Please note that without environment information and a minimal reproducible example, it will be difficult for us to reproduce and address the issue, which may delay our response.
15
+ - label: 4. If your report is a question rather than a bug, please submit it as a discussion at https://github.com/mit-han-lab/ComfyUI-nunchaku/discussions/new/choose. Otherwise, this issue will be closed.
16
+ - label: 5. I will do my best to describe the issue in English.
17
+ - type: textarea
18
+ attributes:
19
+ label: Describe the Bug
20
+ description: Provide a clear and concise explanation of the bug you encountered.
21
+ validations:
22
+ required: true
23
+ - type: textarea
24
+ attributes:
25
+ label: Environment
26
+ description: |
27
+ Please include relevant environment details such as your system specifications, Python version, PyTorch version, and CUDA version.
28
+ placeholder: "Example: Ubuntu 24.04, Python 3.11, PyTorch 2.6, CUDA 12.4"
29
+ validations:
30
+ required: true
31
+ - type: textarea
32
+ attributes:
33
+ label: Reproduction Steps
34
+ description: |
35
+ Please provide clear, step-by-step instructions to help us reproduce the issue. Be as specific as possible. Include the following:
36
+ - The ComfyUI workflow file (`.json`) you used, along with a screenshot of your workflow
37
+ - Links to the models, LoRAs, and control components involved
38
+ - The exact prompt(s) used
39
+ - Any input images required by the workflow
40
+ validations:
41
+ required: true
.github/ISSUE_TEMPLATE/2-feature-request.yml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # modified from https://github.com/sgl-project/sglang/blob/main/.github/ISSUE_TEMPLATE/2-feature-request.yml
2
+ name: 🚀 Feature request
3
+ description: Suggest an idea for this project
4
+ title: "[Feature] "
5
+
6
+ body:
7
+ - type: checkboxes
8
+ attributes:
9
+ label: Checklist
10
+ options:
11
+ - label: 1. If the issue you raised is not a feature but a question, please raise a discussion at https://github.com/mit-han-lab/ComfyUI-nunchaku/discussions/new/choose. Otherwise, it will be closed.
12
+ - label: 2. I will do my best to describe the issue in English.
13
+ - type: textarea
14
+ attributes:
15
+ label: Motivation
16
+ description: |
17
+ A clear and concise description of the motivation of the feature.
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ attributes:
22
+ label: Related resources
23
+ description: |
24
+ If there is an official code release or third-party implementations, please also provide the information here, which would be very helpful.
.github/workflows/close_inactive_issues.yaml ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Borrowed from https://github.com/sgl-project/sglang/blob/main/.github/workflows/close-inactive-issues.yml
2
+ name: Close Inactive Issues
3
+
4
+ on:
5
+ schedule:
6
+ - cron: '0 0 * * *'
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ issues: write
11
+ contents: read
12
+
13
+ jobs:
14
+ close-inactive-issues:
15
+ if: github.repository == 'mit-han-lab/ComfyUI-nunchaku'
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - name: Check and close inactive issues
19
+ uses: actions/github-script@v6
20
+ with:
21
+ github-token: ${{secrets.GITHUB_TOKEN}}
22
+ script: |
23
+ const sixtyDaysAgo = new Date(Date.now() - 60 * 24 * 60 * 60 * 1000);
24
+
25
+ const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');
26
+ console.log(`Owner: ${owner}, Repo: ${repo}`);
27
+
28
+ async function fetchIssues(page = 1) {
29
+ console.log(`Fetching issues for ${owner}/${repo}, page ${page}`);
30
+ return await github.rest.issues.listForRepo({
31
+ owner,
32
+ repo,
33
+ state: 'open',
34
+ sort: 'updated',
35
+ direction: 'asc',
36
+ per_page: 100,
37
+ page: page
38
+ });
39
+ }
40
+
41
+ async function processIssues() {
42
+ console.log('Starting to process issues');
43
+ console.log(`Repository: ${owner}/${repo}`);
44
+
45
+ let page = 1;
46
+ let hasMoreIssues = true;
47
+ while (hasMoreIssues) {
48
+ try {
49
+ const issues = await fetchIssues(page);
50
+ console.log(`Fetched ${issues.data.length} issues on page ${page}`);
51
+
52
+ if (issues.data.length === 0) {
53
+ hasMoreIssues = false;
54
+ break;
55
+ }
56
+
57
+ for (const issue of issues.data) {
58
+ // Skip if the issue has 'good first issue' label
59
+ if (issue.labels.some(label => label.name === 'good first issue')) {
60
+ console.log(`Skipping issue #${issue.number} as it's marked as 'good first issue'`);
61
+ continue;
62
+ }
63
+ if (new Date(issue.updated_at) < sixtyDaysAgo) {
64
+ try {
65
+ await github.rest.issues.update({
66
+ owner,
67
+ repo,
68
+ issue_number: issue.number,
69
+ state: 'closed',
70
+ labels: [...issue.labels.map(l => l.name), 'inactive']
71
+ });
72
+ await github.rest.issues.createComment({
73
+ owner,
74
+ repo,
75
+ issue_number: issue.number,
76
+ body: 'This issue has been automatically closed due to 60-day inactivity. Please feel free to reopen it if needed.'
77
+ });
78
+ console.log(`Closed issue #${issue.number} due to inactivity.`);
79
+ } catch (error) {
80
+ console.error(`Failed to close issue #${issue.number}: ${error.message}`);
81
+ }
82
+ } else {
83
+ console.log(`Issue #${issue.number} is still active. Stopping processing.`);
84
+ hasMoreIssues = false;
85
+ break;
86
+ }
87
+ }
88
+ page += 1;
89
+ } catch (error) {
90
+ console.error(`Error fetching issues on page ${page}: ${error.message}`);
91
+ hasMoreIssues = false;
92
+ }
93
+ }
94
+ console.log('Finished processing issues');
95
+ }
96
+
97
+ await processIssues();
.github/workflows/lint.yaml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Lint
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - main
10
+
11
+ jobs:
12
+ lint:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: '3.10'
20
+ - name: Install dependencies
21
+ run: pip install ruff
22
+ - name: Run ruff check
23
+ run: ruff check nodes --output-format github
.gitignore CHANGED
@@ -1 +1,205 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  .DS_Store
 
 
 
 
 
1
+ # Prerequisites
2
+ *.d
3
+
4
+ # Compiled Object files
5
+ *.slo
6
+ *.lo
7
+ *.o
8
+ *.obj
9
+
10
+ # Precompiled Headers
11
+ *.gch
12
+ *.pch
13
+
14
+ # Compiled Dynamic libraries
15
+ *.so
16
+ *.dylib
17
+ *.dll
18
+
19
+ # Fortran module files
20
+ *.mod
21
+ *.smod
22
+
23
+ # Compiled Static libraries
24
+ *.lai
25
+ *.la
26
+ *.a
27
+ *.lib
28
+
29
+ # Executables
30
+ *.exe
31
+ *.out
32
+ *.app
33
+
34
+ # Byte-compiled / optimized / DLL files
35
+ __pycache__/
36
+ *.py[cod]
37
+ *$py.class
38
+
39
+ # C extensions
40
+ *.so
41
+
42
+ # Distribution / packaging
43
+ .Python
44
+ build/
45
+ develop-eggs/
46
+ dist/
47
+ downloads/
48
+ eggs/
49
+ .eggs/
50
+ lib/
51
+ lib64/
52
+ parts/
53
+ sdist/
54
+ var/
55
+ wheels/
56
+ share/python-wheels/
57
+ *.egg-info/
58
+ .installed.cfg
59
+ *.egg
60
+ MANIFEST
61
+
62
+ # PyInstaller
63
+ # Usually these files are written by a python script from a template
64
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
65
+ *.manifest
66
+ *.spec
67
+
68
+ # Installer logs
69
+ pip-log.txt
70
+ pip-delete-this-directory.txt
71
+
72
+ # Unit test / coverage reports
73
+ htmlcov/
74
+ .tox/
75
+ .nox/
76
+ .coverage
77
+ .coverage.*
78
+ .cache
79
+ nosetests.xml
80
+ coverage.xml
81
+ *.cover
82
+ *.py,cover
83
+ .hypothesis/
84
+ .pytest_cache/
85
+ cover/
86
+
87
+ # Translations
88
+ *.mo
89
+ *.pot
90
+
91
+ # Django stuff:
92
+ *.log
93
+ local_settings.py
94
+ db.sqlite3
95
+ db.sqlite3-journal
96
+
97
+ # Flask stuff:
98
+ instance/
99
+ .webassets-cache
100
+
101
+ # Scrapy stuff:
102
+ .scrapy
103
+
104
+ # Sphinx documentation
105
+ docs/_build/
106
+
107
+ # PyBuilder
108
+ .pybuilder/
109
+ target/
110
+
111
+ # Jupyter Notebook
112
+ .ipynb_checkpoints
113
+
114
+ # IPython
115
+ profile_default/
116
+ ipython_config.py
117
+
118
+ # pyenv
119
+ # For a library or package, you might want to ignore these files since the code is
120
+ # intended to run in multiple environments; otherwise, check them in:
121
+ # .python-version
122
+
123
+ # pipenv
124
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
125
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
126
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
127
+ # install all needed dependencies.
128
+ #Pipfile.lock
129
+
130
+ # poetry
131
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
132
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
133
+ # commonly ignored for libraries.
134
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
135
+ poetry.lock
136
+
137
+ # pdm
138
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
139
+ #pdm.lock
140
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
141
+ # in version control.
142
+ # https://pdm.fming.dev/#use-with-ide
143
+ .pdm.toml
144
+
145
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
146
+ __pypackages__/
147
+
148
+ # Celery stuff
149
+ celerybeat-schedule
150
+ celerybeat.pid
151
+
152
+ # SageMath parsed files
153
+ *.sage.py
154
+
155
+ # Environments
156
+ .env
157
+ .venv
158
+ env/
159
+ venv/
160
+ ENV/
161
+ env.bak/
162
+ venv.bak/
163
+
164
+ # Spyder project settings
165
+ .spyderproject
166
+ .spyproject
167
+
168
+ # Rope project settings
169
+ .ropeproject
170
+
171
+ # mkdocs documentation
172
+ /site
173
+
174
+ # mypy
175
+ .mypy_cache/
176
+ .dmypy.json
177
+ dmypy.json
178
+
179
+ # Pyre type checker
180
+ .pyre/
181
+
182
+ # pytype static type analyzer
183
+ .pytype/
184
+
185
+ # Cython debug symbols
186
+ cython_debug/
187
+
188
+ # PyCharm
189
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
190
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
191
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
192
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
193
+ .idea/
194
+
195
+ # VS Code
196
+ .vscode/
197
+ !.vscode/settings.json
198
+
199
+ .gradio/
200
+
201
  .DS_Store
202
+ *.log
203
+ *.pt
204
+ *.nsys-rep
205
+ *.ncu-rep
.pre-commit-config.yaml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.3.2
4
+ hooks:
5
+ - id: ruff
6
+ args: []
.ruff_cache/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ # Automatically created by ruff.
2
+ *
.ruff_cache/0.8.0/10424610330304257446 ADDED
Binary file (1.49 kB). View file
 
.ruff_cache/0.8.0/8839166307446693960 ADDED
Binary file (728 Bytes). View file
 
.ruff_cache/CACHEDIR.TAG ADDED
@@ -0,0 +1 @@
 
 
1
+ Signature: 8a477f597d28d172789f06886806bc55
LICENCE.txt ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [2024] [MIT HAN Lab]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
README.md ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center" id="nunchaku_logo">
2
+ <img src="https://raw.githubusercontent.com/mit-han-lab/nunchaku/96615bd93a1f0d2cf98039fddecfec43ce34cc96/assets/nunchaku.svg" alt="logo" width="220"></img>
3
+ </div>
4
+ <h3 align="center">
5
+ <a href="http://arxiv.org/abs/2411.05007"><b>Paper</b></a> | <a href="https://hanlab.mit.edu/projects/svdquant"><b>Website</b></a> | <a href="https://hanlab.mit.edu/blog/svdquant"><b>Blog</b></a> | <a href="https://svdquant.mit.edu"><b>Demo</b></a> | <a href="https://huggingface.co/collections/mit-han-lab/svdquant-67493c2c2e62a1fc6e93f45c"><b>HuggingFace</b></a> | <a href="https://modelscope.cn/collections/svdquant-468e8f780c2641"><b>ModelScope</b></a>
6
+ </h3>
7
+
8
+ <h3 align="center">
9
+ <a href="README.md"><b>English</b></a> | <a href="README_ZH.md"><b>中文</b></a>
10
+ </h3>
11
+
12
+ This repository provides the ComfyUI node for [**Nunchaku**](https://github.com/mit-han-lab/nunchaku), an efficient inference engine for 4-bit neural networks quantized with [SVDQuant](http://arxiv.org/abs/2411.05007). For the quantization library, check out [DeepCompressor](https://github.com/mit-han-lab/deepcompressor).
13
+
14
+ Join our user groups on [**Slack**](https://join.slack.com/t/nunchaku/shared_invite/zt-3170agzoz-NgZzWaTrEj~n2KEV3Hpl5Q), [**Discord**](https://discord.gg/Wk6PnwX9Sm) and [**WeChat**](https://github.com/mit-han-lab/nunchaku/blob/main/assets/wechat.jpg?raw=true) for discussions—details [here](https://github.com/mit-han-lab/nunchaku/issues/149). If you have any questions, run into issues, or are interested in contributing, feel free to share your thoughts with us!
15
+
16
+ # Nunchaku ComfyUI Node
17
+
18
+ ![comfyui](assets/comfyui.jpg)
19
+ ## News
20
+
21
+ - **[2025-04-16]** 🎥 Released tutorial videos in both [**English**](https://youtu.be/YHAVe-oM7U8?si=cM9zaby_aEHiFXk0) and [**Chinese**](https://www.bilibili.com/video/BV1BTocYjEk5/?share_source=copy_web&vd_source=8926212fef622f25cc95380515ac74ee) to assist installation and usage.
22
+ - **[2025-04-09]** 📢 Published the [April roadmap](https://github.com/mit-han-lab/nunchaku/issues/266) and an [FAQ](https://github.com/mit-han-lab/nunchaku/discussions/262) to help the community get started and stay up to date with Nunchaku’s development.
23
+ - **[2025-04-05]** 🚀 **Release v0.2.0!** This release introduces [**multi-LoRA**](workflows/nunchaku-flux.1-dev.json) and [**ControlNet**](workflows/nunchaku-flux.1-dev-controlnet-union-pro.json) support, with enhanced performance using FP16 attention and First-Block Cache. We've also added [**20-series GPU**](examples/flux.1-dev-turing.py) compatibility and official workflows for [FLUX.1-redux](workflows/nunchaku-flux.1-redux-dev.json)!
24
+
25
+ ## Installation
26
+
27
+ We provide tutorial videos to help you install and use Nunchaku on Windows, available in both [**English**](https://youtu.be/YHAVe-oM7U8?si=cM9zaby_aEHiFXk0) and [**Chinese**](https://www.bilibili.com/video/BV1BTocYjEk5/?share_source=copy_web&vd_source=8926212fef622f25cc95380515ac74ee). You can also follow the corresponding step-by-step text guide at [`docs/setup_windows.md`](docs/setup_windows.md). If you run into issues, these resources are a good place to start.
28
+
29
+ ### Prerequisites
30
+
31
+ Please first install `nunchaku` following the instructions in [README.md](https://github.com/mit-han-lab/nunchaku?tab=readme-ov-file#installation).
32
+
33
+ ### Comfy-CLI
34
+
35
+ You can easily use [`comfy-cli`](https://github.com/Comfy-Org/comfy-cli) to run ComfyUI with Nunchaku:
36
+
37
+ ```shell
38
+ pip install comfy-cli # Install ComfyUI CLI
39
+ comfy install # Install ComfyUI
40
+ comfy node registry-install ComfyUI-nunchaku # Install Nunchaku
41
+ ```
42
+
43
+ ### ComfyUI-Manager
44
+
45
+ 1. Install [ComfyUI](https://github.com/comfyanonymous/ComfyUI/tree/master) with
46
+
47
+ ```shell
48
+ git clone https://github.com/comfyanonymous/ComfyUI.git
49
+ cd ComfyUI
50
+ pip install -r requirements.txt
51
+ ```
52
+
53
+ 2. Install [ComfyUI-Manager](https://github.com/ltdrdata/ComfyUI-Manager) with the following commands:
54
+
55
+ ```shell
56
+ cd custom_nodes
57
+ git clone https://github.com/ltdrdata/ComfyUI-Manager comfyui-manager
58
+ ```
59
+
60
+ 3. Launch ComfyUI
61
+
62
+ ```shell
63
+ cd .. # Return to the ComfyUI root directory
64
+ python main.py
65
+ ```
66
+
67
+ 4. Open the Manager, search `ComfyUI-nunchaku` in the Custom Nodes Manager and then install it.
68
+
69
+
70
+ ### Manual Installation
71
+ 1. Set up [ComfyUI](https://github.com/comfyanonymous/ComfyUI/tree/master) with the following commands:
72
+
73
+ ```shell
74
+ git clone https://github.com/comfyanonymous/ComfyUI.git
75
+ cd ComfyUI
76
+ pip install -r requirements.txt
77
+ ```
78
+
79
+ 2. Clone this repository into the `custom_nodes` directory inside ComfyUI:
80
+
81
+ ```shell
82
+ cd custom_nodes
83
+ git clone https://github.com/mit-han-lab/ComfyUI-nunchaku nunchaku_nodes
84
+ ```
85
+
86
+ ## Usage
87
+
88
+ 1. **Set Up ComfyUI and Nunchaku**:
89
+
90
+ * Nunchaku workflows can be found at [`workflows`](./workflows). To use them, copy the files to `user/default/workflows` in the ComfyUI root directory:
91
+
92
+ ```shell
93
+ cd ComfyUI
94
+
95
+ # Create the workflows directory if it doesn't exist
96
+ mkdir -p user/default/workflows
97
+
98
+ # Copy workflow configurations
99
+ cp custom_nodes/nunchaku_nodes/workflows/* user/default/workflows/
100
+ ```
101
+
102
+ * Install any missing nodes (e.g., `comfyui-inpainteasy`) by following [this tutorial](https://github.com/ltdrdata/ComfyUI-Manager?tab=readme-ov-file#support-of-missing-nodes-installation).
103
+
104
+ 2. **Download Required Models**: Follow [this tutorial](https://comfyanonymous.github.io/ComfyUI_examples/flux/) to download the necessary models into the appropriate directories. Alternatively, use the following commands:
105
+
106
+ ```shell
107
+ huggingface-cli download comfyanonymous/flux_text_encoders clip_l.safetensors --local-dir models/text_encoders
108
+ huggingface-cli download comfyanonymous/flux_text_encoders t5xxl_fp16.safetensors --local-dir models/text_encoders
109
+ huggingface-cli download black-forest-labs/FLUX.1-schnell ae.safetensors --local-dir models/vae
110
+ ```
111
+
112
+ 3. **Run ComfyUI**: To start ComfyUI, navigate to its root directory and run `python main.py`. If you are using `comfy-cli`, simply run `comfy launch`.
113
+
114
+ 4. **Select the Nunchaku Workflow**: Choose one of the Nunchaku workflows (workflows that start with `nunchaku-`) to get started. For the `flux.1-fill` workflow, you can use the built-in **MaskEditor** tool to apply a mask over an image.
115
+
116
+ 5. All the 4-bit models are available at our [HuggingFace](https://huggingface.co/collections/mit-han-lab/svdquant-67493c2c2e62a1fc6e93f45c) or [ModelScope](https://modelscope.cn/collections/svdquant-468e8f780c2641) collection. Except [`svdq-flux.1-t5`](https://huggingface.co/mit-han-lab/svdq-flux.1-t5), please download the **entire model folder** to `models/diffusion_models`.
117
+
118
+ ## Nunchaku Nodes
119
+
120
+ **Note: We've renamed our nodes from 'SVDQuant XXX Loader' to 'Nunchaku XXX Loader'. Please update your workflows accordingly.**
121
+
122
+ * **Nunchaku Flux DiT Loader**: A node for loading the FLUX diffusion model.
123
+
124
+ * `model_path`: Specifies the model's location. You need to manually download the model folder from our [Hugging Face](https://huggingface.co/collections/mit-han-lab/svdquant-67493c2c2e62a1fc6e93f45c) or [ModelScope](https://modelscope.cn/collections/svdquant-468e8f780c2641) collection. For example, run
125
+
126
+ ```shell
127
+ huggingface-cli download mit-han-lab/svdq-int4-flux.1-dev --local-dir models/diffusion_models/svdq-int4-flux.1-dev
128
+ ```
129
+
130
+ After downloading, set `model_path` to the corresponding folder name.
131
+
132
+ **Note: If you rename the model folder, ensure that `comfy_config.json` is present in the folder. You can find this file in our corresponding repositories on [Hugging Face](https://huggingface.co/collections/mit-han-lab/svdquant-67493c2c2e62a1fc6e93f45c) or [ModelScope](https://modelscope.cn/collections/svdquant-468e8f780c2641).**
133
+
134
+ * `cache_threshold`: Controls the [First-Block Cache](https://github.com/chengzeyi/ParaAttention?tab=readme-ov-file#first-block-cache-our-dynamic-caching) tolerance, similar to `residual_diff_threshold` in [WaveSpeed](https://github.com/chengzeyi/Comfy-WaveSpeed). Increasing this value improves speed but may reduce quality. A typical value is 0.12. Setting it to 0 disables the effect.
135
+
136
+ * `attention`: Defines the attention implementation method. You can choose between `flash-attention2` or `nunchaku-fp16`. Our `nunchaku-fp16` is approximately 1.2× faster than `flash-attention2` without compromising precision. For Turing GPUs (20-series), where `flash-attention2` is unsupported, you must use `nunchaku-fp16`.
137
+
138
+ * `cpu_offload`: Enables CPU offloading for the transformer model. While this reduces GPU memory usage, it may slow down inference.
139
+
140
+ - When set to `auto`, it will automatically detect your available GPU memory. If your GPU has more than 14GiB of memory, offloading will be disabled. Otherwise, it will be enabled.
141
+ - **Memory usage will be further optimized in node later.**
142
+
143
+ * `device_id`: Indicates the GPU ID for running the model.
144
+
145
+ * `data_type`: Defines the data type for the dequantized tensors. Turing GPUs (20-series) do not support `bfloat16` and can only use `float16`.
146
+
147
+ * `i2f_mode`: For Turing (20-series) GPUs, this option controls the GEMM implementation mode. `enabled` and `always` modes exhibit minor differences. This option is ignored on other GPU architectures.
148
+
149
+ * **Nunchaku FLUX LoRA Loader**: A node for loading LoRA modules for SVDQuant FLUX models.
150
+
151
+ * Place your LoRA checkpoints in the `models/loras` directory. These will appear as selectable options under `lora_name`.
152
+ * `lora_strength`: Controls the strength of the LoRA module.
153
+ * You can connect **multiple LoRA nodes** together.
154
+ * **Note**: Starting from version 0.2.0, there is no need to convert LoRAs. Simply provide the **original LoRA files** to the loader.
155
+
156
+ * **Nunchaku Text Encoder Loader**: A node for loading the text encoders.
157
+
158
+ * For FLUX, use the following files:
159
+
160
+ - `text_encoder1`: `t5xxl_fp16.safetensors` (or FP8/GGUF versions of T5 encoders).
161
+ - `text_encoder2`: `clip_l.safetensors`
162
+
163
+ * `t5_min_length`: Sets the minimum sequence length for T5 text embeddings. The default in `DualCLIPLoader` is hardcoded to 256, but for better image quality, use 512 here.
164
+
165
+ * `use_4bit_t5`: Specifies whether you need to use our quantized 4-bit T5 to save GPU memory.
166
+
167
+ * `int4_model`: Specifies the INT4 T5 location. This option is only used when `use_4bit_t5` is enabled. You can download our INT4 T5 model folder to `models/text_encoders` from [HuggingFace](https://huggingface.co/mit-han-lab/svdq-flux.1-t5) or [ModelScope](https://modelscope.cn/models/Lmxyy1999/svdq-flux.1-t5). For example, you can run the following command:
168
+
169
+ ```shell
170
+ huggingface-cli download mit-han-lab/svdq-flux.1-t5 --local-dir models/text_encoders/svdq-flux.1-t5
171
+ ```
172
+
173
+ After downloading, specify the corresponding folder name as the `int4_model`.
174
+
175
+
176
+ * **Note**: Currently, loading the **4-bit T5 model** consumes excessive memory. **We will optimize this later.**
177
+
178
+
179
+
180
+ * **FLUX.1 Depth Preprocessor (deprecated)** : A legacy node for loading a depth estimation model and producing a corresponding depth map. The `model_path` parameter specifies the location of the model checkpoint. You can manually download the model repository from [Hugging Face](https://huggingface.co/LiheYoung/depth-anything-large-hf) and place it under the `models/checkpoints` directory. Alternatively, use the following CLI command:
181
+
182
+ ```shell
183
+ huggingface-cli download LiheYoung/depth-anything-large-hf --local-dir models/checkpoints/depth-anything-large-hf
184
+ ```
185
+
186
+ **Note**: This node is deprecated and will be removed in a future release. Please use the updated **"Depth Anything"** node with the `depth_anything_vitl14.pth` model file instead.
README_ZH.md ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center" id="nunchaku_logo">
2
+ <img src="https://raw.githubusercontent.com/mit-han-lab/nunchaku/96615bd93a1f0d2cf98039fddecfec43ce34cc96/assets/nunchaku.svg" alt="logo" width="220"></img>
3
+ </div>
4
+ <h3 align="center">
5
+ <a href="http://arxiv.org/abs/2411.05007"><b>论文</b></a> | <a href="https://hanlab.mit.edu/projects/svdquant"><b>网站</b></a> | <a href="https://hanlab.mit.edu/blog/svdquant"><b>博客</b></a> | <a href="https://svdquant.mit.edu"><b>演示</b></a> | <a href="https://huggingface.co/collections/mit-han-lab/svdquant-67493c2c2e62a1fc6e93f45c"><b>HuggingFace</b></a> | <a href="https://modelscope.cn/collections/svdquant-468e8f780c2641"><b>ModelScope</b></a>
6
+ </h3>
7
+
8
+ <h3 align="center">
9
+ <a href="README.md"><b>English</b></a> | <a href="README_ZH.md"><b>中文</b></a>
10
+ </h3>
11
+
12
+ 该储存库为[**Nunchaku**](https://github.com/mit-han-lab/nunchaku)提供了ComfyUI节点,这是一个用于使用[SVDQuant](http://arxiv.org/abs/2411.05007)量化的 4 位神经网络的高效推理引擎。有关量化库,请查看 [DeepCompressor](https://github.com/mit-han-lab/deepcompressor).
13
+
14
+ 加入我们,在[**Slack**](https://join.slack.com/t/nunchaku/shared_invite/zt-3170agzoz-NgZzWaTrEj~n2KEV3Hpl5Q), [**Discord**](https://discord.gg/Wk6PnwX9Sm) 和 [**微信**](https://github.com/mit-han-lab/nunchaku/blob/main/assets/wechat.jpg?raw=true) 上的社区群组进行讨论———详情点击[这里](https://github.com/mit-han-lab/nunchaku/issues/149). 如果您有任何问题、遇到问题或有兴趣做出贡献,请随时与我们分享您的想法!
15
+
16
+ # Nunchaku ComfyUI节点
17
+
18
+ ![comfyui](assets/comfyui.jpg)
19
+ ## 最新消息
20
+
21
+ - **[2025-04-09]** 🎥 发布了[**英文**](https://youtu.be/YHAVe-oM7U8?si=cM9zaby_aEHiFXk0)和[**中文**](https://www.bilibili.com/video/BV1BTocYjEk5/?share_source=copy_web&vd_source=8926212fef622f25cc95380515ac74ee)教程视频,协助安装和使用Nunchaku。
22
+ - **[2025-04-09]** 📢 发布了 [4月更新计划](https://github.com/mit-han-lab/nunchaku/issues/266)和[常见问题解答](https://github.com/mit-han-lab/nunchaku/discussions/262)来帮助社区朋友快速入门并及时了解Nunchaku的发展情况。
23
+ - **[2025-04-05]** 🚀 **v0.2.0发布!** 这个版本支持了[**多LoRA**](workflows/nunchaku-flux.1-dev.json)和[**ControlNet**](workflows/nunchaku-flux.1-dev-controlnet-union-pro.json),并且使用FP16 attention和First-Block Cache来增强性能. 我们添加了对[**Invidia20系显卡**](examples/flux.1-dev-turing.py)的支持,并制作了[FLUX.1-redux](workflows/nunchaku-flux.1-redux-dev.json)的官方工作流。
24
+
25
+ ## 安装方法
26
+
27
+ 我们提供了在 Windows 上安装和使用 Nunchaku 的教学视频,支持[**英文**](https://youtu.be/YHAVe-oM7U8?si=cM9zaby_aEHiFXk0)和[**中文**](https://www.bilibili.com/video/BV1BTocYjEk5/?share_source=copy_web&vd_source=8926212fef622f25cc95380515ac74ee)两个版本。同时,你也可以参考对应的图文教程 [`docs/setup_windows.md`](docs/setup_windows.md)。如果在安装过程中遇到问题,建议优先查阅这些资源。
28
+
29
+ ### 前置工作
30
+
31
+ 请先参阅[README.md](https://github.com/mit-han-lab/nunchaku?tab=readme-ov-file#installation)来安装 `nunchaku`。
32
+
33
+ ### Comfy-CLI:ComfyUI的命令工具
34
+
35
+ 您可以使用[`comfy-cli`](https://github.com/Comfy-Org/comfy-cli)在ComfyUI中运行Nunchaku:
36
+
37
+ ```shell
38
+ pip install comfy-cli # Install ComfyUI CLI
39
+ comfy install # Install ComfyUI
40
+ comfy node registry-install ComfyUI-nunchaku # Install Nunchaku
41
+ ```
42
+
43
+ ### ComfyUI-Manager
44
+
45
+ 1. 首先使用以下指令安装[ComfyUI](https://github.com/comfyanonymous/ComfyUI/tree/master)
46
+
47
+ ```shell
48
+ git clone https://github.com/comfyanonymous/ComfyUI.git
49
+ cd ComfyUI
50
+ pip install -r requirements.txt
51
+ ```
52
+
53
+ 2. 使用以下命令安装[ComfyUI-Manager](https://github.com/ltdrdata/ComfyUI-Manager)(这是一个节点管理插件)
54
+
55
+ ```shell
56
+ cd custom_nodes
57
+ git clone https://github.com/ltdrdata/ComfyUI-Manager comfyui-manager
58
+ ```
59
+
60
+ 3. 启动ComfyUI
61
+
62
+ ```shell
63
+ cd .. # Return to the ComfyUI root directory
64
+ python main.py
65
+ ```
66
+
67
+ 4. 打开Manager后, 在Custom Nodes Manager中搜索`ComfyUI-nunchaku`节点并且下载它then install it.
68
+
69
+
70
+ ### 手动安装
71
+ 1. 使用以下命令设置[ComfyUI](https://github.com/comfyanonymous/ComfyUI/tree/master)
72
+
73
+ ```shell
74
+ git clone https://github.com/comfyanonymous/ComfyUI.git
75
+ cd ComfyUI
76
+ pip install -r requirements.txt
77
+ ```
78
+
79
+ 2. 将此仓库克隆到 ComfyUI 中的目录中:`custom_nodes`
80
+
81
+ ```shell
82
+ cd custom_nodes
83
+ git clone https://github.com/mit-han-lab/ComfyUI-nunchaku nunchaku_nodes
84
+ ```
85
+
86
+ ## 使用说明
87
+
88
+ 1. **设置ComfyUI和Nunchaku**:
89
+
90
+ * Nunchaku的工作流可以在[`workflows`](./workflows)找到。想要找到它们,请将文件复制到ComfyUI的根目录中: `user/default/workflows`
91
+ ```shell
92
+ cd ComfyUI
93
+
94
+ # Create the workflows directory if it doesn't exist
95
+ mkdir -p user/default/workflows
96
+
97
+ # Copy workflow configurations
98
+ cp custom_nodes/nunchaku_nodes/workflows/* user/default/workflows/
99
+ ```
100
+
101
+ * 按照[本教程](https://github.com/ltdrdata/ComfyUI-Manager?tab=readme-ov-file#support-of-missing-nodes-installation).安装所有缺失节点 (例如 `comfyui-inpainteasy`)
102
+
103
+ 2. **下载必要模型**: 按照[本教程](https://comfyanonymous.github.io/ComfyUI_examples/flux/)把必要的模型下载到对应的目录中。或者使用以下命令:
104
+
105
+ ```shell
106
+ huggingface-cli download comfyanonymous/flux_text_encoders clip_l.safetensors --local-dir models/text_encoders
107
+ huggingface-cli download comfyanonymous/flux_text_encoders t5xxl_fp16.safetensors --local-dir models/text_encoders
108
+ huggingface-cli download black-forest-labs/FLUX.1-schnell ae.safetensors --local-dir models/vae
109
+ ```
110
+
111
+ 3. **运行ComfyUI**: 要启动 ComfyUI,请导航到其根目录并运行:`python main.py`。如果您使用的是 `comfy-cli`, 请运行 `comfy launch`.
112
+
113
+ 4. **选择Nunchaku工作流**:选择一个Nunchaku工作流开始使用(文件名以`nunchaku-`为开头的工作流)。在使用`flux.1-fill`的工作流时, 可以使用ComfyUI内置的**MaskEditor**工具来涂抹遮罩。
114
+
115
+ 5.所有四位模型都可以在[HuggingFace](https://huggingface.co/collections/mit-han-lab/svdquant-67493c2c2e62a1fc6e93f45c)或者[ModelScope](https://modelscope.cn/collections/svdquant-468e8f780c2641)中找到。除了[`svdq-flux.1-t5`](https://huggingface.co/mit-han-lab/svdq-flux.1-t5),请将**整个模型文件夹**下载并放入到`models/diffusion_models`文件夹中。
116
+
117
+ ## Nunchaku节点
118
+
119
+ **注:我们已将“SVDQuant XXX Loader”节点重命名为“Nunchaku XXX Loader”,请更新工作流。**
120
+
121
+ * **Nunchaku Flux DiT Loader节点**:用于加载Flux扩散模型的节点
122
+
123
+ * `model_path`:指定模型的位置。您需要从我们的[Hugging Face](https://huggingface.co/collections/mit-han-lab/svdquant-67493c2c2e62a1fc6e93f45c)或者[ModelScope](https://modelscope.cn/collections/svdquant-468e8f780c2641)中手动下载模型文件夹。例如:运行
124
+
125
+ ```shell
126
+ huggingface-cli download mit-han-lab/svdq-int4-flux.1-dev --local-dir models/diffusion_models/svdq-int4-flux.1-dev
127
+ ```
128
+
129
+ 下载完成后, 把`model_path`设置为对应的文件夹名称。
130
+
131
+ **注:如果重命名模型文件夹,确保文件夹中包含`comfy_config.json`.您可以在[Hugging Face](https://huggingface.co/collections/mit-han-lab/svdquant-67493c2c2e62a1fc6e93f45c)或者[ModelScope](https://modelscope.cn/collections/svdquant-468e8f780c2641)上的相应存储库中找到此文件。**
132
+
133
+ * `cache_threshold`:控制[First-Block Cache](https://github.com/chengzeyi/ParaAttention?tab=readme-ov-file#first-block-cache-our-dynamic-caching)的容差,类似于[WaveSpeed](https://github.com/chengzeyi/Comfy-WaveSpeed)中的`residual_diff_threshold`。增加此值可以提高速度,但可能会降低质量。典型值为 0.12。将其设置为 0 将禁用该效果。
134
+
135
+ * `attention`:定义 attention 的实现方法. 您可以在`flash-attention2`或`nunchaku-fp16`之间进行选择。我们的`nunchaku-fp16`在不影响精度的情况下大约比`flash-attention2`快1.2x倍。对于Turing架构的显卡(20系), 如果不支持`flash-attention2`,则必须使用 `nunchaku-fp16`。
136
+
137
+ * `cpu_offload`:为transformer模型启用CPU卸载。虽然这减少了GPU内存的使用,但它可能会减慢推理速度。
138
+
139
+ -当设置为`auto`的时候,它将自动检测您的可用 GPU 内存。如果您的GPU内存超过14GiB,则将禁用卸载。否则,它将启用。
140
+ - **以后将在节点中进一步优化内存使用。**
141
+
142
+ * `device_id`:模型运行时使用的GPU ID。
143
+
144
+ * `data_type`:定义去量子化张量的数据类型。Turing架构的GPU(20系)不支持`bfloat16`,只能只用`float16`.
145
+
146
+ * `i2f_mode`:对于Turing架构的GPU(20系),此选项控制GEMM的实现模式。`enabled`和`always`模式的差异细微。在其他架构的GPU上可以忽略这个选项。
147
+
148
+ * **Nunchaku FLUX LoRA Loader**:用于加载SVDQuant FLUX模型的LoRA模型的节点
149
+
150
+ * 将LoRA Checkpints文件放在`models/loras`目录中。这些LoRA模型将在`lora_name`下显示为可选选项。
151
+ * `lora_strength`:控制LoRA模型的强度。
152
+ * 您可以将多个**multiple LoRA nodes**模型连接使用
153
+ * **注**:从0.2.0版本开始,不需要转换LoRA了。可以在加载器中加载原始的LoRA文件
154
+
155
+ * **Nunchaku Text Encoder Loader**:用于加载文本编码器的节点。
156
+
157
+ * 对于FLUX,请使用以下文件:
158
+
159
+ - `text_encoder1`: `t5xxl_fp16.safetensors`(或 T5 编码器的 FP8/GGUF 版本)。
160
+ - `text_encoder2`: `clip_l.safetensors`
161
+
162
+ * `t5_min_length`:设置 T5 文本嵌入的最小序列长度。在`DualCLIPLoader`中的默认硬编码为256,但为了获得更好的图像质量,请在此处使用 512。
163
+
164
+ * `use_4bit_t5`:指定您是否需要使用我们的量化4位T5来节省GPU内存
165
+
166
+ * `int4_model`:指定INT4 T5的位置。这个选项仅在`use_4bit_t5`启用时使用。您可以从[HuggingFace](https://huggingface.co/mit-han-lab/svdq-flux.1-t5)或[ModelScope](https://modelscope.cn/models/Lmxyy1999/svdq-flux.1-t5)下载模型到`models/text_encoders`文件夹。例如,您可以使用以下命令:
167
+
168
+ ```shell
169
+ huggingface-cli download mit-han-lab/svdq-flux.1-t5 --local-dir models/text_encoders/svdq-flux.1-t5
170
+ ```
171
+
172
+ After downloading, specify the corresponding folder name as the `int4_model`.
173
+
174
+ **注意**:目前,加载**4-bit T5 model**会消耗过多内存. **我们将在以后对其进行优化**
175
+
176
+ * **FLUX.1 Depth Preprocessor (已弃用)**:一个用于加载depth模型并生成相应深度图的旧节点。`model_path`参数指定checkpoint模型的位置。您可以从[Hugging Face](https://huggingface.co/LiheYoung/depth-anything-large-hf) 下载模型并放在`models/checkpoints`目录中。或者,使用以下CLI命令:
177
+
178
+ ```shell
179
+ huggingface-cli download LiheYoung/depth-anything-large-hf --local-dir models/checkpoints/depth-anything-large-hf
180
+ ```
181
+
182
+ **注意**:此节点已弃用,并将在未来发行版中删除。请改用更新后的**"Depth Anything"**节点来替代加载`depth_anything_vitl14.pth`。
__init__.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # only import if running as a custom node
2
+ from .nodes.lora import NunchakuFluxLoraLoader
3
+ from .nodes.models import NunchakuFluxDiTLoader, NunchakuTextEncoderLoader
4
+ from .nodes.preprocessors import FluxDepthPreprocessor
5
+
6
+ NODE_CLASS_MAPPINGS = {
7
+ "NunchakuFluxDiTLoader": NunchakuFluxDiTLoader,
8
+ "NunchakuTextEncoderLoader": NunchakuTextEncoderLoader,
9
+ "NunchakuFluxLoraLoader": NunchakuFluxLoraLoader,
10
+ "NunchakuDepthPreprocessor": FluxDepthPreprocessor,
11
+ }
12
+ NODE_DISPLAY_NAME_MAPPINGS = {k: v.TITLE for k, v in NODE_CLASS_MAPPINGS.items()}
13
+ __all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"]
assets/comfyui.jpg ADDED

Git LFS Details

  • SHA256: 2d7364429534f6b7272682883899bab63016517495be7dc26eae04309164f3bc
  • Pointer size: 131 Bytes
  • Size of remote file: 991 kB
nodes/__init__.py ADDED
File without changes
nodes/lora/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ from .flux import NunchakuFluxLoraLoader
nodes/lora/flux.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import copy
2
+ import logging
3
+
4
+ import folder_paths
5
+ from nunchaku.lora.flux import to_diffusers
6
+ from ..models.flux import ComfyFluxWrapper
7
+
8
+ logging.basicConfig(level=logging.INFO)
9
+ logger = logging.getLogger("NunchakuFluxLoraLoader")
10
+
11
+
12
+ class NunchakuFluxLoraLoader:
13
+ @classmethod
14
+ def INPUT_TYPES(s):
15
+ return {
16
+ "required": {
17
+ "model": (
18
+ "MODEL",
19
+ {"tooltip": "The diffusion model the LoRA will be applied to."},
20
+ ),
21
+ "lora_name": (
22
+ folder_paths.get_filename_list("loras"),
23
+ {"tooltip": "The name of the LoRA."},
24
+ ),
25
+ "lora_strength": (
26
+ "FLOAT",
27
+ {
28
+ "default": 1.0,
29
+ "min": -100.0,
30
+ "max": 100.0,
31
+ "step": 0.01,
32
+ "tooltip": "How strongly to modify the diffusion model. This value can be negative.",
33
+ },
34
+ ),
35
+ }
36
+ }
37
+
38
+ RETURN_TYPES = ("MODEL",)
39
+ OUTPUT_TOOLTIPS = ("The modified diffusion model.",)
40
+ FUNCTION = "load_lora"
41
+ TITLE = "Nunchaku FLUX.1 LoRA Loader"
42
+
43
+ CATEGORY = "Nunchaku"
44
+ DESCRIPTION = (
45
+ "LoRAs are used to modify the diffusion model, "
46
+ "altering the way in which latents are denoised such as applying styles. "
47
+ "You can link multiple LoRA nodes."
48
+ )
49
+
50
+ def load_lora(self, model, lora_name: str, lora_strength: float):
51
+ model_wrapper = model.model.diffusion_model
52
+ assert isinstance(model_wrapper, ComfyFluxWrapper)
53
+
54
+ transformer = model_wrapper.model
55
+ model_wrapper.model = None
56
+ ret_model = copy.deepcopy(model) # copy everything except the model
57
+ ret_model_wrapper = ret_model.model.diffusion_model
58
+ assert isinstance(ret_model_wrapper, ComfyFluxWrapper)
59
+
60
+ model_wrapper.model = transformer
61
+ ret_model_wrapper.model = transformer
62
+
63
+ lora_path = folder_paths.get_full_path_or_raise("loras", lora_name)
64
+ ret_model_wrapper.loras.append((lora_path, lora_strength))
65
+
66
+ sd = to_diffusers(lora_path)
67
+ if "transformer.x_embedder.lora_A.weight" in sd:
68
+ new_in_channels = sd["transformer.x_embedder.lora_A.weight"].shape[1]
69
+ assert new_in_channels % 4 == 0
70
+ new_in_channels = new_in_channels // 4
71
+
72
+ old_in_channels = ret_model.model.model_config.unet_config["in_channels"]
73
+ assert old_in_channels <= new_in_channels
74
+ if old_in_channels < new_in_channels:
75
+ ret_model.model.model_config.unet_config["in_channels"] = new_in_channels
76
+
77
+ return (ret_model,)
nodes/models/__init__.py ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ from .flux import NunchakuFluxDiTLoader
2
+ from .text_encoder import NunchakuTextEncoderLoader
nodes/models/configs/flux.1-canny-dev.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_class": "Flux",
3
+ "model_config": {
4
+ "axes_dim": [
5
+ 16,
6
+ 56,
7
+ 56
8
+ ],
9
+ "context_in_dim": 4096,
10
+ "depth": 19,
11
+ "depth_single_blocks": 38,
12
+ "disable_unet_model_creation": true,
13
+ "guidance_embed": true,
14
+ "hidden_size": 3072,
15
+ "image_model": "flux",
16
+ "in_channels": 32,
17
+ "mlp_ratio": 4.0,
18
+ "num_heads": 24,
19
+ "out_channels": 16,
20
+ "patch_size": 2,
21
+ "qkv_bias": true,
22
+ "theta": 10000,
23
+ "vec_in_dim": 768
24
+ }
25
+ }
nodes/models/configs/flux.1-depth-dev.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_class": "Flux",
3
+ "model_config": {
4
+ "axes_dim": [
5
+ 16,
6
+ 56,
7
+ 56
8
+ ],
9
+ "context_in_dim": 4096,
10
+ "depth": 19,
11
+ "depth_single_blocks": 38,
12
+ "disable_unet_model_creation": true,
13
+ "guidance_embed": true,
14
+ "hidden_size": 3072,
15
+ "image_model": "flux",
16
+ "in_channels": 32,
17
+ "mlp_ratio": 4.0,
18
+ "num_heads": 24,
19
+ "out_channels": 16,
20
+ "patch_size": 2,
21
+ "qkv_bias": true,
22
+ "theta": 10000,
23
+ "vec_in_dim": 768
24
+ }
25
+ }
nodes/models/configs/flux.1-dev.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_class": "Flux",
3
+ "model_config": {
4
+ "axes_dim": [
5
+ 16,
6
+ 56,
7
+ 56
8
+ ],
9
+ "context_in_dim": 4096,
10
+ "depth": 19,
11
+ "depth_single_blocks": 38,
12
+ "disable_unet_model_creation": true,
13
+ "guidance_embed": true,
14
+ "hidden_size": 3072,
15
+ "image_model": "flux",
16
+ "in_channels": 16,
17
+ "mlp_ratio": 4.0,
18
+ "num_heads": 24,
19
+ "out_channels": 16,
20
+ "patch_size": 2,
21
+ "qkv_bias": true,
22
+ "theta": 10000,
23
+ "vec_in_dim": 768
24
+ }
25
+ }
nodes/models/configs/flux.1-fill-dev.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_class": "Flux",
3
+ "model_config": {
4
+ "axes_dim": [
5
+ 16,
6
+ 56,
7
+ 56
8
+ ],
9
+ "context_in_dim": 4096,
10
+ "depth": 19,
11
+ "depth_single_blocks": 38,
12
+ "disable_unet_model_creation": true,
13
+ "guidance_embed": true,
14
+ "hidden_size": 3072,
15
+ "image_model": "flux",
16
+ "in_channels": 64,
17
+ "mlp_ratio": 4.0,
18
+ "num_heads": 24,
19
+ "out_channels": 16,
20
+ "patch_size": 2,
21
+ "qkv_bias": true,
22
+ "theta": 10000,
23
+ "vec_in_dim": 768
24
+ }
25
+ }
nodes/models/configs/flux.1-schnell.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_class": "FluxSchnell",
3
+ "model_config": {
4
+ "axes_dim": [
5
+ 16,
6
+ 56,
7
+ 56
8
+ ],
9
+ "context_in_dim": 4096,
10
+ "depth": 19,
11
+ "depth_single_blocks": 38,
12
+ "disable_unet_model_creation": true,
13
+ "guidance_embed": false,
14
+ "hidden_size": 3072,
15
+ "image_model": "flux",
16
+ "in_channels": 16,
17
+ "mlp_ratio": 4.0,
18
+ "num_heads": 24,
19
+ "out_channels": 16,
20
+ "patch_size": 2,
21
+ "qkv_bias": true,
22
+ "theta": 10000,
23
+ "vec_in_dim": 768
24
+ }
25
+ }
nodes/models/configs/shuttle-jaguar.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_class": "FluxSchnell",
3
+ "model_config": {
4
+ "axes_dim": [
5
+ 16,
6
+ 56,
7
+ 56
8
+ ],
9
+ "context_in_dim": 4096,
10
+ "depth": 19,
11
+ "depth_single_blocks": 38,
12
+ "guidance_embed": false,
13
+ "hidden_size": 3072,
14
+ "image_model": "flux",
15
+ "in_channels": 16,
16
+ "mlp_ratio": 4.0,
17
+ "num_heads": 24,
18
+ "out_channels": 16,
19
+ "patch_size": 2,
20
+ "qkv_bias": true,
21
+ "theta": 10000,
22
+ "vec_in_dim": 768
23
+ }
24
+ }
nodes/models/flux.py ADDED
@@ -0,0 +1,357 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ import os
3
+ import gc
4
+
5
+ import torch
6
+ from diffusers import FluxPipeline, FluxTransformer2DModel
7
+ from einops import rearrange
8
+ from torch import nn
9
+
10
+ import comfy.model_patcher
11
+ import comfy.model_management
12
+ import folder_paths
13
+ from comfy.ldm.common_dit import pad_to_patch_size
14
+ from comfy.supported_models import Flux, FluxSchnell
15
+ from nunchaku import NunchakuFluxTransformer2dModel
16
+ from nunchaku.caching.diffusers_adapters.flux import apply_cache_on_transformer
17
+ from nunchaku.caching.utils import cache_context, create_cache_context
18
+ from nunchaku.lora.flux.compose import compose_lora
19
+ from nunchaku.utils import is_turing, load_state_dict_in_safetensors
20
+
21
+
22
+ class ComfyFluxWrapper(nn.Module):
23
+ def __init__(self, model: NunchakuFluxTransformer2dModel, config):
24
+ super(ComfyFluxWrapper, self).__init__()
25
+ self.model = model
26
+ self.dtype = next(model.parameters()).dtype
27
+ self.config = config
28
+ self.loras = []
29
+
30
+ self._prev_timestep = None # for first-block cache
31
+ self._cache_context = None
32
+
33
+ def forward(
34
+ self,
35
+ x,
36
+ timestep,
37
+ context,
38
+ y,
39
+ guidance,
40
+ control=None,
41
+ transformer_options={},
42
+ **kwargs,
43
+ ):
44
+ if isinstance(timestep, torch.Tensor):
45
+ if timestep.numel() == 1:
46
+ timestep_float = timestep.item()
47
+ else:
48
+ timestep_float = timestep.flatten()[0].item()
49
+ else:
50
+ assert isinstance(timestep, float)
51
+ timestep_float = timestep
52
+
53
+ model = self.model
54
+ assert isinstance(model, NunchakuFluxTransformer2dModel)
55
+
56
+ bs, c, h, w = x.shape
57
+ patch_size = self.config["patch_size"]
58
+ x = pad_to_patch_size(x, (patch_size, patch_size))
59
+
60
+ img = rearrange(x, "b c (h ph) (w pw) -> b (h w) (c ph pw)", ph=patch_size, pw=patch_size)
61
+
62
+ h_len = (h + (patch_size // 2)) // patch_size
63
+ w_len = (w + (patch_size // 2)) // patch_size
64
+ img_ids = FluxPipeline._prepare_latent_image_ids(bs, h_len, w_len, x.device, x.dtype)
65
+ txt_ids = torch.zeros((context.shape[1], 3), device=x.device, dtype=x.dtype)
66
+
67
+ # load and compose LoRA
68
+ if self.loras != model.comfy_lora_meta_list:
69
+ lora_to_be_composed = []
70
+ for _ in range(max(0, len(model.comfy_lora_meta_list) - len(self.loras))):
71
+ model.comfy_lora_meta_list.pop()
72
+ model.comfy_lora_sd_list.pop()
73
+ for i in range(len(self.loras)):
74
+ meta = self.loras[i]
75
+ if i >= len(model.comfy_lora_meta_list):
76
+ sd = load_state_dict_in_safetensors(meta[0])
77
+ model.comfy_lora_meta_list.append(meta)
78
+ model.comfy_lora_sd_list.append(sd)
79
+ elif model.comfy_lora_meta_list[i] != meta:
80
+ if meta[0] != model.comfy_lora_meta_list[i][0]:
81
+ sd = load_state_dict_in_safetensors(meta[0])
82
+ model.comfy_lora_sd_list[i] = sd
83
+ model.comfy_lora_meta_list[i] = meta
84
+ lora_to_be_composed.append(({k: v for k, v in model.comfy_lora_sd_list[i].items()}, meta[1]))
85
+
86
+ composed_lora = compose_lora(lora_to_be_composed)
87
+
88
+ if len(composed_lora) == 0:
89
+ model.reset_lora()
90
+ else:
91
+ if "x_embedder.lora_A.weight" in composed_lora:
92
+ new_in_channels = composed_lora["x_embedder.lora_A.weight"].shape[1]
93
+ current_in_channels = model.x_embedder.in_features
94
+ if new_in_channels < current_in_channels:
95
+ model.reset_x_embedder()
96
+ model.update_lora_params(composed_lora)
97
+
98
+ controlnet_block_samples = None if control is None else [y.to(x.dtype) for y in control["input"]]
99
+ controlnet_single_block_samples = None if control is None else [y.to(x.dtype) for y in control["output"]]
100
+ if getattr(model, "_is_cached", False):
101
+ if self._prev_timestep is None or self._prev_timestep < timestep_float:
102
+ self._cache_context = create_cache_context()
103
+ with cache_context(self._cache_context):
104
+ out = model(
105
+ hidden_states=img,
106
+ encoder_hidden_states=context,
107
+ pooled_projections=y,
108
+ timestep=timestep,
109
+ img_ids=img_ids,
110
+ txt_ids=txt_ids,
111
+ guidance=guidance if self.config["guidance_embed"] else None,
112
+ controlnet_block_samples=controlnet_block_samples,
113
+ controlnet_single_block_samples=controlnet_single_block_samples,
114
+ ).sample
115
+ else:
116
+ out = model(
117
+ hidden_states=img,
118
+ encoder_hidden_states=context,
119
+ pooled_projections=y,
120
+ timestep=timestep,
121
+ img_ids=img_ids,
122
+ txt_ids=txt_ids,
123
+ guidance=guidance if self.config["guidance_embed"] else None,
124
+ controlnet_block_samples=controlnet_block_samples,
125
+ controlnet_single_block_samples=controlnet_single_block_samples,
126
+ ).sample
127
+
128
+ out = rearrange(
129
+ out,
130
+ "b (h w) (c ph pw) -> b c (h ph) (w pw)",
131
+ h=h_len,
132
+ w=w_len,
133
+ ph=patch_size,
134
+ pw=patch_size,
135
+ )
136
+ out = out[:, :, :h, :w]
137
+
138
+ self._prev_timestep = timestep_float
139
+ return out
140
+
141
+
142
+ class NunchakuFluxDiTLoader:
143
+ def __init__(self):
144
+ self.transformer = None
145
+ self.model_path = None
146
+ self.device = None
147
+ self.cpu_offload = None
148
+ self.cache_threshold = None
149
+ self.data_type = None
150
+ self.patcher = None
151
+ self.device = comfy.model_management.get_torch_device()
152
+
153
+ @classmethod
154
+ def INPUT_TYPES(s):
155
+ prefixes = folder_paths.folder_names_and_paths["diffusion_models"][0]
156
+ local_folders = set()
157
+ for prefix in prefixes:
158
+ if os.path.exists(prefix) and os.path.isdir(prefix):
159
+ local_folders_ = os.listdir(prefix)
160
+ local_folders_ = [
161
+ folder
162
+ for folder in local_folders_
163
+ if not folder.startswith(".") and os.path.isdir(os.path.join(prefix, folder))
164
+ ]
165
+ local_folders.update(local_folders_)
166
+ model_paths = sorted(list(local_folders))
167
+ ngpus = torch.cuda.device_count()
168
+
169
+ all_turing = True
170
+ for i in range(torch.cuda.device_count()):
171
+ if not is_turing(f"cuda:{i}"):
172
+ all_turing = False
173
+
174
+ if all_turing:
175
+ attention_options = ["nunchaku-fp16"] # turing GPUs do not support flashattn2
176
+ dtype_options = ["float16"]
177
+ else:
178
+ attention_options = ["nunchaku-fp16", "flash-attention2"]
179
+ dtype_options = ["bfloat16", "float16"]
180
+
181
+ return {
182
+ "required": {
183
+ "model_path": (
184
+ model_paths,
185
+ {"tooltip": "The SVDQuant quantized FLUX.1 models."},
186
+ ),
187
+ "cache_threshold": (
188
+ "FLOAT",
189
+ {
190
+ "default": 0,
191
+ "min": 0,
192
+ "max": 1,
193
+ "step": 0.001,
194
+ "tooltip": "Adjusts the caching tolerance like `residual_diff_threshold` in WaveSpeed. "
195
+ "Increasing the value enhances speed at the cost of quality. "
196
+ "A typical setting is 0.12. Setting it to 0 disables the effect.",
197
+ },
198
+ ),
199
+ "attention": (
200
+ attention_options,
201
+ {
202
+ "default": attention_options[0],
203
+ "tooltip": "Attention implementation. The default implementation is `flash-attention2`. "
204
+ "`nunchaku-fp16` use FP16 attention, offering ~1.2× speedup. "
205
+ "Note that 20-series GPUs can only use `nunchaku-fp16`.",
206
+ },
207
+ ),
208
+ "cpu_offload": (
209
+ ["auto", "enable", "disable"],
210
+ {
211
+ "default": "auto",
212
+ "tooltip": "Whether to enable CPU offload for the transformer model."
213
+ "auto' will enable it if the GPU memory is less than 14G.",
214
+ },
215
+ ),
216
+ "device_id": (
217
+ "INT",
218
+ {
219
+ "default": 0,
220
+ "min": 0,
221
+ "max": ngpus - 1,
222
+ "step": 1,
223
+ "display": "number",
224
+ "lazy": True,
225
+ "tooltip": "The GPU device ID to use for the model.",
226
+ },
227
+ ),
228
+ "data_type": (
229
+ dtype_options,
230
+ {
231
+ "default": dtype_options[0],
232
+ "tooltip": "Specifies the model's data type. Default is `bfloat16`. "
233
+ "For 20-series GPUs, which do not support `bfloat16`, use `float16` instead.",
234
+ },
235
+ ),
236
+ },
237
+ "optional": {
238
+ "i2f_mode": (
239
+ ["enabled", "always"],
240
+ {
241
+ "default": "enabled",
242
+ "tooltip": "The GEMM implementation for 20-series GPUs"
243
+ "— this option is only applicable to these GPUs.",
244
+ },
245
+ )
246
+ },
247
+ }
248
+
249
+ RETURN_TYPES = ("MODEL",)
250
+ FUNCTION = "load_model"
251
+ CATEGORY = "Nunchaku"
252
+ TITLE = "Nunchaku FLUX DiT Loader"
253
+
254
+ def load_model(
255
+ self,
256
+ model_path: str,
257
+ attention: str,
258
+ cache_threshold: float,
259
+ cpu_offload: str,
260
+ device_id: int,
261
+ data_type: str,
262
+ **kwargs,
263
+ ) -> tuple[FluxTransformer2DModel]:
264
+ device = f"cuda:{device_id}"
265
+ prefixes = folder_paths.folder_names_and_paths["diffusion_models"][0]
266
+ for prefix in prefixes:
267
+ if os.path.exists(os.path.join(prefix, model_path)):
268
+ model_path = os.path.join(prefix, model_path)
269
+ break
270
+
271
+ # Check if the device_id is valid
272
+ if device_id >= torch.cuda.device_count():
273
+ raise ValueError(f"Invalid device_id: {device_id}. Only {torch.cuda.device_count()} GPUs available.")
274
+
275
+ # Get the GPU properties
276
+ gpu_properties = torch.cuda.get_device_properties(device_id)
277
+ gpu_memory = gpu_properties.total_memory / (1024**2) # Convert to MiB
278
+ gpu_name = gpu_properties.name
279
+ print(f"GPU {device_id} ({gpu_name}) Memory: {gpu_memory} MiB")
280
+
281
+ # Check if CPU offload needs to be enabled
282
+ if cpu_offload == "auto":
283
+ if gpu_memory < 14336: # 14GB threshold
284
+ cpu_offload_enabled = True
285
+ print("VRAM < 14GiB,enable CPU offload")
286
+ else:
287
+ cpu_offload_enabled = False
288
+ print("VRAM > 14GiB,disable CPU offload")
289
+ elif cpu_offload == "enable":
290
+ cpu_offload_enabled = True
291
+ print("Enable CPU offload")
292
+ else:
293
+ cpu_offload_enabled = False
294
+ print("Disable CPU offload")
295
+
296
+ if (
297
+ self.model_path != model_path
298
+ or self.device != device
299
+ or self.cpu_offload != cpu_offload_enabled
300
+ or self.cache_threshold != cache_threshold
301
+ or self.data_type != data_type
302
+ ):
303
+ if self.transformer is not None:
304
+ model_size = comfy.model_management.module_size(self.transformer)
305
+ transformer = self.transformer
306
+ self.transformer = None
307
+ transformer.to('cpu')
308
+ del transformer
309
+ gc.collect()
310
+ comfy.model_management.cleanup_models_gc()
311
+ comfy.model_management.soft_empty_cache()
312
+ comfy.model_management.free_memory(model_size, device)
313
+
314
+ self.transformer = NunchakuFluxTransformer2dModel.from_pretrained(
315
+ model_path,
316
+ offload=cpu_offload_enabled,
317
+ device=device,
318
+ torch_dtype=torch.float16 if data_type == "float16" else torch.bfloat16,
319
+ )
320
+ self.transformer = apply_cache_on_transformer(
321
+ transformer=self.transformer, residual_diff_threshold=cache_threshold
322
+ )
323
+ self.model_path = model_path
324
+ self.device = device
325
+ self.cpu_offload = cpu_offload_enabled
326
+ self.cache_threshold = cache_threshold
327
+
328
+ transformer = self.transformer
329
+ if attention == "nunchaku-fp16":
330
+ transformer.set_attention_impl("nunchaku-fp16")
331
+ else:
332
+ assert attention == "flash-attention2"
333
+ transformer.set_attention_impl("flashattn2")
334
+
335
+ if os.path.exists(os.path.join(model_path, "comfy_config.json")):
336
+ config_path = os.path.join(model_path, "comfy_config.json")
337
+ else:
338
+ default_config_root = os.path.join(os.path.dirname(__file__), "configs")
339
+ config_name = os.path.basename(model_path).replace("svdq-int4-", "").replace("svdq-fp4-", "")
340
+ config_path = os.path.join(default_config_root, f"{config_name}.json")
341
+ assert os.path.exists(config_path), f"Config file not found: {config_path}"
342
+
343
+ print(f"Loading configuration from {config_path}")
344
+ comfy_config = json.load(open(config_path, "r"))
345
+ model_class_name = comfy_config["model_class"]
346
+ if model_class_name == "FluxSchnell":
347
+ model_class = FluxSchnell
348
+ else:
349
+ assert model_class_name == "Flux", f"Unknown model class {model_class_name}."
350
+ model_class = Flux
351
+ model_config = model_class(comfy_config["model_config"])
352
+ model_config.set_inference_dtype(torch.bfloat16, None)
353
+ model_config.custom_operations = None
354
+ model = model_config.get_model({})
355
+ model.diffusion_model = ComfyFluxWrapper(transformer, config=comfy_config["model_config"])
356
+ model = comfy.model_patcher.ModelPatcher(model, device, device_id)
357
+ return (model,)
nodes/models/text_encoder.py ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import types
3
+
4
+ import torch
5
+ from torch import nn
6
+ from transformers import T5EncoderModel
7
+
8
+ import comfy.sd
9
+ import folder_paths
10
+ from nunchaku import NunchakuT5EncoderModel
11
+
12
+
13
+ def nunchaku_t5_forward(
14
+ self: T5EncoderModel,
15
+ input_ids: torch.LongTensor,
16
+ attention_mask,
17
+ embeds=None,
18
+ intermediate_output=None,
19
+ final_layer_norm_intermediate=True,
20
+ dtype: str | torch.dtype = torch.bfloat16,
21
+ **kwargs,
22
+ ):
23
+ assert attention_mask is None
24
+ assert intermediate_output is None
25
+ assert final_layer_norm_intermediate
26
+ outputs = self.encoder(input_ids=input_ids, inputs_embeds=embeds, attention_mask=attention_mask)
27
+ hidden_states = outputs["last_hidden_state"]
28
+ hidden_states = hidden_states.to(dtype=dtype)
29
+ return hidden_states, None
30
+
31
+
32
+ class WrappedEmbedding(nn.Module):
33
+ def __init__(self, embedding: nn.Embedding):
34
+ super().__init__()
35
+ self.embedding = embedding
36
+
37
+ def forward(self, input: torch.Tensor, out_dtype: torch.dtype | None = None):
38
+ return self.embedding(input)
39
+
40
+ @property
41
+ def weight(self):
42
+ return self.embedding.weight
43
+
44
+
45
+ class NunchakuTextEncoderLoader:
46
+ @classmethod
47
+ def INPUT_TYPES(s):
48
+ prefixes = folder_paths.folder_names_and_paths["text_encoders"][0]
49
+ local_folders = set()
50
+ for prefix in prefixes:
51
+ if os.path.exists(prefix) and os.path.isdir(prefix):
52
+ local_folders_ = os.listdir(prefix)
53
+ local_folders_ = [
54
+ folder
55
+ for folder in local_folders_
56
+ if not folder.startswith(".") and os.path.isdir(os.path.join(prefix, folder))
57
+ ]
58
+ local_folders.update(local_folders_)
59
+ model_paths = ["none"] + sorted(list(local_folders))
60
+ return {
61
+ "required": {
62
+ "model_type": (["flux"],),
63
+ "text_encoder1": (folder_paths.get_filename_list("text_encoders"),),
64
+ "text_encoder2": (folder_paths.get_filename_list("text_encoders"),),
65
+ "t5_min_length": (
66
+ "INT",
67
+ {
68
+ "default": 512,
69
+ "min": 256,
70
+ "max": 1024,
71
+ "step": 128,
72
+ "display": "number",
73
+ "lazy": True,
74
+ },
75
+ ),
76
+ "use_4bit_t5": (["disable", "enable"],),
77
+ "int4_model": (
78
+ model_paths,
79
+ {"tooltip": "The name of the 4-bit T5 model."},
80
+ ),
81
+ }
82
+ }
83
+
84
+ RETURN_TYPES = ("CLIP",)
85
+ FUNCTION = "load_text_encoder"
86
+
87
+ CATEGORY = "Nunchaku"
88
+
89
+ TITLE = "Nunchaku Text Encoder Loader"
90
+
91
+ def load_text_encoder(
92
+ self,
93
+ model_type: str,
94
+ text_encoder1: str,
95
+ text_encoder2: str,
96
+ t5_min_length: int,
97
+ use_4bit_t5: str,
98
+ int4_model: str,
99
+ ):
100
+ text_encoder_path1 = folder_paths.get_full_path_or_raise("text_encoders", text_encoder1)
101
+ text_encoder_path2 = folder_paths.get_full_path_or_raise("text_encoders", text_encoder2)
102
+ if model_type == "flux":
103
+ clip_type = comfy.sd.CLIPType.FLUX
104
+ else:
105
+ raise ValueError(f"Unknown type {model_type}")
106
+
107
+ clip = comfy.sd.load_clip(
108
+ ckpt_paths=[text_encoder_path1, text_encoder_path2],
109
+ embedding_directory=folder_paths.get_folder_paths("embeddings"),
110
+ clip_type=clip_type,
111
+ )
112
+
113
+ if model_type == "flux":
114
+ clip.tokenizer.t5xxl.min_length = t5_min_length
115
+
116
+ if use_4bit_t5 == "enable":
117
+ assert int4_model != "none", "Please select a 4-bit T5 model."
118
+ transformer = clip.cond_stage_model.t5xxl.transformer
119
+ param = next(transformer.parameters())
120
+ dtype = param.dtype
121
+ device = param.device
122
+
123
+ prefixes = folder_paths.folder_names_and_paths["text_encoders"][0]
124
+ model_path = None
125
+ for prefix in prefixes:
126
+ if os.path.exists(os.path.join(prefix, int4_model)):
127
+ model_path = os.path.join(prefix, int4_model)
128
+ break
129
+ if model_path is None:
130
+ model_path = int4_model
131
+ transformer = NunchakuT5EncoderModel.from_pretrained(model_path)
132
+ transformer.forward = types.MethodType(nunchaku_t5_forward, transformer)
133
+ transformer.shared = WrappedEmbedding(transformer.shared)
134
+
135
+ clip.cond_stage_model.t5xxl.transformer = (
136
+ transformer.to(device=device, dtype=dtype) if device.type == "cuda" else transformer
137
+ )
138
+
139
+ return (clip,)
nodes/preprocessors/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ from .depth import FluxDepthPreprocessor
nodes/preprocessors/depth.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
+ import folder_paths
4
+ import numpy as np
5
+ import torch
6
+
7
+
8
+ class FluxDepthPreprocessor:
9
+ @classmethod
10
+ def INPUT_TYPES(s):
11
+ model_paths = []
12
+ prefix = os.path.join(folder_paths.models_dir, "checkpoints")
13
+ local_folders = os.listdir(prefix)
14
+ local_folders = sorted(
15
+ [
16
+ folder
17
+ for folder in local_folders
18
+ if not folder.startswith(".") and os.path.isdir(os.path.join(prefix, folder))
19
+ ]
20
+ )
21
+ model_paths = local_folders + model_paths
22
+ return {
23
+ "required": {
24
+ "image": ("IMAGE", {}),
25
+ "model_path": (
26
+ model_paths,
27
+ {"tooltip": "Name of the depth preprocessor model."},
28
+ ),
29
+ }
30
+ }
31
+
32
+ RETURN_TYPES = ("IMAGE",)
33
+ FUNCTION = "depth_preprocess"
34
+ CATEGORY = "Nunchaku"
35
+ TITLE = "FLUX.1 Depth Preprocessor"
36
+
37
+ def depth_preprocess(self, image, model_path):
38
+ prefixes = folder_paths.folder_names_and_paths["checkpoints"][0]
39
+ for prefix in prefixes:
40
+ if os.path.exists(os.path.join(prefix, model_path)):
41
+ model_path = os.path.join(prefix, model_path)
42
+ break
43
+ from image_gen_aux import DepthPreprocessor
44
+
45
+ processor = DepthPreprocessor.from_pretrained(model_path)
46
+ np_image = np.asarray(image)
47
+ np_result = np.array(processor(np_image)[0].convert("RGB"))
48
+ out_tensor = torch.from_numpy(np_result.astype(np.float32) / 255.0).unsqueeze(0)
49
+ return (out_tensor,)
pyproject.toml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "ComfyUI-nunchaku"
3
+ description = "Nunchaku ComfyUI Node. Nunchaku is the inference that supports SVDQuant. SVDQuant is a new post-training training quantization paradigm for diffusion models, which quantize both the weights and activations of FLUX.1 to 4 bits, achieving 3.5× memory and 8.7× latency reduction on a 16GB laptop 4090 GPU. See more details: https://github.com/mit-han-lab/nunchaku"
4
+ version = "0.2.0"
5
+ license = { file = "LICENSE.txt" }
6
+ dependencies = []
7
+ requires-python = ">=3.10, <3.13"
8
+
9
+ [tool.ruff]
10
+ line-length = 120
11
+
12
+ [tool.ruff.lint]
13
+ select = ["E", "W", "F"]
14
+ ignore = ["F401"]
15
+
16
+ [project.urls]
17
+ Repository = "https://github.com/mit-han-lab/ComfyUI-nunchaku"
18
+ # Used by Comfy Registry https://comfyregistry.org
19
+
20
+ [tool.comfy]
21
+ PublisherId = "lmxyy1999"
22
+ DisplayName = "ComfyUI-nunchaku"
23
+ Icon = "https://raw.githubusercontent.com/mit-han-lab/nunchaku/96615bd93a1f0d2cf98039fddecfec43ce34cc96/assets/nunchaku.svg"
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ GPUtil
2
+ diffusers>=0.32.2
3
+ accelerate
4
+ sentencepiece
5
+ protobuf
6
+ huggingface_hub
workflows/nunchaku-flux.1-canny-lora.json ADDED
@@ -0,0 +1,880 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "b2ac78a1-9f70-4787-baf7-9703dc66e15e",
3
+ "revision": 0,
4
+ "last_node_id": 43,
5
+ "last_link_id": 84,
6
+ "nodes": [
7
+ {
8
+ "id": 38,
9
+ "type": "ImageScale",
10
+ "pos": [
11
+ 379.69903564453125,
12
+ 565.2651977539062
13
+ ],
14
+ "size": [
15
+ 315,
16
+ 130
17
+ ],
18
+ "flags": {},
19
+ "order": 6,
20
+ "mode": 0,
21
+ "inputs": [
22
+ {
23
+ "localized_name": "image",
24
+ "name": "image",
25
+ "type": "IMAGE",
26
+ "link": 75
27
+ }
28
+ ],
29
+ "outputs": [
30
+ {
31
+ "localized_name": "IMAGE",
32
+ "name": "IMAGE",
33
+ "type": "IMAGE",
34
+ "slot_index": 0,
35
+ "links": [
36
+ 76
37
+ ]
38
+ }
39
+ ],
40
+ "properties": {
41
+ "cnr_id": "comfy-core",
42
+ "ver": "0.3.24",
43
+ "Node name for S&R": "ImageScale"
44
+ },
45
+ "widgets_values": [
46
+ "nearest-exact",
47
+ 1024,
48
+ 1024,
49
+ "center"
50
+ ]
51
+ },
52
+ {
53
+ "id": 35,
54
+ "type": "InstructPixToPixConditioning",
55
+ "pos": [
56
+ 1031.3619384765625,
57
+ 153.57142639160156
58
+ ],
59
+ "size": [
60
+ 235.1999969482422,
61
+ 86
62
+ ],
63
+ "flags": {},
64
+ "order": 11,
65
+ "mode": 0,
66
+ "inputs": [
67
+ {
68
+ "label": "positive",
69
+ "localized_name": "positive",
70
+ "name": "positive",
71
+ "type": "CONDITIONING",
72
+ "link": 67
73
+ },
74
+ {
75
+ "label": "negative",
76
+ "localized_name": "negative",
77
+ "name": "negative",
78
+ "type": "CONDITIONING",
79
+ "link": 68
80
+ },
81
+ {
82
+ "label": "vae",
83
+ "localized_name": "vae",
84
+ "name": "vae",
85
+ "type": "VAE",
86
+ "link": 69
87
+ },
88
+ {
89
+ "label": "pixels",
90
+ "localized_name": "pixels",
91
+ "name": "pixels",
92
+ "type": "IMAGE",
93
+ "link": 70
94
+ }
95
+ ],
96
+ "outputs": [
97
+ {
98
+ "label": "positive",
99
+ "localized_name": "positive",
100
+ "name": "positive",
101
+ "type": "CONDITIONING",
102
+ "slot_index": 0,
103
+ "links": [
104
+ 64
105
+ ]
106
+ },
107
+ {
108
+ "label": "negative",
109
+ "localized_name": "negative",
110
+ "name": "negative",
111
+ "type": "CONDITIONING",
112
+ "slot_index": 1,
113
+ "links": [
114
+ 65
115
+ ]
116
+ },
117
+ {
118
+ "label": "latent",
119
+ "localized_name": "latent",
120
+ "name": "latent",
121
+ "type": "LATENT",
122
+ "slot_index": 2,
123
+ "links": [
124
+ 66
125
+ ]
126
+ }
127
+ ],
128
+ "properties": {
129
+ "cnr_id": "comfy-core",
130
+ "ver": "0.3.24",
131
+ "Node name for S&R": "InstructPixToPixConditioning"
132
+ },
133
+ "widgets_values": []
134
+ },
135
+ {
136
+ "id": 18,
137
+ "type": "Canny",
138
+ "pos": [
139
+ 744.2684936523438,
140
+ 566.853515625
141
+ ],
142
+ "size": [
143
+ 315,
144
+ 82
145
+ ],
146
+ "flags": {},
147
+ "order": 9,
148
+ "mode": 0,
149
+ "inputs": [
150
+ {
151
+ "label": "image",
152
+ "localized_name": "image",
153
+ "name": "image",
154
+ "type": "IMAGE",
155
+ "link": 76
156
+ }
157
+ ],
158
+ "outputs": [
159
+ {
160
+ "label": "IMAGE",
161
+ "localized_name": "IMAGE",
162
+ "name": "IMAGE",
163
+ "shape": 3,
164
+ "type": "IMAGE",
165
+ "slot_index": 0,
166
+ "links": [
167
+ 26,
168
+ 70
169
+ ]
170
+ }
171
+ ],
172
+ "properties": {
173
+ "cnr_id": "comfy-core",
174
+ "ver": "0.3.24",
175
+ "Node name for S&R": "Canny"
176
+ },
177
+ "widgets_values": [
178
+ 0.15,
179
+ 0.3
180
+ ]
181
+ },
182
+ {
183
+ "id": 32,
184
+ "type": "VAELoader",
185
+ "pos": [
186
+ 1071.1641845703125,
187
+ 376.27001953125
188
+ ],
189
+ "size": [
190
+ 315,
191
+ 58
192
+ ],
193
+ "flags": {},
194
+ "order": 0,
195
+ "mode": 0,
196
+ "inputs": [],
197
+ "outputs": [
198
+ {
199
+ "label": "VAE",
200
+ "localized_name": "VAE",
201
+ "name": "VAE",
202
+ "type": "VAE",
203
+ "slot_index": 0,
204
+ "links": [
205
+ 60,
206
+ 69
207
+ ]
208
+ }
209
+ ],
210
+ "properties": {
211
+ "cnr_id": "comfy-core",
212
+ "ver": "0.3.24",
213
+ "Node name for S&R": "VAELoader"
214
+ },
215
+ "widgets_values": [
216
+ "ae.safetensors"
217
+ ]
218
+ },
219
+ {
220
+ "id": 8,
221
+ "type": "VAEDecode",
222
+ "pos": [
223
+ 1498.102294921875,
224
+ 368.63604736328125
225
+ ],
226
+ "size": [
227
+ 210,
228
+ 46
229
+ ],
230
+ "flags": {},
231
+ "order": 13,
232
+ "mode": 0,
233
+ "inputs": [
234
+ {
235
+ "label": "samples",
236
+ "localized_name": "samples",
237
+ "name": "samples",
238
+ "type": "LATENT",
239
+ "link": 7
240
+ },
241
+ {
242
+ "label": "vae",
243
+ "localized_name": "vae",
244
+ "name": "vae",
245
+ "type": "VAE",
246
+ "link": 60
247
+ }
248
+ ],
249
+ "outputs": [
250
+ {
251
+ "label": "IMAGE",
252
+ "localized_name": "IMAGE",
253
+ "name": "IMAGE",
254
+ "type": "IMAGE",
255
+ "slot_index": 0,
256
+ "links": [
257
+ 9
258
+ ]
259
+ }
260
+ ],
261
+ "properties": {
262
+ "cnr_id": "comfy-core",
263
+ "ver": "0.3.24",
264
+ "Node name for S&R": "VAEDecode"
265
+ },
266
+ "widgets_values": []
267
+ },
268
+ {
269
+ "id": 9,
270
+ "type": "SaveImage",
271
+ "pos": [
272
+ 1738.742919921875,
273
+ 57.38672637939453
274
+ ],
275
+ "size": [
276
+ 828.9535522460938,
277
+ 893.8475341796875
278
+ ],
279
+ "flags": {},
280
+ "order": 14,
281
+ "mode": 0,
282
+ "inputs": [
283
+ {
284
+ "label": "images",
285
+ "localized_name": "images",
286
+ "name": "images",
287
+ "type": "IMAGE",
288
+ "link": 9
289
+ }
290
+ ],
291
+ "outputs": [],
292
+ "properties": {
293
+ "cnr_id": "comfy-core",
294
+ "ver": "0.3.24"
295
+ },
296
+ "widgets_values": [
297
+ "ComfyUI",
298
+ ""
299
+ ]
300
+ },
301
+ {
302
+ "id": 26,
303
+ "type": "FluxGuidance",
304
+ "pos": [
305
+ 899.2306518554688,
306
+ 8.470590591430664
307
+ ],
308
+ "size": [
309
+ 317.4000244140625,
310
+ 58
311
+ ],
312
+ "flags": {},
313
+ "order": 8,
314
+ "mode": 0,
315
+ "inputs": [
316
+ {
317
+ "label": "conditioning",
318
+ "localized_name": "conditioning",
319
+ "name": "conditioning",
320
+ "type": "CONDITIONING",
321
+ "link": 41
322
+ }
323
+ ],
324
+ "outputs": [
325
+ {
326
+ "label": "CONDITIONING",
327
+ "localized_name": "CONDITIONING",
328
+ "name": "CONDITIONING",
329
+ "shape": 3,
330
+ "type": "CONDITIONING",
331
+ "slot_index": 0,
332
+ "links": [
333
+ 67
334
+ ]
335
+ }
336
+ ],
337
+ "properties": {
338
+ "cnr_id": "comfy-core",
339
+ "ver": "0.3.24",
340
+ "Node name for S&R": "FluxGuidance"
341
+ },
342
+ "widgets_values": [
343
+ 30
344
+ ]
345
+ },
346
+ {
347
+ "id": 7,
348
+ "type": "CLIPTextEncode",
349
+ "pos": [
350
+ 531.693359375,
351
+ 458.5068054199219
352
+ ],
353
+ "size": [
354
+ 425.27801513671875,
355
+ 180.6060791015625
356
+ ],
357
+ "flags": {
358
+ "collapsed": true
359
+ },
360
+ "order": 5,
361
+ "mode": 0,
362
+ "inputs": [
363
+ {
364
+ "label": "clip",
365
+ "localized_name": "clip",
366
+ "name": "clip",
367
+ "type": "CLIP",
368
+ "link": 63
369
+ }
370
+ ],
371
+ "outputs": [
372
+ {
373
+ "label": "CONDITIONING",
374
+ "localized_name": "CONDITIONING",
375
+ "name": "CONDITIONING",
376
+ "type": "CONDITIONING",
377
+ "slot_index": 0,
378
+ "links": [
379
+ 68
380
+ ]
381
+ }
382
+ ],
383
+ "title": "CLIP Text Encode (Negative Prompt)",
384
+ "properties": {
385
+ "cnr_id": "comfy-core",
386
+ "ver": "0.3.24",
387
+ "Node name for S&R": "CLIPTextEncode"
388
+ },
389
+ "widgets_values": [
390
+ ""
391
+ ],
392
+ "color": "#322",
393
+ "bgcolor": "#533"
394
+ },
395
+ {
396
+ "id": 34,
397
+ "type": "DualCLIPLoader",
398
+ "pos": [
399
+ 490.4931640625,
400
+ 251.2148895263672
401
+ ],
402
+ "size": [
403
+ 315,
404
+ 122
405
+ ],
406
+ "flags": {},
407
+ "order": 1,
408
+ "mode": 0,
409
+ "inputs": [],
410
+ "outputs": [
411
+ {
412
+ "label": "CLIP",
413
+ "localized_name": "CLIP",
414
+ "name": "CLIP",
415
+ "type": "CLIP",
416
+ "links": [
417
+ 62,
418
+ 63
419
+ ]
420
+ }
421
+ ],
422
+ "properties": {
423
+ "cnr_id": "comfy-core",
424
+ "ver": "0.3.24",
425
+ "Node name for S&R": "DualCLIPLoader"
426
+ },
427
+ "widgets_values": [
428
+ "clip_l.safetensors",
429
+ "t5xxl_fp16.safetensors",
430
+ "flux",
431
+ "default"
432
+ ]
433
+ },
434
+ {
435
+ "id": 3,
436
+ "type": "KSampler",
437
+ "pos": [
438
+ 1340.538818359375,
439
+ -73.13742065429688
440
+ ],
441
+ "size": [
442
+ 315,
443
+ 262
444
+ ],
445
+ "flags": {},
446
+ "order": 12,
447
+ "mode": 0,
448
+ "inputs": [
449
+ {
450
+ "label": "model",
451
+ "localized_name": "model",
452
+ "name": "model",
453
+ "type": "MODEL",
454
+ "link": 84
455
+ },
456
+ {
457
+ "label": "positive",
458
+ "localized_name": "positive",
459
+ "name": "positive",
460
+ "type": "CONDITIONING",
461
+ "link": 64
462
+ },
463
+ {
464
+ "label": "negative",
465
+ "localized_name": "negative",
466
+ "name": "negative",
467
+ "type": "CONDITIONING",
468
+ "link": 65
469
+ },
470
+ {
471
+ "label": "latent_image",
472
+ "localized_name": "latent_image",
473
+ "name": "latent_image",
474
+ "type": "LATENT",
475
+ "link": 66
476
+ }
477
+ ],
478
+ "outputs": [
479
+ {
480
+ "label": "LATENT",
481
+ "localized_name": "LATENT",
482
+ "name": "LATENT",
483
+ "type": "LATENT",
484
+ "slot_index": 0,
485
+ "links": [
486
+ 7
487
+ ]
488
+ }
489
+ ],
490
+ "properties": {
491
+ "cnr_id": "comfy-core",
492
+ "ver": "0.3.24",
493
+ "Node name for S&R": "KSampler"
494
+ },
495
+ "widgets_values": [
496
+ 107906103108925,
497
+ "randomize",
498
+ 20,
499
+ 1,
500
+ "euler",
501
+ "normal",
502
+ 1
503
+ ]
504
+ },
505
+ {
506
+ "id": 17,
507
+ "type": "LoadImage",
508
+ "pos": [
509
+ 6.694743633270264,
510
+ 562.3865966796875
511
+ ],
512
+ "size": [
513
+ 315,
514
+ 314.0000305175781
515
+ ],
516
+ "flags": {},
517
+ "order": 2,
518
+ "mode": 0,
519
+ "inputs": [],
520
+ "outputs": [
521
+ {
522
+ "label": "IMAGE",
523
+ "localized_name": "IMAGE",
524
+ "name": "IMAGE",
525
+ "shape": 3,
526
+ "type": "IMAGE",
527
+ "slot_index": 0,
528
+ "links": [
529
+ 75
530
+ ]
531
+ },
532
+ {
533
+ "label": "MASK",
534
+ "localized_name": "MASK",
535
+ "name": "MASK",
536
+ "shape": 3,
537
+ "type": "MASK",
538
+ "links": null
539
+ }
540
+ ],
541
+ "properties": {
542
+ "cnr_id": "comfy-core",
543
+ "ver": "0.3.24",
544
+ "Node name for S&R": "LoadImage"
545
+ },
546
+ "widgets_values": [
547
+ "robot.png",
548
+ "image",
549
+ ""
550
+ ]
551
+ },
552
+ {
553
+ "id": 19,
554
+ "type": "PreviewImage",
555
+ "pos": [
556
+ 1149.2786865234375,
557
+ 565.11669921875
558
+ ],
559
+ "size": [
560
+ 439.3782653808594,
561
+ 481.0416259765625
562
+ ],
563
+ "flags": {},
564
+ "order": 10,
565
+ "mode": 0,
566
+ "inputs": [
567
+ {
568
+ "label": "images",
569
+ "localized_name": "images",
570
+ "name": "images",
571
+ "type": "IMAGE",
572
+ "link": 26
573
+ }
574
+ ],
575
+ "outputs": [],
576
+ "properties": {
577
+ "cnr_id": "comfy-core",
578
+ "ver": "0.3.24",
579
+ "Node name for S&R": "PreviewImage"
580
+ },
581
+ "widgets_values": [
582
+ ""
583
+ ]
584
+ },
585
+ {
586
+ "id": 23,
587
+ "type": "CLIPTextEncode",
588
+ "pos": [
589
+ 442.4932861328125,
590
+ 14.832307815551758
591
+ ],
592
+ "size": [
593
+ 422.84503173828125,
594
+ 164.31304931640625
595
+ ],
596
+ "flags": {},
597
+ "order": 4,
598
+ "mode": 0,
599
+ "inputs": [
600
+ {
601
+ "label": "clip",
602
+ "localized_name": "clip",
603
+ "name": "clip",
604
+ "type": "CLIP",
605
+ "link": 62
606
+ }
607
+ ],
608
+ "outputs": [
609
+ {
610
+ "label": "CONDITIONING",
611
+ "localized_name": "CONDITIONING",
612
+ "name": "CONDITIONING",
613
+ "type": "CONDITIONING",
614
+ "slot_index": 0,
615
+ "links": [
616
+ 41
617
+ ]
618
+ }
619
+ ],
620
+ "title": "CLIP Text Encode (Positive Prompt)",
621
+ "properties": {
622
+ "cnr_id": "comfy-core",
623
+ "ver": "0.3.24",
624
+ "Node name for S&R": "CLIPTextEncode"
625
+ },
626
+ "widgets_values": [
627
+ "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts, yarn art style"
628
+ ],
629
+ "color": "#232",
630
+ "bgcolor": "#353"
631
+ },
632
+ {
633
+ "id": 42,
634
+ "type": "NunchakuFluxDiTLoader",
635
+ "pos": [
636
+ 78.86559295654297,
637
+ -122.51927185058594
638
+ ],
639
+ "size": [
640
+ 315,
641
+ 202
642
+ ],
643
+ "flags": {},
644
+ "order": 3,
645
+ "mode": 0,
646
+ "inputs": [],
647
+ "outputs": [
648
+ {
649
+ "localized_name": "MODEL",
650
+ "name": "MODEL",
651
+ "type": "MODEL",
652
+ "links": [
653
+ 83
654
+ ]
655
+ }
656
+ ],
657
+ "properties": {
658
+ "Node name for S&R": "NunchakuFluxDiTLoader"
659
+ },
660
+ "widgets_values": [
661
+ "svdq-int4-flux.1-dev",
662
+ 0,
663
+ "nunchaku-fp16",
664
+ "auto",
665
+ 0,
666
+ "bfloat16",
667
+ "enabled"
668
+ ]
669
+ },
670
+ {
671
+ "id": 43,
672
+ "type": "NunchakuFluxLoraLoader",
673
+ "pos": [
674
+ 538.5196533203125,
675
+ -115.99840545654297
676
+ ],
677
+ "size": [
678
+ 340.20001220703125,
679
+ 82
680
+ ],
681
+ "flags": {},
682
+ "order": 7,
683
+ "mode": 0,
684
+ "inputs": [
685
+ {
686
+ "localized_name": "model",
687
+ "name": "model",
688
+ "type": "MODEL",
689
+ "link": 83
690
+ }
691
+ ],
692
+ "outputs": [
693
+ {
694
+ "localized_name": "MODEL",
695
+ "name": "MODEL",
696
+ "type": "MODEL",
697
+ "links": [
698
+ 84
699
+ ]
700
+ }
701
+ ],
702
+ "properties": {
703
+ "Node name for S&R": "NunchakuFluxLoraLoader"
704
+ },
705
+ "widgets_values": [
706
+ "canny.safetensors",
707
+ 0.8500000000000002
708
+ ]
709
+ }
710
+ ],
711
+ "links": [
712
+ [
713
+ 7,
714
+ 3,
715
+ 0,
716
+ 8,
717
+ 0,
718
+ "LATENT"
719
+ ],
720
+ [
721
+ 9,
722
+ 8,
723
+ 0,
724
+ 9,
725
+ 0,
726
+ "IMAGE"
727
+ ],
728
+ [
729
+ 26,
730
+ 18,
731
+ 0,
732
+ 19,
733
+ 0,
734
+ "IMAGE"
735
+ ],
736
+ [
737
+ 41,
738
+ 23,
739
+ 0,
740
+ 26,
741
+ 0,
742
+ "CONDITIONING"
743
+ ],
744
+ [
745
+ 60,
746
+ 32,
747
+ 0,
748
+ 8,
749
+ 1,
750
+ "VAE"
751
+ ],
752
+ [
753
+ 62,
754
+ 34,
755
+ 0,
756
+ 23,
757
+ 0,
758
+ "CLIP"
759
+ ],
760
+ [
761
+ 63,
762
+ 34,
763
+ 0,
764
+ 7,
765
+ 0,
766
+ "CLIP"
767
+ ],
768
+ [
769
+ 64,
770
+ 35,
771
+ 0,
772
+ 3,
773
+ 1,
774
+ "CONDITIONING"
775
+ ],
776
+ [
777
+ 65,
778
+ 35,
779
+ 1,
780
+ 3,
781
+ 2,
782
+ "CONDITIONING"
783
+ ],
784
+ [
785
+ 66,
786
+ 35,
787
+ 2,
788
+ 3,
789
+ 3,
790
+ "LATENT"
791
+ ],
792
+ [
793
+ 67,
794
+ 26,
795
+ 0,
796
+ 35,
797
+ 0,
798
+ "CONDITIONING"
799
+ ],
800
+ [
801
+ 68,
802
+ 7,
803
+ 0,
804
+ 35,
805
+ 1,
806
+ "CONDITIONING"
807
+ ],
808
+ [
809
+ 69,
810
+ 32,
811
+ 0,
812
+ 35,
813
+ 2,
814
+ "VAE"
815
+ ],
816
+ [
817
+ 70,
818
+ 18,
819
+ 0,
820
+ 35,
821
+ 3,
822
+ "IMAGE"
823
+ ],
824
+ [
825
+ 75,
826
+ 17,
827
+ 0,
828
+ 38,
829
+ 0,
830
+ "IMAGE"
831
+ ],
832
+ [
833
+ 76,
834
+ 38,
835
+ 0,
836
+ 18,
837
+ 0,
838
+ "IMAGE"
839
+ ],
840
+ [
841
+ 78,
842
+ 36,
843
+ 0,
844
+ 40,
845
+ 0,
846
+ "MODEL"
847
+ ],
848
+ [
849
+ 83,
850
+ 42,
851
+ 0,
852
+ 43,
853
+ 0,
854
+ "MODEL"
855
+ ],
856
+ [
857
+ 84,
858
+ 43,
859
+ 0,
860
+ 3,
861
+ 0,
862
+ "MODEL"
863
+ ]
864
+ ],
865
+ "groups": [],
866
+ "config": {},
867
+ "extra": {
868
+ "ds": {
869
+ "scale": 0.8140274938684117,
870
+ "offset": [
871
+ 633.2890855809035,
872
+ 313.51162384315967
873
+ ]
874
+ },
875
+ "node_versions": {
876
+ "comfy-core": "0.3.24"
877
+ }
878
+ },
879
+ "version": 0.4
880
+ }
workflows/nunchaku-flux.1-canny.json ADDED
@@ -0,0 +1,825 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "b2ac78a1-9f70-4787-baf7-9703dc66e15e",
3
+ "revision": 0,
4
+ "last_node_id": 39,
5
+ "last_link_id": 77,
6
+ "nodes": [
7
+ {
8
+ "id": 9,
9
+ "type": "SaveImage",
10
+ "pos": [
11
+ 1850,
12
+ 40
13
+ ],
14
+ "size": [
15
+ 828.9535522460938,
16
+ 893.8475341796875
17
+ ],
18
+ "flags": {},
19
+ "order": 13,
20
+ "mode": 0,
21
+ "inputs": [
22
+ {
23
+ "label": "images",
24
+ "localized_name": "images",
25
+ "name": "images",
26
+ "type": "IMAGE",
27
+ "link": 9
28
+ }
29
+ ],
30
+ "outputs": [],
31
+ "properties": {
32
+ "cnr_id": "comfy-core",
33
+ "ver": "0.3.24"
34
+ },
35
+ "widgets_values": [
36
+ "ComfyUI",
37
+ ""
38
+ ]
39
+ },
40
+ {
41
+ "id": 32,
42
+ "type": "VAELoader",
43
+ "pos": [
44
+ 1290,
45
+ 350
46
+ ],
47
+ "size": [
48
+ 315,
49
+ 58
50
+ ],
51
+ "flags": {},
52
+ "order": 0,
53
+ "mode": 0,
54
+ "inputs": [],
55
+ "outputs": [
56
+ {
57
+ "label": "VAE",
58
+ "localized_name": "VAE",
59
+ "name": "VAE",
60
+ "type": "VAE",
61
+ "slot_index": 0,
62
+ "links": [
63
+ 60,
64
+ 69
65
+ ]
66
+ }
67
+ ],
68
+ "properties": {
69
+ "cnr_id": "comfy-core",
70
+ "ver": "0.3.24",
71
+ "Node name for S&R": "VAELoader"
72
+ },
73
+ "widgets_values": [
74
+ "ae.safetensors"
75
+ ]
76
+ },
77
+ {
78
+ "id": 18,
79
+ "type": "Canny",
80
+ "pos": [
81
+ 744.2684936523438,
82
+ 566.853515625
83
+ ],
84
+ "size": [
85
+ 315,
86
+ 82
87
+ ],
88
+ "flags": {},
89
+ "order": 8,
90
+ "mode": 0,
91
+ "inputs": [
92
+ {
93
+ "label": "image",
94
+ "localized_name": "image",
95
+ "name": "image",
96
+ "type": "IMAGE",
97
+ "link": 76
98
+ }
99
+ ],
100
+ "outputs": [
101
+ {
102
+ "label": "IMAGE",
103
+ "localized_name": "IMAGE",
104
+ "name": "IMAGE",
105
+ "shape": 3,
106
+ "type": "IMAGE",
107
+ "slot_index": 0,
108
+ "links": [
109
+ 26,
110
+ 70
111
+ ]
112
+ }
113
+ ],
114
+ "properties": {
115
+ "cnr_id": "comfy-core",
116
+ "ver": "0.3.24",
117
+ "Node name for S&R": "Canny"
118
+ },
119
+ "widgets_values": [
120
+ 0.15,
121
+ 0.3
122
+ ]
123
+ },
124
+ {
125
+ "id": 38,
126
+ "type": "ImageScale",
127
+ "pos": [
128
+ 379.69903564453125,
129
+ 565.2651977539062
130
+ ],
131
+ "size": [
132
+ 315,
133
+ 130
134
+ ],
135
+ "flags": {},
136
+ "order": 6,
137
+ "mode": 0,
138
+ "inputs": [
139
+ {
140
+ "localized_name": "image",
141
+ "name": "image",
142
+ "type": "IMAGE",
143
+ "link": 75
144
+ }
145
+ ],
146
+ "outputs": [
147
+ {
148
+ "localized_name": "IMAGE",
149
+ "name": "IMAGE",
150
+ "type": "IMAGE",
151
+ "slot_index": 0,
152
+ "links": [
153
+ 76
154
+ ]
155
+ }
156
+ ],
157
+ "properties": {
158
+ "cnr_id": "comfy-core",
159
+ "ver": "0.3.24",
160
+ "Node name for S&R": "ImageScale"
161
+ },
162
+ "widgets_values": [
163
+ "nearest-exact",
164
+ 1024,
165
+ 1024,
166
+ "center"
167
+ ]
168
+ },
169
+ {
170
+ "id": 26,
171
+ "type": "FluxGuidance",
172
+ "pos": [
173
+ 680.8111572265625,
174
+ 112.23383331298828
175
+ ],
176
+ "size": [
177
+ 317.4000244140625,
178
+ 58
179
+ ],
180
+ "flags": {},
181
+ "order": 7,
182
+ "mode": 0,
183
+ "inputs": [
184
+ {
185
+ "label": "conditioning",
186
+ "localized_name": "conditioning",
187
+ "name": "conditioning",
188
+ "type": "CONDITIONING",
189
+ "link": 41
190
+ }
191
+ ],
192
+ "outputs": [
193
+ {
194
+ "label": "CONDITIONING",
195
+ "localized_name": "CONDITIONING",
196
+ "name": "CONDITIONING",
197
+ "shape": 3,
198
+ "type": "CONDITIONING",
199
+ "slot_index": 0,
200
+ "links": [
201
+ 67
202
+ ]
203
+ }
204
+ ],
205
+ "properties": {
206
+ "cnr_id": "comfy-core",
207
+ "ver": "0.3.24",
208
+ "Node name for S&R": "FluxGuidance"
209
+ },
210
+ "widgets_values": [
211
+ 30
212
+ ]
213
+ },
214
+ {
215
+ "id": 23,
216
+ "type": "CLIPTextEncode",
217
+ "pos": [
218
+ 244.5854949951172,
219
+ 81.77906036376953
220
+ ],
221
+ "size": [
222
+ 422.84503173828125,
223
+ 164.31304931640625
224
+ ],
225
+ "flags": {},
226
+ "order": 4,
227
+ "mode": 0,
228
+ "inputs": [
229
+ {
230
+ "label": "clip",
231
+ "localized_name": "clip",
232
+ "name": "clip",
233
+ "type": "CLIP",
234
+ "link": 62
235
+ }
236
+ ],
237
+ "outputs": [
238
+ {
239
+ "label": "CONDITIONING",
240
+ "localized_name": "CONDITIONING",
241
+ "name": "CONDITIONING",
242
+ "type": "CONDITIONING",
243
+ "slot_index": 0,
244
+ "links": [
245
+ 41
246
+ ]
247
+ }
248
+ ],
249
+ "title": "CLIP Text Encode (Positive Prompt)",
250
+ "properties": {
251
+ "cnr_id": "comfy-core",
252
+ "ver": "0.3.24",
253
+ "Node name for S&R": "CLIPTextEncode"
254
+ },
255
+ "widgets_values": [
256
+ "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
257
+ ],
258
+ "color": "#232",
259
+ "bgcolor": "#353"
260
+ },
261
+ {
262
+ "id": 34,
263
+ "type": "DualCLIPLoader",
264
+ "pos": [
265
+ -220.53102111816406,
266
+ 97.30029296875
267
+ ],
268
+ "size": [
269
+ 315,
270
+ 122
271
+ ],
272
+ "flags": {},
273
+ "order": 1,
274
+ "mode": 0,
275
+ "inputs": [],
276
+ "outputs": [
277
+ {
278
+ "label": "CLIP",
279
+ "localized_name": "CLIP",
280
+ "name": "CLIP",
281
+ "type": "CLIP",
282
+ "links": [
283
+ 62,
284
+ 63
285
+ ]
286
+ }
287
+ ],
288
+ "properties": {
289
+ "cnr_id": "comfy-core",
290
+ "ver": "0.3.24",
291
+ "Node name for S&R": "DualCLIPLoader"
292
+ },
293
+ "widgets_values": [
294
+ "clip_l.safetensors",
295
+ "t5xxl_fp16.safetensors",
296
+ "flux",
297
+ "default"
298
+ ]
299
+ },
300
+ {
301
+ "id": 8,
302
+ "type": "VAEDecode",
303
+ "pos": [
304
+ 1699.7835693359375,
305
+ -60.63755416870117
306
+ ],
307
+ "size": [
308
+ 210,
309
+ 46
310
+ ],
311
+ "flags": {},
312
+ "order": 12,
313
+ "mode": 0,
314
+ "inputs": [
315
+ {
316
+ "label": "samples",
317
+ "localized_name": "samples",
318
+ "name": "samples",
319
+ "type": "LATENT",
320
+ "link": 7
321
+ },
322
+ {
323
+ "label": "vae",
324
+ "localized_name": "vae",
325
+ "name": "vae",
326
+ "type": "VAE",
327
+ "link": 60
328
+ }
329
+ ],
330
+ "outputs": [
331
+ {
332
+ "label": "IMAGE",
333
+ "localized_name": "IMAGE",
334
+ "name": "IMAGE",
335
+ "type": "IMAGE",
336
+ "slot_index": 0,
337
+ "links": [
338
+ 9
339
+ ]
340
+ }
341
+ ],
342
+ "properties": {
343
+ "cnr_id": "comfy-core",
344
+ "ver": "0.3.24",
345
+ "Node name for S&R": "VAEDecode"
346
+ },
347
+ "widgets_values": []
348
+ },
349
+ {
350
+ "id": 3,
351
+ "type": "KSampler",
352
+ "pos": [
353
+ 1320.5775146484375,
354
+ -80.12444305419922
355
+ ],
356
+ "size": [
357
+ 315,
358
+ 262
359
+ ],
360
+ "flags": {},
361
+ "order": 11,
362
+ "mode": 0,
363
+ "inputs": [
364
+ {
365
+ "label": "model",
366
+ "localized_name": "model",
367
+ "name": "model",
368
+ "type": "MODEL",
369
+ "link": 77
370
+ },
371
+ {
372
+ "label": "positive",
373
+ "localized_name": "positive",
374
+ "name": "positive",
375
+ "type": "CONDITIONING",
376
+ "link": 64
377
+ },
378
+ {
379
+ "label": "negative",
380
+ "localized_name": "negative",
381
+ "name": "negative",
382
+ "type": "CONDITIONING",
383
+ "link": 65
384
+ },
385
+ {
386
+ "label": "latent_image",
387
+ "localized_name": "latent_image",
388
+ "name": "latent_image",
389
+ "type": "LATENT",
390
+ "link": 66
391
+ }
392
+ ],
393
+ "outputs": [
394
+ {
395
+ "label": "LATENT",
396
+ "localized_name": "LATENT",
397
+ "name": "LATENT",
398
+ "type": "LATENT",
399
+ "slot_index": 0,
400
+ "links": [
401
+ 7
402
+ ]
403
+ }
404
+ ],
405
+ "properties": {
406
+ "cnr_id": "comfy-core",
407
+ "ver": "0.3.24",
408
+ "Node name for S&R": "KSampler"
409
+ },
410
+ "widgets_values": [
411
+ 39783659540192,
412
+ "randomize",
413
+ 20,
414
+ 1,
415
+ "euler",
416
+ "normal",
417
+ 1
418
+ ]
419
+ },
420
+ {
421
+ "id": 19,
422
+ "type": "PreviewImage",
423
+ "pos": [
424
+ 1127.9403076171875,
425
+ 554.3356323242188
426
+ ],
427
+ "size": [
428
+ 571.5869140625,
429
+ 625.5296020507812
430
+ ],
431
+ "flags": {},
432
+ "order": 9,
433
+ "mode": 0,
434
+ "inputs": [
435
+ {
436
+ "label": "images",
437
+ "localized_name": "images",
438
+ "name": "images",
439
+ "type": "IMAGE",
440
+ "link": 26
441
+ }
442
+ ],
443
+ "outputs": [],
444
+ "properties": {
445
+ "cnr_id": "comfy-core",
446
+ "ver": "0.3.24",
447
+ "Node name for S&R": "PreviewImage"
448
+ },
449
+ "widgets_values": [
450
+ ""
451
+ ]
452
+ },
453
+ {
454
+ "id": 35,
455
+ "type": "InstructPixToPixConditioning",
456
+ "pos": [
457
+ 1031.3619384765625,
458
+ 153.57142639160156
459
+ ],
460
+ "size": [
461
+ 235.1999969482422,
462
+ 86
463
+ ],
464
+ "flags": {},
465
+ "order": 10,
466
+ "mode": 0,
467
+ "inputs": [
468
+ {
469
+ "label": "positive",
470
+ "localized_name": "positive",
471
+ "name": "positive",
472
+ "type": "CONDITIONING",
473
+ "link": 67
474
+ },
475
+ {
476
+ "label": "negative",
477
+ "localized_name": "negative",
478
+ "name": "negative",
479
+ "type": "CONDITIONING",
480
+ "link": 68
481
+ },
482
+ {
483
+ "label": "vae",
484
+ "localized_name": "vae",
485
+ "name": "vae",
486
+ "type": "VAE",
487
+ "link": 69
488
+ },
489
+ {
490
+ "label": "pixels",
491
+ "localized_name": "pixels",
492
+ "name": "pixels",
493
+ "type": "IMAGE",
494
+ "link": 70
495
+ }
496
+ ],
497
+ "outputs": [
498
+ {
499
+ "label": "positive",
500
+ "localized_name": "positive",
501
+ "name": "positive",
502
+ "type": "CONDITIONING",
503
+ "slot_index": 0,
504
+ "links": [
505
+ 64
506
+ ]
507
+ },
508
+ {
509
+ "label": "negative",
510
+ "localized_name": "negative",
511
+ "name": "negative",
512
+ "type": "CONDITIONING",
513
+ "slot_index": 1,
514
+ "links": [
515
+ 65
516
+ ]
517
+ },
518
+ {
519
+ "label": "latent",
520
+ "localized_name": "latent",
521
+ "name": "latent",
522
+ "type": "LATENT",
523
+ "slot_index": 2,
524
+ "links": [
525
+ 66
526
+ ]
527
+ }
528
+ ],
529
+ "properties": {
530
+ "cnr_id": "comfy-core",
531
+ "ver": "0.3.24",
532
+ "Node name for S&R": "InstructPixToPixConditioning"
533
+ },
534
+ "widgets_values": []
535
+ },
536
+ {
537
+ "id": 17,
538
+ "type": "LoadImage",
539
+ "pos": [
540
+ 6.694743633270264,
541
+ 562.3865966796875
542
+ ],
543
+ "size": [
544
+ 315,
545
+ 314.0000305175781
546
+ ],
547
+ "flags": {},
548
+ "order": 2,
549
+ "mode": 0,
550
+ "inputs": [],
551
+ "outputs": [
552
+ {
553
+ "label": "IMAGE",
554
+ "localized_name": "IMAGE",
555
+ "name": "IMAGE",
556
+ "shape": 3,
557
+ "type": "IMAGE",
558
+ "slot_index": 0,
559
+ "links": [
560
+ 75
561
+ ]
562
+ },
563
+ {
564
+ "label": "MASK",
565
+ "localized_name": "MASK",
566
+ "name": "MASK",
567
+ "shape": 3,
568
+ "type": "MASK",
569
+ "links": null
570
+ }
571
+ ],
572
+ "properties": {
573
+ "cnr_id": "comfy-core",
574
+ "ver": "0.3.24",
575
+ "Node name for S&R": "LoadImage"
576
+ },
577
+ "widgets_values": [
578
+ "robot.png",
579
+ "image",
580
+ ""
581
+ ]
582
+ },
583
+ {
584
+ "id": 7,
585
+ "type": "CLIPTextEncode",
586
+ "pos": [
587
+ 287.2383728027344,
588
+ 446.1422424316406
589
+ ],
590
+ "size": [
591
+ 425.27801513671875,
592
+ 180.6060791015625
593
+ ],
594
+ "flags": {
595
+ "collapsed": true,
596
+ "pinned": true
597
+ },
598
+ "order": 5,
599
+ "mode": 0,
600
+ "inputs": [
601
+ {
602
+ "label": "clip",
603
+ "localized_name": "clip",
604
+ "name": "clip",
605
+ "type": "CLIP",
606
+ "link": 63
607
+ }
608
+ ],
609
+ "outputs": [
610
+ {
611
+ "label": "CONDITIONING",
612
+ "localized_name": "CONDITIONING",
613
+ "name": "CONDITIONING",
614
+ "type": "CONDITIONING",
615
+ "slot_index": 0,
616
+ "links": [
617
+ 68
618
+ ]
619
+ }
620
+ ],
621
+ "title": "CLIP Text Encode (Negative Prompt)",
622
+ "properties": {
623
+ "cnr_id": "comfy-core",
624
+ "ver": "0.3.24",
625
+ "Node name for S&R": "CLIPTextEncode"
626
+ },
627
+ "widgets_values": [
628
+ ""
629
+ ],
630
+ "color": "#322",
631
+ "bgcolor": "#533"
632
+ },
633
+ {
634
+ "id": 39,
635
+ "type": "NunchakuFluxDiTLoader",
636
+ "pos": [
637
+ 793.3363647460938,
638
+ -164.9036102294922
639
+ ],
640
+ "size": [
641
+ 315,
642
+ 202
643
+ ],
644
+ "flags": {},
645
+ "order": 3,
646
+ "mode": 0,
647
+ "inputs": [],
648
+ "outputs": [
649
+ {
650
+ "localized_name": "MODEL",
651
+ "name": "MODEL",
652
+ "type": "MODEL",
653
+ "links": [
654
+ 77
655
+ ]
656
+ }
657
+ ],
658
+ "properties": {
659
+ "Node name for S&R": "NunchakuFluxDiTLoader"
660
+ },
661
+ "widgets_values": [
662
+ "svdq-int4-flux.1-canny-dev",
663
+ 0,
664
+ "nunchaku-fp16",
665
+ "auto",
666
+ 0,
667
+ "bfloat16",
668
+ "enabled"
669
+ ]
670
+ }
671
+ ],
672
+ "links": [
673
+ [
674
+ 7,
675
+ 3,
676
+ 0,
677
+ 8,
678
+ 0,
679
+ "LATENT"
680
+ ],
681
+ [
682
+ 9,
683
+ 8,
684
+ 0,
685
+ 9,
686
+ 0,
687
+ "IMAGE"
688
+ ],
689
+ [
690
+ 26,
691
+ 18,
692
+ 0,
693
+ 19,
694
+ 0,
695
+ "IMAGE"
696
+ ],
697
+ [
698
+ 41,
699
+ 23,
700
+ 0,
701
+ 26,
702
+ 0,
703
+ "CONDITIONING"
704
+ ],
705
+ [
706
+ 60,
707
+ 32,
708
+ 0,
709
+ 8,
710
+ 1,
711
+ "VAE"
712
+ ],
713
+ [
714
+ 62,
715
+ 34,
716
+ 0,
717
+ 23,
718
+ 0,
719
+ "CLIP"
720
+ ],
721
+ [
722
+ 63,
723
+ 34,
724
+ 0,
725
+ 7,
726
+ 0,
727
+ "CLIP"
728
+ ],
729
+ [
730
+ 64,
731
+ 35,
732
+ 0,
733
+ 3,
734
+ 1,
735
+ "CONDITIONING"
736
+ ],
737
+ [
738
+ 65,
739
+ 35,
740
+ 1,
741
+ 3,
742
+ 2,
743
+ "CONDITIONING"
744
+ ],
745
+ [
746
+ 66,
747
+ 35,
748
+ 2,
749
+ 3,
750
+ 3,
751
+ "LATENT"
752
+ ],
753
+ [
754
+ 67,
755
+ 26,
756
+ 0,
757
+ 35,
758
+ 0,
759
+ "CONDITIONING"
760
+ ],
761
+ [
762
+ 68,
763
+ 7,
764
+ 0,
765
+ 35,
766
+ 1,
767
+ "CONDITIONING"
768
+ ],
769
+ [
770
+ 69,
771
+ 32,
772
+ 0,
773
+ 35,
774
+ 2,
775
+ "VAE"
776
+ ],
777
+ [
778
+ 70,
779
+ 18,
780
+ 0,
781
+ 35,
782
+ 3,
783
+ "IMAGE"
784
+ ],
785
+ [
786
+ 75,
787
+ 17,
788
+ 0,
789
+ 38,
790
+ 0,
791
+ "IMAGE"
792
+ ],
793
+ [
794
+ 76,
795
+ 38,
796
+ 0,
797
+ 18,
798
+ 0,
799
+ "IMAGE"
800
+ ],
801
+ [
802
+ 77,
803
+ 39,
804
+ 0,
805
+ 3,
806
+ 0,
807
+ "MODEL"
808
+ ]
809
+ ],
810
+ "groups": [],
811
+ "config": {},
812
+ "extra": {
813
+ "ds": {
814
+ "scale": 0.9849732675807723,
815
+ "offset": [
816
+ 350.6069209843413,
817
+ 371.94271826301787
818
+ ]
819
+ },
820
+ "node_versions": {
821
+ "comfy-core": "0.3.24"
822
+ }
823
+ },
824
+ "version": 0.4
825
+ }
workflows/nunchaku-flux.1-depth-lora.json ADDED
@@ -0,0 +1,868 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "3b178583-4f92-4405-a4d2-f7a5e1143753",
3
+ "revision": 0,
4
+ "last_node_id": 53,
5
+ "last_link_id": 99,
6
+ "nodes": [
7
+ {
8
+ "id": 34,
9
+ "type": "DualCLIPLoader",
10
+ "pos": [
11
+ -238,
12
+ 112
13
+ ],
14
+ "size": [
15
+ 315,
16
+ 122
17
+ ],
18
+ "flags": {},
19
+ "order": 0,
20
+ "mode": 0,
21
+ "inputs": [],
22
+ "outputs": [
23
+ {
24
+ "label": "CLIP",
25
+ "localized_name": "CLIP",
26
+ "name": "CLIP",
27
+ "type": "CLIP",
28
+ "links": [
29
+ 62,
30
+ 63
31
+ ]
32
+ }
33
+ ],
34
+ "properties": {
35
+ "cnr_id": "comfy-core",
36
+ "ver": "0.3.27",
37
+ "Node name for S&R": "DualCLIPLoader"
38
+ },
39
+ "widgets_values": [
40
+ "clip_l.safetensors",
41
+ "t5xxl_fp16.safetensors",
42
+ "flux",
43
+ "default"
44
+ ]
45
+ },
46
+ {
47
+ "id": 26,
48
+ "type": "FluxGuidance",
49
+ "pos": [
50
+ 621,
51
+ 8
52
+ ],
53
+ "size": [
54
+ 317.4000244140625,
55
+ 58
56
+ ],
57
+ "flags": {},
58
+ "order": 8,
59
+ "mode": 0,
60
+ "inputs": [
61
+ {
62
+ "label": "conditioning",
63
+ "localized_name": "conditioning",
64
+ "name": "conditioning",
65
+ "type": "CONDITIONING",
66
+ "link": 41
67
+ }
68
+ ],
69
+ "outputs": [
70
+ {
71
+ "label": "CONDITIONING",
72
+ "localized_name": "CONDITIONING",
73
+ "name": "CONDITIONING",
74
+ "shape": 3,
75
+ "type": "CONDITIONING",
76
+ "slot_index": 0,
77
+ "links": [
78
+ 67
79
+ ]
80
+ }
81
+ ],
82
+ "properties": {
83
+ "cnr_id": "comfy-core",
84
+ "ver": "0.3.27",
85
+ "Node name for S&R": "FluxGuidance"
86
+ },
87
+ "widgets_values": [
88
+ 10
89
+ ]
90
+ },
91
+ {
92
+ "id": 43,
93
+ "type": "PreviewImage",
94
+ "pos": [
95
+ 1001.3873291015625,
96
+ 432.09039306640625
97
+ ],
98
+ "size": [
99
+ 571.5869140625,
100
+ 625.5296020507812
101
+ ],
102
+ "flags": {},
103
+ "order": 10,
104
+ "mode": 0,
105
+ "inputs": [
106
+ {
107
+ "label": "images",
108
+ "localized_name": "images",
109
+ "name": "images",
110
+ "type": "IMAGE",
111
+ "link": 93
112
+ }
113
+ ],
114
+ "outputs": [],
115
+ "properties": {
116
+ "cnr_id": "comfy-core",
117
+ "ver": "0.3.27",
118
+ "Node name for S&R": "PreviewImage"
119
+ },
120
+ "widgets_values": [
121
+ ""
122
+ ]
123
+ },
124
+ {
125
+ "id": 8,
126
+ "type": "VAEDecode",
127
+ "pos": [
128
+ 1620,
129
+ 98
130
+ ],
131
+ "size": [
132
+ 210,
133
+ 46
134
+ ],
135
+ "flags": {},
136
+ "order": 13,
137
+ "mode": 0,
138
+ "inputs": [
139
+ {
140
+ "label": "samples",
141
+ "localized_name": "samples",
142
+ "name": "samples",
143
+ "type": "LATENT",
144
+ "link": 7
145
+ },
146
+ {
147
+ "label": "vae",
148
+ "localized_name": "vae",
149
+ "name": "vae",
150
+ "type": "VAE",
151
+ "link": 60
152
+ }
153
+ ],
154
+ "outputs": [
155
+ {
156
+ "label": "IMAGE",
157
+ "localized_name": "IMAGE",
158
+ "name": "IMAGE",
159
+ "type": "IMAGE",
160
+ "slot_index": 0,
161
+ "links": [
162
+ 85
163
+ ]
164
+ }
165
+ ],
166
+ "properties": {
167
+ "cnr_id": "comfy-core",
168
+ "ver": "0.3.27",
169
+ "Node name for S&R": "VAEDecode"
170
+ },
171
+ "widgets_values": []
172
+ },
173
+ {
174
+ "id": 44,
175
+ "type": "SaveImage",
176
+ "pos": [
177
+ 1912.7984619140625,
178
+ 109.0069580078125
179
+ ],
180
+ "size": [
181
+ 828.9535522460938,
182
+ 893.8475341796875
183
+ ],
184
+ "flags": {},
185
+ "order": 14,
186
+ "mode": 0,
187
+ "inputs": [
188
+ {
189
+ "label": "images",
190
+ "localized_name": "images",
191
+ "name": "images",
192
+ "type": "IMAGE",
193
+ "link": 85
194
+ }
195
+ ],
196
+ "outputs": [],
197
+ "properties": {
198
+ "cnr_id": "comfy-core",
199
+ "ver": "0.3.27"
200
+ },
201
+ "widgets_values": [
202
+ "ComfyUI",
203
+ ""
204
+ ]
205
+ },
206
+ {
207
+ "id": 23,
208
+ "type": "CLIPTextEncode",
209
+ "pos": [
210
+ 115,
211
+ -17
212
+ ],
213
+ "size": [
214
+ 422.84503173828125,
215
+ 164.31304931640625
216
+ ],
217
+ "flags": {},
218
+ "order": 4,
219
+ "mode": 0,
220
+ "inputs": [
221
+ {
222
+ "label": "clip",
223
+ "localized_name": "clip",
224
+ "name": "clip",
225
+ "type": "CLIP",
226
+ "link": 62
227
+ }
228
+ ],
229
+ "outputs": [
230
+ {
231
+ "label": "CONDITIONING",
232
+ "localized_name": "CONDITIONING",
233
+ "name": "CONDITIONING",
234
+ "type": "CONDITIONING",
235
+ "slot_index": 0,
236
+ "links": [
237
+ 41
238
+ ]
239
+ }
240
+ ],
241
+ "title": "CLIP Text Encode (Positive Prompt)",
242
+ "properties": {
243
+ "cnr_id": "comfy-core",
244
+ "ver": "0.3.27",
245
+ "Node name for S&R": "CLIPTextEncode"
246
+ },
247
+ "widgets_values": [
248
+ "ethereal fantasy concept art of A logo of 'MIT HAN Lab'. magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy"
249
+ ],
250
+ "color": "#232",
251
+ "bgcolor": "#353"
252
+ },
253
+ {
254
+ "id": 32,
255
+ "type": "VAELoader",
256
+ "pos": [
257
+ 630.5574951171875,
258
+ 280.441650390625
259
+ ],
260
+ "size": [
261
+ 315,
262
+ 58
263
+ ],
264
+ "flags": {},
265
+ "order": 1,
266
+ "mode": 0,
267
+ "inputs": [],
268
+ "outputs": [
269
+ {
270
+ "label": "VAE",
271
+ "localized_name": "VAE",
272
+ "name": "VAE",
273
+ "type": "VAE",
274
+ "slot_index": 0,
275
+ "links": [
276
+ 60,
277
+ 69
278
+ ]
279
+ }
280
+ ],
281
+ "properties": {
282
+ "cnr_id": "comfy-core",
283
+ "ver": "0.3.27",
284
+ "Node name for S&R": "VAELoader"
285
+ },
286
+ "widgets_values": [
287
+ "ae.safetensors"
288
+ ]
289
+ },
290
+ {
291
+ "id": 35,
292
+ "type": "InstructPixToPixConditioning",
293
+ "pos": [
294
+ 1008,
295
+ 118
296
+ ],
297
+ "size": [
298
+ 235.1999969482422,
299
+ 86
300
+ ],
301
+ "flags": {},
302
+ "order": 11,
303
+ "mode": 0,
304
+ "inputs": [
305
+ {
306
+ "label": "positive",
307
+ "localized_name": "positive",
308
+ "name": "positive",
309
+ "type": "CONDITIONING",
310
+ "link": 67
311
+ },
312
+ {
313
+ "label": "negative",
314
+ "localized_name": "negative",
315
+ "name": "negative",
316
+ "type": "CONDITIONING",
317
+ "link": 68
318
+ },
319
+ {
320
+ "label": "vae",
321
+ "localized_name": "vae",
322
+ "name": "vae",
323
+ "type": "VAE",
324
+ "link": 69
325
+ },
326
+ {
327
+ "label": "pixels",
328
+ "localized_name": "pixels",
329
+ "name": "pixels",
330
+ "type": "IMAGE",
331
+ "link": 94
332
+ }
333
+ ],
334
+ "outputs": [
335
+ {
336
+ "label": "positive",
337
+ "localized_name": "positive",
338
+ "name": "positive",
339
+ "type": "CONDITIONING",
340
+ "slot_index": 0,
341
+ "links": [
342
+ 64
343
+ ]
344
+ },
345
+ {
346
+ "label": "negative",
347
+ "localized_name": "negative",
348
+ "name": "negative",
349
+ "type": "CONDITIONING",
350
+ "slot_index": 1,
351
+ "links": [
352
+ 65
353
+ ]
354
+ },
355
+ {
356
+ "label": "latent",
357
+ "localized_name": "latent",
358
+ "name": "latent",
359
+ "type": "LATENT",
360
+ "slot_index": 2,
361
+ "links": [
362
+ 73
363
+ ]
364
+ }
365
+ ],
366
+ "properties": {
367
+ "cnr_id": "comfy-core",
368
+ "ver": "0.3.27",
369
+ "Node name for S&R": "InstructPixToPixConditioning"
370
+ },
371
+ "widgets_values": []
372
+ },
373
+ {
374
+ "id": 17,
375
+ "type": "LoadImage",
376
+ "pos": [
377
+ -152.99026489257812,
378
+ 409.8635559082031
379
+ ],
380
+ "size": [
381
+ 315,
382
+ 314.0000305175781
383
+ ],
384
+ "flags": {},
385
+ "order": 2,
386
+ "mode": 0,
387
+ "inputs": [],
388
+ "outputs": [
389
+ {
390
+ "label": "IMAGE",
391
+ "localized_name": "IMAGE",
392
+ "name": "IMAGE",
393
+ "shape": 3,
394
+ "type": "IMAGE",
395
+ "slot_index": 0,
396
+ "links": [
397
+ 82
398
+ ]
399
+ },
400
+ {
401
+ "label": "MASK",
402
+ "localized_name": "MASK",
403
+ "name": "MASK",
404
+ "shape": 3,
405
+ "type": "MASK",
406
+ "links": null
407
+ }
408
+ ],
409
+ "properties": {
410
+ "cnr_id": "comfy-core",
411
+ "ver": "0.3.27",
412
+ "Node name for S&R": "LoadImage"
413
+ },
414
+ "widgets_values": [
415
+ "logo_example.png",
416
+ "image",
417
+ ""
418
+ ]
419
+ },
420
+ {
421
+ "id": 42,
422
+ "type": "ImageScale",
423
+ "pos": [
424
+ 174.98765563964844,
425
+ 450.5818786621094
426
+ ],
427
+ "size": [
428
+ 315,
429
+ 130
430
+ ],
431
+ "flags": {},
432
+ "order": 6,
433
+ "mode": 0,
434
+ "inputs": [
435
+ {
436
+ "localized_name": "image",
437
+ "name": "image",
438
+ "type": "IMAGE",
439
+ "link": 82
440
+ }
441
+ ],
442
+ "outputs": [
443
+ {
444
+ "localized_name": "IMAGE",
445
+ "name": "IMAGE",
446
+ "type": "IMAGE",
447
+ "slot_index": 0,
448
+ "links": [
449
+ 92
450
+ ]
451
+ }
452
+ ],
453
+ "properties": {
454
+ "cnr_id": "comfy-core",
455
+ "ver": "0.3.27",
456
+ "Node name for S&R": "ImageScale"
457
+ },
458
+ "widgets_values": [
459
+ "nearest-exact",
460
+ 1024,
461
+ 1024,
462
+ "center"
463
+ ]
464
+ },
465
+ {
466
+ "id": 47,
467
+ "type": "DepthAnythingPreprocessor",
468
+ "pos": [
469
+ 601.0758666992188,
470
+ 474.25433349609375
471
+ ],
472
+ "size": [
473
+ 315,
474
+ 82
475
+ ],
476
+ "flags": {},
477
+ "order": 9,
478
+ "mode": 0,
479
+ "inputs": [
480
+ {
481
+ "localized_name": "image",
482
+ "name": "image",
483
+ "type": "IMAGE",
484
+ "link": 92
485
+ }
486
+ ],
487
+ "outputs": [
488
+ {
489
+ "localized_name": "IMAGE",
490
+ "name": "IMAGE",
491
+ "type": "IMAGE",
492
+ "links": [
493
+ 93,
494
+ 94
495
+ ]
496
+ }
497
+ ],
498
+ "properties": {
499
+ "cnr_id": "comfyui_controlnet_aux",
500
+ "ver": "1.0.7",
501
+ "Node name for S&R": "DepthAnythingPreprocessor"
502
+ },
503
+ "widgets_values": [
504
+ "depth_anything_vitl14.pth",
505
+ 1024
506
+ ]
507
+ },
508
+ {
509
+ "id": 3,
510
+ "type": "KSampler",
511
+ "pos": [
512
+ 1280,
513
+ 100
514
+ ],
515
+ "size": [
516
+ 315,
517
+ 262
518
+ ],
519
+ "flags": {},
520
+ "order": 12,
521
+ "mode": 0,
522
+ "inputs": [
523
+ {
524
+ "label": "model",
525
+ "localized_name": "model",
526
+ "name": "model",
527
+ "type": "MODEL",
528
+ "link": 99
529
+ },
530
+ {
531
+ "label": "positive",
532
+ "localized_name": "positive",
533
+ "name": "positive",
534
+ "type": "CONDITIONING",
535
+ "link": 64
536
+ },
537
+ {
538
+ "label": "negative",
539
+ "localized_name": "negative",
540
+ "name": "negative",
541
+ "type": "CONDITIONING",
542
+ "link": 65
543
+ },
544
+ {
545
+ "label": "latent_image",
546
+ "localized_name": "latent_image",
547
+ "name": "latent_image",
548
+ "type": "LATENT",
549
+ "link": 73
550
+ }
551
+ ],
552
+ "outputs": [
553
+ {
554
+ "label": "LATENT",
555
+ "localized_name": "LATENT",
556
+ "name": "LATENT",
557
+ "type": "LATENT",
558
+ "slot_index": 0,
559
+ "links": [
560
+ 7
561
+ ]
562
+ }
563
+ ],
564
+ "properties": {
565
+ "cnr_id": "comfy-core",
566
+ "ver": "0.3.27",
567
+ "Node name for S&R": "KSampler"
568
+ },
569
+ "widgets_values": [
570
+ 677729013463731,
571
+ "fixed",
572
+ 20,
573
+ 1,
574
+ "euler",
575
+ "normal",
576
+ 1
577
+ ]
578
+ },
579
+ {
580
+ "id": 7,
581
+ "type": "CLIPTextEncode",
582
+ "pos": [
583
+ 300.0365905761719,
584
+ 249.09181213378906
585
+ ],
586
+ "size": [
587
+ 425.27801513671875,
588
+ 180.6060791015625
589
+ ],
590
+ "flags": {
591
+ "collapsed": true
592
+ },
593
+ "order": 5,
594
+ "mode": 0,
595
+ "inputs": [
596
+ {
597
+ "label": "clip",
598
+ "localized_name": "clip",
599
+ "name": "clip",
600
+ "type": "CLIP",
601
+ "link": 63
602
+ }
603
+ ],
604
+ "outputs": [
605
+ {
606
+ "label": "CONDITIONING",
607
+ "localized_name": "CONDITIONING",
608
+ "name": "CONDITIONING",
609
+ "type": "CONDITIONING",
610
+ "slot_index": 0,
611
+ "links": [
612
+ 68
613
+ ]
614
+ }
615
+ ],
616
+ "title": "CLIP Text Encode (Negative Prompt)",
617
+ "properties": {
618
+ "cnr_id": "comfy-core",
619
+ "ver": "0.3.27",
620
+ "Node name for S&R": "CLIPTextEncode"
621
+ },
622
+ "widgets_values": [
623
+ ""
624
+ ],
625
+ "color": "#322",
626
+ "bgcolor": "#533"
627
+ },
628
+ {
629
+ "id": 53,
630
+ "type": "NunchakuFluxLoraLoader",
631
+ "pos": [
632
+ 990.1519775390625,
633
+ -199.45751953125
634
+ ],
635
+ "size": [
636
+ 340.20001220703125,
637
+ 82
638
+ ],
639
+ "flags": {},
640
+ "order": 7,
641
+ "mode": 0,
642
+ "inputs": [
643
+ {
644
+ "localized_name": "model",
645
+ "name": "model",
646
+ "type": "MODEL",
647
+ "link": 98
648
+ }
649
+ ],
650
+ "outputs": [
651
+ {
652
+ "localized_name": "MODEL",
653
+ "name": "MODEL",
654
+ "type": "MODEL",
655
+ "links": [
656
+ 99
657
+ ]
658
+ }
659
+ ],
660
+ "properties": {
661
+ "Node name for S&R": "NunchakuFluxLoraLoader"
662
+ },
663
+ "widgets_values": [
664
+ "depth.safetensors",
665
+ 0.9500000000000002
666
+ ]
667
+ },
668
+ {
669
+ "id": 52,
670
+ "type": "NunchakuFluxDiTLoader",
671
+ "pos": [
672
+ 615.4609985351562,
673
+ -233.65086364746094
674
+ ],
675
+ "size": [
676
+ 315,
677
+ 202
678
+ ],
679
+ "flags": {},
680
+ "order": 3,
681
+ "mode": 0,
682
+ "inputs": [],
683
+ "outputs": [
684
+ {
685
+ "localized_name": "MODEL",
686
+ "name": "MODEL",
687
+ "type": "MODEL",
688
+ "links": [
689
+ 98
690
+ ]
691
+ }
692
+ ],
693
+ "properties": {
694
+ "Node name for S&R": "NunchakuFluxDiTLoader"
695
+ },
696
+ "widgets_values": [
697
+ "svdq-int4-flux.1-dev",
698
+ 0,
699
+ "nunchaku-fp16",
700
+ "auto",
701
+ 0,
702
+ "bfloat16",
703
+ "enabled"
704
+ ]
705
+ }
706
+ ],
707
+ "links": [
708
+ [
709
+ 7,
710
+ 3,
711
+ 0,
712
+ 8,
713
+ 0,
714
+ "LATENT"
715
+ ],
716
+ [
717
+ 41,
718
+ 23,
719
+ 0,
720
+ 26,
721
+ 0,
722
+ "CONDITIONING"
723
+ ],
724
+ [
725
+ 60,
726
+ 32,
727
+ 0,
728
+ 8,
729
+ 1,
730
+ "VAE"
731
+ ],
732
+ [
733
+ 62,
734
+ 34,
735
+ 0,
736
+ 23,
737
+ 0,
738
+ "CLIP"
739
+ ],
740
+ [
741
+ 63,
742
+ 34,
743
+ 0,
744
+ 7,
745
+ 0,
746
+ "CLIP"
747
+ ],
748
+ [
749
+ 64,
750
+ 35,
751
+ 0,
752
+ 3,
753
+ 1,
754
+ "CONDITIONING"
755
+ ],
756
+ [
757
+ 65,
758
+ 35,
759
+ 1,
760
+ 3,
761
+ 2,
762
+ "CONDITIONING"
763
+ ],
764
+ [
765
+ 67,
766
+ 26,
767
+ 0,
768
+ 35,
769
+ 0,
770
+ "CONDITIONING"
771
+ ],
772
+ [
773
+ 68,
774
+ 7,
775
+ 0,
776
+ 35,
777
+ 1,
778
+ "CONDITIONING"
779
+ ],
780
+ [
781
+ 69,
782
+ 32,
783
+ 0,
784
+ 35,
785
+ 2,
786
+ "VAE"
787
+ ],
788
+ [
789
+ 73,
790
+ 35,
791
+ 2,
792
+ 3,
793
+ 3,
794
+ "LATENT"
795
+ ],
796
+ [
797
+ 82,
798
+ 17,
799
+ 0,
800
+ 42,
801
+ 0,
802
+ "IMAGE"
803
+ ],
804
+ [
805
+ 85,
806
+ 8,
807
+ 0,
808
+ 44,
809
+ 0,
810
+ "IMAGE"
811
+ ],
812
+ [
813
+ 92,
814
+ 42,
815
+ 0,
816
+ 47,
817
+ 0,
818
+ "IMAGE"
819
+ ],
820
+ [
821
+ 93,
822
+ 47,
823
+ 0,
824
+ 43,
825
+ 0,
826
+ "IMAGE"
827
+ ],
828
+ [
829
+ 94,
830
+ 47,
831
+ 0,
832
+ 35,
833
+ 3,
834
+ "IMAGE"
835
+ ],
836
+ [
837
+ 98,
838
+ 52,
839
+ 0,
840
+ 53,
841
+ 0,
842
+ "MODEL"
843
+ ],
844
+ [
845
+ 99,
846
+ 53,
847
+ 0,
848
+ 3,
849
+ 0,
850
+ "MODEL"
851
+ ]
852
+ ],
853
+ "groups": [],
854
+ "config": {},
855
+ "extra": {
856
+ "ds": {
857
+ "scale": 0.8140274938684042,
858
+ "offset": [
859
+ 534.4549983751488,
860
+ 322.67139610550964
861
+ ]
862
+ },
863
+ "node_versions": {
864
+ "comfy-core": "0.3.24"
865
+ }
866
+ },
867
+ "version": 0.4
868
+ }
workflows/nunchaku-flux.1-depth.json ADDED
@@ -0,0 +1,820 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "3b178583-4f92-4405-a4d2-f7a5e1143753",
3
+ "revision": 0,
4
+ "last_node_id": 49,
5
+ "last_link_id": 95,
6
+ "nodes": [
7
+ {
8
+ "id": 7,
9
+ "type": "CLIPTextEncode",
10
+ "pos": [
11
+ 307,
12
+ 282
13
+ ],
14
+ "size": [
15
+ 425.27801513671875,
16
+ 180.6060791015625
17
+ ],
18
+ "flags": {
19
+ "collapsed": true
20
+ },
21
+ "order": 5,
22
+ "mode": 0,
23
+ "inputs": [
24
+ {
25
+ "label": "clip",
26
+ "localized_name": "clip",
27
+ "name": "clip",
28
+ "type": "CLIP",
29
+ "link": 63
30
+ }
31
+ ],
32
+ "outputs": [
33
+ {
34
+ "label": "CONDITIONING",
35
+ "localized_name": "CONDITIONING",
36
+ "name": "CONDITIONING",
37
+ "type": "CONDITIONING",
38
+ "slot_index": 0,
39
+ "links": [
40
+ 68
41
+ ]
42
+ }
43
+ ],
44
+ "title": "CLIP Text Encode (Negative Prompt)",
45
+ "properties": {
46
+ "cnr_id": "comfy-core",
47
+ "ver": "0.3.27",
48
+ "Node name for S&R": "CLIPTextEncode"
49
+ },
50
+ "widgets_values": [
51
+ ""
52
+ ],
53
+ "color": "#322",
54
+ "bgcolor": "#533"
55
+ },
56
+ {
57
+ "id": 34,
58
+ "type": "DualCLIPLoader",
59
+ "pos": [
60
+ -238,
61
+ 112
62
+ ],
63
+ "size": [
64
+ 315,
65
+ 122
66
+ ],
67
+ "flags": {},
68
+ "order": 0,
69
+ "mode": 0,
70
+ "inputs": [],
71
+ "outputs": [
72
+ {
73
+ "label": "CLIP",
74
+ "localized_name": "CLIP",
75
+ "name": "CLIP",
76
+ "type": "CLIP",
77
+ "links": [
78
+ 62,
79
+ 63
80
+ ]
81
+ }
82
+ ],
83
+ "properties": {
84
+ "cnr_id": "comfy-core",
85
+ "ver": "0.3.27",
86
+ "Node name for S&R": "DualCLIPLoader"
87
+ },
88
+ "widgets_values": [
89
+ "clip_l.safetensors",
90
+ "t5xxl_fp16.safetensors",
91
+ "flux",
92
+ "default"
93
+ ]
94
+ },
95
+ {
96
+ "id": 26,
97
+ "type": "FluxGuidance",
98
+ "pos": [
99
+ 621,
100
+ 8
101
+ ],
102
+ "size": [
103
+ 317.4000244140625,
104
+ 58
105
+ ],
106
+ "flags": {},
107
+ "order": 7,
108
+ "mode": 0,
109
+ "inputs": [
110
+ {
111
+ "label": "conditioning",
112
+ "localized_name": "conditioning",
113
+ "name": "conditioning",
114
+ "type": "CONDITIONING",
115
+ "link": 41
116
+ }
117
+ ],
118
+ "outputs": [
119
+ {
120
+ "label": "CONDITIONING",
121
+ "localized_name": "CONDITIONING",
122
+ "name": "CONDITIONING",
123
+ "shape": 3,
124
+ "type": "CONDITIONING",
125
+ "slot_index": 0,
126
+ "links": [
127
+ 67
128
+ ]
129
+ }
130
+ ],
131
+ "properties": {
132
+ "cnr_id": "comfy-core",
133
+ "ver": "0.3.27",
134
+ "Node name for S&R": "FluxGuidance"
135
+ },
136
+ "widgets_values": [
137
+ 10
138
+ ]
139
+ },
140
+ {
141
+ "id": 3,
142
+ "type": "KSampler",
143
+ "pos": [
144
+ 1280,
145
+ 100
146
+ ],
147
+ "size": [
148
+ 315,
149
+ 262
150
+ ],
151
+ "flags": {},
152
+ "order": 11,
153
+ "mode": 0,
154
+ "inputs": [
155
+ {
156
+ "label": "model",
157
+ "localized_name": "model",
158
+ "name": "model",
159
+ "type": "MODEL",
160
+ "link": 95
161
+ },
162
+ {
163
+ "label": "positive",
164
+ "localized_name": "positive",
165
+ "name": "positive",
166
+ "type": "CONDITIONING",
167
+ "link": 64
168
+ },
169
+ {
170
+ "label": "negative",
171
+ "localized_name": "negative",
172
+ "name": "negative",
173
+ "type": "CONDITIONING",
174
+ "link": 65
175
+ },
176
+ {
177
+ "label": "latent_image",
178
+ "localized_name": "latent_image",
179
+ "name": "latent_image",
180
+ "type": "LATENT",
181
+ "link": 73
182
+ }
183
+ ],
184
+ "outputs": [
185
+ {
186
+ "label": "LATENT",
187
+ "localized_name": "LATENT",
188
+ "name": "LATENT",
189
+ "type": "LATENT",
190
+ "slot_index": 0,
191
+ "links": [
192
+ 7
193
+ ]
194
+ }
195
+ ],
196
+ "properties": {
197
+ "cnr_id": "comfy-core",
198
+ "ver": "0.3.27",
199
+ "Node name for S&R": "KSampler"
200
+ },
201
+ "widgets_values": [
202
+ 753963817490113,
203
+ "randomize",
204
+ 20,
205
+ 1,
206
+ "euler",
207
+ "normal",
208
+ 1
209
+ ]
210
+ },
211
+ {
212
+ "id": 43,
213
+ "type": "PreviewImage",
214
+ "pos": [
215
+ 1001.3873291015625,
216
+ 432.09039306640625
217
+ ],
218
+ "size": [
219
+ 571.5869140625,
220
+ 625.5296020507812
221
+ ],
222
+ "flags": {},
223
+ "order": 9,
224
+ "mode": 0,
225
+ "inputs": [
226
+ {
227
+ "label": "images",
228
+ "localized_name": "images",
229
+ "name": "images",
230
+ "type": "IMAGE",
231
+ "link": 93
232
+ }
233
+ ],
234
+ "outputs": [],
235
+ "properties": {
236
+ "cnr_id": "comfy-core",
237
+ "ver": "0.3.27",
238
+ "Node name for S&R": "PreviewImage"
239
+ },
240
+ "widgets_values": [
241
+ ""
242
+ ]
243
+ },
244
+ {
245
+ "id": 8,
246
+ "type": "VAEDecode",
247
+ "pos": [
248
+ 1620,
249
+ 98
250
+ ],
251
+ "size": [
252
+ 210,
253
+ 46
254
+ ],
255
+ "flags": {},
256
+ "order": 12,
257
+ "mode": 0,
258
+ "inputs": [
259
+ {
260
+ "label": "samples",
261
+ "localized_name": "samples",
262
+ "name": "samples",
263
+ "type": "LATENT",
264
+ "link": 7
265
+ },
266
+ {
267
+ "label": "vae",
268
+ "localized_name": "vae",
269
+ "name": "vae",
270
+ "type": "VAE",
271
+ "link": 60
272
+ }
273
+ ],
274
+ "outputs": [
275
+ {
276
+ "label": "IMAGE",
277
+ "localized_name": "IMAGE",
278
+ "name": "IMAGE",
279
+ "type": "IMAGE",
280
+ "slot_index": 0,
281
+ "links": [
282
+ 85
283
+ ]
284
+ }
285
+ ],
286
+ "properties": {
287
+ "cnr_id": "comfy-core",
288
+ "ver": "0.3.27",
289
+ "Node name for S&R": "VAEDecode"
290
+ },
291
+ "widgets_values": []
292
+ },
293
+ {
294
+ "id": 44,
295
+ "type": "SaveImage",
296
+ "pos": [
297
+ 1912.7984619140625,
298
+ 109.0069580078125
299
+ ],
300
+ "size": [
301
+ 828.9535522460938,
302
+ 893.8475341796875
303
+ ],
304
+ "flags": {},
305
+ "order": 13,
306
+ "mode": 0,
307
+ "inputs": [
308
+ {
309
+ "label": "images",
310
+ "localized_name": "images",
311
+ "name": "images",
312
+ "type": "IMAGE",
313
+ "link": 85
314
+ }
315
+ ],
316
+ "outputs": [],
317
+ "properties": {
318
+ "cnr_id": "comfy-core",
319
+ "ver": "0.3.27"
320
+ },
321
+ "widgets_values": [
322
+ "ComfyUI",
323
+ ""
324
+ ]
325
+ },
326
+ {
327
+ "id": 23,
328
+ "type": "CLIPTextEncode",
329
+ "pos": [
330
+ 115,
331
+ -17
332
+ ],
333
+ "size": [
334
+ 422.84503173828125,
335
+ 164.31304931640625
336
+ ],
337
+ "flags": {},
338
+ "order": 4,
339
+ "mode": 0,
340
+ "inputs": [
341
+ {
342
+ "label": "clip",
343
+ "localized_name": "clip",
344
+ "name": "clip",
345
+ "type": "CLIP",
346
+ "link": 62
347
+ }
348
+ ],
349
+ "outputs": [
350
+ {
351
+ "label": "CONDITIONING",
352
+ "localized_name": "CONDITIONING",
353
+ "name": "CONDITIONING",
354
+ "type": "CONDITIONING",
355
+ "slot_index": 0,
356
+ "links": [
357
+ 41
358
+ ]
359
+ }
360
+ ],
361
+ "title": "CLIP Text Encode (Positive Prompt)",
362
+ "properties": {
363
+ "cnr_id": "comfy-core",
364
+ "ver": "0.3.27",
365
+ "Node name for S&R": "CLIPTextEncode"
366
+ },
367
+ "widgets_values": [
368
+ "ethereal fantasy concept art of A logo of 'MIT HAN Lab'. magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy"
369
+ ],
370
+ "color": "#232",
371
+ "bgcolor": "#353"
372
+ },
373
+ {
374
+ "id": 32,
375
+ "type": "VAELoader",
376
+ "pos": [
377
+ 630.5574951171875,
378
+ 280.441650390625
379
+ ],
380
+ "size": [
381
+ 315,
382
+ 58
383
+ ],
384
+ "flags": {},
385
+ "order": 1,
386
+ "mode": 0,
387
+ "inputs": [],
388
+ "outputs": [
389
+ {
390
+ "label": "VAE",
391
+ "localized_name": "VAE",
392
+ "name": "VAE",
393
+ "type": "VAE",
394
+ "slot_index": 0,
395
+ "links": [
396
+ 60,
397
+ 69
398
+ ]
399
+ }
400
+ ],
401
+ "properties": {
402
+ "cnr_id": "comfy-core",
403
+ "ver": "0.3.27",
404
+ "Node name for S&R": "VAELoader"
405
+ },
406
+ "widgets_values": [
407
+ "ae.safetensors"
408
+ ]
409
+ },
410
+ {
411
+ "id": 35,
412
+ "type": "InstructPixToPixConditioning",
413
+ "pos": [
414
+ 1008,
415
+ 118
416
+ ],
417
+ "size": [
418
+ 235.1999969482422,
419
+ 86
420
+ ],
421
+ "flags": {},
422
+ "order": 10,
423
+ "mode": 0,
424
+ "inputs": [
425
+ {
426
+ "label": "positive",
427
+ "localized_name": "positive",
428
+ "name": "positive",
429
+ "type": "CONDITIONING",
430
+ "link": 67
431
+ },
432
+ {
433
+ "label": "negative",
434
+ "localized_name": "negative",
435
+ "name": "negative",
436
+ "type": "CONDITIONING",
437
+ "link": 68
438
+ },
439
+ {
440
+ "label": "vae",
441
+ "localized_name": "vae",
442
+ "name": "vae",
443
+ "type": "VAE",
444
+ "link": 69
445
+ },
446
+ {
447
+ "label": "pixels",
448
+ "localized_name": "pixels",
449
+ "name": "pixels",
450
+ "type": "IMAGE",
451
+ "link": 94
452
+ }
453
+ ],
454
+ "outputs": [
455
+ {
456
+ "label": "positive",
457
+ "localized_name": "positive",
458
+ "name": "positive",
459
+ "type": "CONDITIONING",
460
+ "slot_index": 0,
461
+ "links": [
462
+ 64
463
+ ]
464
+ },
465
+ {
466
+ "label": "negative",
467
+ "localized_name": "negative",
468
+ "name": "negative",
469
+ "type": "CONDITIONING",
470
+ "slot_index": 1,
471
+ "links": [
472
+ 65
473
+ ]
474
+ },
475
+ {
476
+ "label": "latent",
477
+ "localized_name": "latent",
478
+ "name": "latent",
479
+ "type": "LATENT",
480
+ "slot_index": 2,
481
+ "links": [
482
+ 73
483
+ ]
484
+ }
485
+ ],
486
+ "properties": {
487
+ "cnr_id": "comfy-core",
488
+ "ver": "0.3.27",
489
+ "Node name for S&R": "InstructPixToPixConditioning"
490
+ },
491
+ "widgets_values": []
492
+ },
493
+ {
494
+ "id": 17,
495
+ "type": "LoadImage",
496
+ "pos": [
497
+ -152.99026489257812,
498
+ 409.8635559082031
499
+ ],
500
+ "size": [
501
+ 315,
502
+ 314.0000305175781
503
+ ],
504
+ "flags": {},
505
+ "order": 2,
506
+ "mode": 0,
507
+ "inputs": [],
508
+ "outputs": [
509
+ {
510
+ "label": "IMAGE",
511
+ "localized_name": "IMAGE",
512
+ "name": "IMAGE",
513
+ "shape": 3,
514
+ "type": "IMAGE",
515
+ "slot_index": 0,
516
+ "links": [
517
+ 82
518
+ ]
519
+ },
520
+ {
521
+ "label": "MASK",
522
+ "localized_name": "MASK",
523
+ "name": "MASK",
524
+ "shape": 3,
525
+ "type": "MASK",
526
+ "links": null
527
+ }
528
+ ],
529
+ "properties": {
530
+ "cnr_id": "comfy-core",
531
+ "ver": "0.3.27",
532
+ "Node name for S&R": "LoadImage"
533
+ },
534
+ "widgets_values": [
535
+ "logo_example.png",
536
+ "image",
537
+ ""
538
+ ]
539
+ },
540
+ {
541
+ "id": 42,
542
+ "type": "ImageScale",
543
+ "pos": [
544
+ 174.98765563964844,
545
+ 450.5818786621094
546
+ ],
547
+ "size": [
548
+ 315,
549
+ 130
550
+ ],
551
+ "flags": {},
552
+ "order": 6,
553
+ "mode": 0,
554
+ "inputs": [
555
+ {
556
+ "localized_name": "image",
557
+ "name": "image",
558
+ "type": "IMAGE",
559
+ "link": 82
560
+ }
561
+ ],
562
+ "outputs": [
563
+ {
564
+ "localized_name": "IMAGE",
565
+ "name": "IMAGE",
566
+ "type": "IMAGE",
567
+ "slot_index": 0,
568
+ "links": [
569
+ 92
570
+ ]
571
+ }
572
+ ],
573
+ "properties": {
574
+ "cnr_id": "comfy-core",
575
+ "ver": "0.3.27",
576
+ "Node name for S&R": "ImageScale"
577
+ },
578
+ "widgets_values": [
579
+ "nearest-exact",
580
+ 1024,
581
+ 1024,
582
+ "center"
583
+ ]
584
+ },
585
+ {
586
+ "id": 47,
587
+ "type": "DepthAnythingPreprocessor",
588
+ "pos": [
589
+ 601.0758666992188,
590
+ 474.25433349609375
591
+ ],
592
+ "size": [
593
+ 315,
594
+ 82
595
+ ],
596
+ "flags": {},
597
+ "order": 8,
598
+ "mode": 0,
599
+ "inputs": [
600
+ {
601
+ "localized_name": "image",
602
+ "name": "image",
603
+ "type": "IMAGE",
604
+ "link": 92
605
+ }
606
+ ],
607
+ "outputs": [
608
+ {
609
+ "localized_name": "IMAGE",
610
+ "name": "IMAGE",
611
+ "type": "IMAGE",
612
+ "links": [
613
+ 93,
614
+ 94
615
+ ]
616
+ }
617
+ ],
618
+ "properties": {
619
+ "cnr_id": "comfyui_controlnet_aux",
620
+ "ver": "1.0.7",
621
+ "Node name for S&R": "DepthAnythingPreprocessor"
622
+ },
623
+ "widgets_values": [
624
+ "depth_anything_vitl14.pth",
625
+ 1024
626
+ ]
627
+ },
628
+ {
629
+ "id": 49,
630
+ "type": "NunchakuFluxDiTLoader",
631
+ "pos": [
632
+ 963.892578125,
633
+ -199.60679626464844
634
+ ],
635
+ "size": [
636
+ 315,
637
+ 202
638
+ ],
639
+ "flags": {},
640
+ "order": 3,
641
+ "mode": 0,
642
+ "inputs": [],
643
+ "outputs": [
644
+ {
645
+ "localized_name": "MODEL",
646
+ "name": "MODEL",
647
+ "type": "MODEL",
648
+ "links": [
649
+ 95
650
+ ]
651
+ }
652
+ ],
653
+ "properties": {
654
+ "Node name for S&R": "NunchakuFluxDiTLoader"
655
+ },
656
+ "widgets_values": [
657
+ "svdq-int4-flux.1-depth-dev",
658
+ 0,
659
+ "nunchaku-fp16",
660
+ "auto",
661
+ 0,
662
+ "bfloat16",
663
+ "enabled"
664
+ ]
665
+ }
666
+ ],
667
+ "links": [
668
+ [
669
+ 7,
670
+ 3,
671
+ 0,
672
+ 8,
673
+ 0,
674
+ "LATENT"
675
+ ],
676
+ [
677
+ 41,
678
+ 23,
679
+ 0,
680
+ 26,
681
+ 0,
682
+ "CONDITIONING"
683
+ ],
684
+ [
685
+ 60,
686
+ 32,
687
+ 0,
688
+ 8,
689
+ 1,
690
+ "VAE"
691
+ ],
692
+ [
693
+ 62,
694
+ 34,
695
+ 0,
696
+ 23,
697
+ 0,
698
+ "CLIP"
699
+ ],
700
+ [
701
+ 63,
702
+ 34,
703
+ 0,
704
+ 7,
705
+ 0,
706
+ "CLIP"
707
+ ],
708
+ [
709
+ 64,
710
+ 35,
711
+ 0,
712
+ 3,
713
+ 1,
714
+ "CONDITIONING"
715
+ ],
716
+ [
717
+ 65,
718
+ 35,
719
+ 1,
720
+ 3,
721
+ 2,
722
+ "CONDITIONING"
723
+ ],
724
+ [
725
+ 67,
726
+ 26,
727
+ 0,
728
+ 35,
729
+ 0,
730
+ "CONDITIONING"
731
+ ],
732
+ [
733
+ 68,
734
+ 7,
735
+ 0,
736
+ 35,
737
+ 1,
738
+ "CONDITIONING"
739
+ ],
740
+ [
741
+ 69,
742
+ 32,
743
+ 0,
744
+ 35,
745
+ 2,
746
+ "VAE"
747
+ ],
748
+ [
749
+ 73,
750
+ 35,
751
+ 2,
752
+ 3,
753
+ 3,
754
+ "LATENT"
755
+ ],
756
+ [
757
+ 82,
758
+ 17,
759
+ 0,
760
+ 42,
761
+ 0,
762
+ "IMAGE"
763
+ ],
764
+ [
765
+ 85,
766
+ 8,
767
+ 0,
768
+ 44,
769
+ 0,
770
+ "IMAGE"
771
+ ],
772
+ [
773
+ 92,
774
+ 42,
775
+ 0,
776
+ 47,
777
+ 0,
778
+ "IMAGE"
779
+ ],
780
+ [
781
+ 93,
782
+ 47,
783
+ 0,
784
+ 43,
785
+ 0,
786
+ "IMAGE"
787
+ ],
788
+ [
789
+ 94,
790
+ 47,
791
+ 0,
792
+ 35,
793
+ 3,
794
+ "IMAGE"
795
+ ],
796
+ [
797
+ 95,
798
+ 49,
799
+ 0,
800
+ 3,
801
+ 0,
802
+ "MODEL"
803
+ ]
804
+ ],
805
+ "groups": [],
806
+ "config": {},
807
+ "extra": {
808
+ "ds": {
809
+ "scale": 0.8140274938684042,
810
+ "offset": [
811
+ 583.9452653400073,
812
+ 380.90044568833537
813
+ ]
814
+ },
815
+ "node_versions": {
816
+ "comfy-core": "0.3.24"
817
+ }
818
+ },
819
+ "version": 0.4
820
+ }
workflows/nunchaku-flux.1-dev-controlnet-union-pro.json ADDED
@@ -0,0 +1,1183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "69596aa1-f74a-4f0a-9930-d81e45864824",
3
+ "revision": 0,
4
+ "last_node_id": 26,
5
+ "last_link_id": 33,
6
+ "nodes": [
7
+ {
8
+ "id": 2,
9
+ "type": "VAEDecode",
10
+ "pos": [
11
+ 1095.8004150390625,
12
+ 691.8807373046875
13
+ ],
14
+ "size": [
15
+ 210,
16
+ 46
17
+ ],
18
+ "flags": {},
19
+ "order": 19,
20
+ "mode": 0,
21
+ "inputs": [
22
+ {
23
+ "localized_name": "samples",
24
+ "name": "samples",
25
+ "type": "LATENT",
26
+ "link": 2
27
+ },
28
+ {
29
+ "localized_name": "vae",
30
+ "name": "vae",
31
+ "type": "VAE",
32
+ "link": 3
33
+ }
34
+ ],
35
+ "outputs": [
36
+ {
37
+ "localized_name": "IMAGE",
38
+ "name": "IMAGE",
39
+ "type": "IMAGE",
40
+ "slot_index": 0,
41
+ "links": [
42
+ 4
43
+ ]
44
+ }
45
+ ],
46
+ "properties": {
47
+ "cnr_id": "comfy-core",
48
+ "ver": "0.3.27",
49
+ "Node name for S&R": "VAEDecode"
50
+ },
51
+ "widgets_values": []
52
+ },
53
+ {
54
+ "id": 3,
55
+ "type": "SaveImage",
56
+ "pos": [
57
+ 1512.8004150390625,
58
+ 484.8807067871094
59
+ ],
60
+ "size": [
61
+ 675.1023559570312,
62
+ 1063.478759765625
63
+ ],
64
+ "flags": {},
65
+ "order": 20,
66
+ "mode": 0,
67
+ "inputs": [
68
+ {
69
+ "localized_name": "images",
70
+ "name": "images",
71
+ "type": "IMAGE",
72
+ "link": 4
73
+ }
74
+ ],
75
+ "outputs": [],
76
+ "properties": {
77
+ "cnr_id": "comfy-core",
78
+ "ver": "0.3.27"
79
+ },
80
+ "widgets_values": [
81
+ "ComfyUI"
82
+ ]
83
+ },
84
+ {
85
+ "id": 5,
86
+ "type": "BasicScheduler",
87
+ "pos": [
88
+ 709.8004150390625,
89
+ 1332.8807373046875
90
+ ],
91
+ "size": [
92
+ 315,
93
+ 106
94
+ ],
95
+ "flags": {},
96
+ "order": 15,
97
+ "mode": 0,
98
+ "inputs": [
99
+ {
100
+ "localized_name": "model",
101
+ "name": "model",
102
+ "type": "MODEL",
103
+ "link": 10
104
+ }
105
+ ],
106
+ "outputs": [
107
+ {
108
+ "localized_name": "SIGMAS",
109
+ "name": "SIGMAS",
110
+ "shape": 3,
111
+ "type": "SIGMAS",
112
+ "links": [
113
+ 8
114
+ ]
115
+ }
116
+ ],
117
+ "properties": {
118
+ "cnr_id": "comfy-core",
119
+ "ver": "0.3.27",
120
+ "Node name for S&R": "BasicScheduler"
121
+ },
122
+ "widgets_values": [
123
+ "simple",
124
+ 28,
125
+ 1
126
+ ]
127
+ },
128
+ {
129
+ "id": 6,
130
+ "type": "BasicGuider",
131
+ "pos": [
132
+ 667.8004150390625,
133
+ 381.8807067871094
134
+ ],
135
+ "size": [
136
+ 222.3482666015625,
137
+ 46
138
+ ],
139
+ "flags": {},
140
+ "order": 17,
141
+ "mode": 0,
142
+ "inputs": [
143
+ {
144
+ "localized_name": "model",
145
+ "name": "model",
146
+ "type": "MODEL",
147
+ "link": 11
148
+ },
149
+ {
150
+ "localized_name": "conditioning",
151
+ "name": "conditioning",
152
+ "type": "CONDITIONING",
153
+ "link": 12
154
+ }
155
+ ],
156
+ "outputs": [
157
+ {
158
+ "localized_name": "GUIDER",
159
+ "name": "GUIDER",
160
+ "shape": 3,
161
+ "type": "GUIDER",
162
+ "slot_index": 0,
163
+ "links": [
164
+ 6
165
+ ]
166
+ }
167
+ ],
168
+ "properties": {
169
+ "cnr_id": "comfy-core",
170
+ "ver": "0.3.27",
171
+ "Node name for S&R": "BasicGuider"
172
+ },
173
+ "widgets_values": []
174
+ },
175
+ {
176
+ "id": 9,
177
+ "type": "EmptySD3LatentImage",
178
+ "pos": [
179
+ 709.8004150390625,
180
+ 948.8807373046875
181
+ ],
182
+ "size": [
183
+ 315,
184
+ 106
185
+ ],
186
+ "flags": {},
187
+ "order": 11,
188
+ "mode": 0,
189
+ "inputs": [
190
+ {
191
+ "name": "width",
192
+ "type": "INT",
193
+ "widget": {
194
+ "name": "width"
195
+ },
196
+ "link": 14
197
+ },
198
+ {
199
+ "name": "height",
200
+ "type": "INT",
201
+ "widget": {
202
+ "name": "height"
203
+ },
204
+ "link": 15
205
+ }
206
+ ],
207
+ "outputs": [
208
+ {
209
+ "localized_name": "LATENT",
210
+ "name": "LATENT",
211
+ "shape": 3,
212
+ "type": "LATENT",
213
+ "slot_index": 0,
214
+ "links": [
215
+ 9
216
+ ]
217
+ }
218
+ ],
219
+ "properties": {
220
+ "cnr_id": "comfy-core",
221
+ "ver": "0.3.27",
222
+ "Node name for S&R": "EmptySD3LatentImage"
223
+ },
224
+ "widgets_values": [
225
+ 800,
226
+ 1200,
227
+ 1
228
+ ]
229
+ },
230
+ {
231
+ "id": 11,
232
+ "type": "ModelSamplingFlux",
233
+ "pos": [
234
+ 709.8004150390625,
235
+ 1476.8807373046875
236
+ ],
237
+ "size": [
238
+ 315,
239
+ 130
240
+ ],
241
+ "flags": {},
242
+ "order": 13,
243
+ "mode": 0,
244
+ "inputs": [
245
+ {
246
+ "localized_name": "model",
247
+ "name": "model",
248
+ "type": "MODEL",
249
+ "link": 33
250
+ },
251
+ {
252
+ "name": "width",
253
+ "type": "INT",
254
+ "widget": {
255
+ "name": "width"
256
+ },
257
+ "link": 17
258
+ },
259
+ {
260
+ "name": "height",
261
+ "type": "INT",
262
+ "widget": {
263
+ "name": "height"
264
+ },
265
+ "link": 18
266
+ }
267
+ ],
268
+ "outputs": [
269
+ {
270
+ "localized_name": "MODEL",
271
+ "name": "MODEL",
272
+ "shape": 3,
273
+ "type": "MODEL",
274
+ "slot_index": 0,
275
+ "links": [
276
+ 10,
277
+ 11
278
+ ]
279
+ }
280
+ ],
281
+ "properties": {
282
+ "cnr_id": "comfy-core",
283
+ "ver": "0.3.27",
284
+ "Node name for S&R": "ModelSamplingFlux"
285
+ },
286
+ "widgets_values": [
287
+ 1.15,
288
+ 0.5,
289
+ 800,
290
+ 1200
291
+ ]
292
+ },
293
+ {
294
+ "id": 13,
295
+ "type": "PrimitiveNode",
296
+ "pos": [
297
+ 901.8004150390625,
298
+ 804.8807373046875
299
+ ],
300
+ "size": [
301
+ 210,
302
+ 82
303
+ ],
304
+ "flags": {},
305
+ "order": 0,
306
+ "mode": 0,
307
+ "inputs": [],
308
+ "outputs": [
309
+ {
310
+ "name": "INT",
311
+ "type": "INT",
312
+ "widget": {
313
+ "name": "height"
314
+ },
315
+ "slot_index": 0,
316
+ "links": [
317
+ 15,
318
+ 18
319
+ ]
320
+ }
321
+ ],
322
+ "title": "height",
323
+ "properties": {
324
+ "Run widget replace on values": false
325
+ },
326
+ "widgets_values": [
327
+ 1200,
328
+ "fixed"
329
+ ],
330
+ "color": "#323",
331
+ "bgcolor": "#535"
332
+ },
333
+ {
334
+ "id": 16,
335
+ "type": "DualCLIPLoader",
336
+ "pos": [
337
+ 199.80039978027344,
338
+ 608.8807373046875
339
+ ],
340
+ "size": [
341
+ 315,
342
+ 122
343
+ ],
344
+ "flags": {},
345
+ "order": 1,
346
+ "mode": 0,
347
+ "inputs": [],
348
+ "outputs": [
349
+ {
350
+ "localized_name": "CLIP",
351
+ "name": "CLIP",
352
+ "shape": 3,
353
+ "type": "CLIP",
354
+ "slot_index": 0,
355
+ "links": [
356
+ 1,
357
+ 19
358
+ ]
359
+ }
360
+ ],
361
+ "properties": {
362
+ "cnr_id": "comfy-core",
363
+ "ver": "0.3.27",
364
+ "Node name for S&R": "DualCLIPLoader"
365
+ },
366
+ "widgets_values": [
367
+ "t5xxl_fp16.safetensors",
368
+ "clip_l.safetensors",
369
+ "flux",
370
+ "default"
371
+ ]
372
+ },
373
+ {
374
+ "id": 17,
375
+ "type": "VAELoader",
376
+ "pos": [
377
+ 261.2820129394531,
378
+ 794.1793823242188
379
+ ],
380
+ "size": [
381
+ 311.81634521484375,
382
+ 60.429901123046875
383
+ ],
384
+ "flags": {},
385
+ "order": 2,
386
+ "mode": 0,
387
+ "inputs": [],
388
+ "outputs": [
389
+ {
390
+ "localized_name": "VAE",
391
+ "name": "VAE",
392
+ "shape": 3,
393
+ "type": "VAE",
394
+ "slot_index": 0,
395
+ "links": [
396
+ 3,
397
+ 23,
398
+ 30
399
+ ]
400
+ }
401
+ ],
402
+ "properties": {
403
+ "cnr_id": "comfy-core",
404
+ "ver": "0.3.27",
405
+ "Node name for S&R": "VAELoader"
406
+ },
407
+ "widgets_values": [
408
+ "ae.safetensors"
409
+ ]
410
+ },
411
+ {
412
+ "id": 18,
413
+ "type": "CLIPTextEncode",
414
+ "pos": [
415
+ 641.6124877929688,
416
+ 683.3572387695312
417
+ ],
418
+ "size": [
419
+ 285.6000061035156,
420
+ 88
421
+ ],
422
+ "flags": {},
423
+ "order": 10,
424
+ "mode": 0,
425
+ "inputs": [
426
+ {
427
+ "localized_name": "clip",
428
+ "name": "clip",
429
+ "type": "CLIP",
430
+ "link": 19
431
+ }
432
+ ],
433
+ "outputs": [
434
+ {
435
+ "localized_name": "CONDITIONING",
436
+ "name": "CONDITIONING",
437
+ "type": "CONDITIONING",
438
+ "slot_index": 0,
439
+ "links": [
440
+ 21,
441
+ 28
442
+ ]
443
+ }
444
+ ],
445
+ "title": "CLIP Text Encode (Negative Prompt)",
446
+ "properties": {
447
+ "cnr_id": "comfy-core",
448
+ "ver": "0.3.27",
449
+ "Node name for S&R": "CLIPTextEncode"
450
+ },
451
+ "widgets_values": [
452
+ ""
453
+ ],
454
+ "color": "#322",
455
+ "bgcolor": "#533"
456
+ },
457
+ {
458
+ "id": 19,
459
+ "type": "LoadImage",
460
+ "pos": [
461
+ 1117.89501953125,
462
+ 1067.73779296875
463
+ ],
464
+ "size": [
465
+ 315,
466
+ 314
467
+ ],
468
+ "flags": {},
469
+ "order": 3,
470
+ "mode": 0,
471
+ "inputs": [],
472
+ "outputs": [
473
+ {
474
+ "localized_name": "IMAGE",
475
+ "name": "IMAGE",
476
+ "shape": 3,
477
+ "type": "IMAGE",
478
+ "slot_index": 0,
479
+ "links": [
480
+ 24,
481
+ 31
482
+ ]
483
+ },
484
+ {
485
+ "localized_name": "MASK",
486
+ "name": "MASK",
487
+ "shape": 3,
488
+ "type": "MASK",
489
+ "links": null
490
+ }
491
+ ],
492
+ "properties": {
493
+ "cnr_id": "comfy-core",
494
+ "ver": "0.3.27",
495
+ "Node name for S&R": "LoadImage"
496
+ },
497
+ "widgets_values": [
498
+ "BwuOtgY_d.webp",
499
+ "image",
500
+ ""
501
+ ]
502
+ },
503
+ {
504
+ "id": 21,
505
+ "type": "KSamplerSelect",
506
+ "pos": [
507
+ 718.7679443359375,
508
+ 1227.4521484375
509
+ ],
510
+ "size": [
511
+ 315,
512
+ 58
513
+ ],
514
+ "flags": {},
515
+ "order": 4,
516
+ "mode": 0,
517
+ "inputs": [],
518
+ "outputs": [
519
+ {
520
+ "localized_name": "SAMPLER",
521
+ "name": "SAMPLER",
522
+ "shape": 3,
523
+ "type": "SAMPLER",
524
+ "links": [
525
+ 7
526
+ ]
527
+ }
528
+ ],
529
+ "properties": {
530
+ "cnr_id": "comfy-core",
531
+ "ver": "0.3.27",
532
+ "Node name for S&R": "KSamplerSelect"
533
+ },
534
+ "widgets_values": [
535
+ "euler"
536
+ ]
537
+ },
538
+ {
539
+ "id": 1,
540
+ "type": "CLIPTextEncode",
541
+ "pos": [
542
+ 599.8004150390625,
543
+ 473.8807067871094
544
+ ],
545
+ "size": [
546
+ 422.84503173828125,
547
+ 164.31304931640625
548
+ ],
549
+ "flags": {},
550
+ "order": 9,
551
+ "mode": 0,
552
+ "inputs": [
553
+ {
554
+ "localized_name": "clip",
555
+ "name": "clip",
556
+ "type": "CLIP",
557
+ "link": 1
558
+ }
559
+ ],
560
+ "outputs": [
561
+ {
562
+ "localized_name": "CONDITIONING",
563
+ "name": "CONDITIONING",
564
+ "type": "CONDITIONING",
565
+ "slot_index": 0,
566
+ "links": [
567
+ 20,
568
+ 27
569
+ ]
570
+ }
571
+ ],
572
+ "title": "CLIP Text Encode (Positive Prompt)",
573
+ "properties": {
574
+ "cnr_id": "comfy-core",
575
+ "ver": "0.3.27",
576
+ "Node name for S&R": "CLIPTextEncode"
577
+ },
578
+ "widgets_values": [
579
+ "A whimsical fantasy scene featuring a towering, ancient tree house nestled within a massive, glowing mushroom. The mushroom cap forms the roof, illuminating the surroundings with a warm, golden light. The tree’s gnarled branches are intertwined with smaller mushrooms, each with glowing windows and doors, creating a multi-level dwelling. The base of the tree is surrounded by lush moss, tiny glowing flowers, and a stone pathway leading to the entrance. In the background, a misty forest with cascading waterfalls enhances the magical atmosphere, while the night sky sparkles faintly with distant stars. It is a masterpiece."
580
+ ],
581
+ "color": "#232",
582
+ "bgcolor": "#353"
583
+ },
584
+ {
585
+ "id": 22,
586
+ "type": "SetUnionControlNetType",
587
+ "pos": [
588
+ 697.7350463867188,
589
+ 1675.937744140625
590
+ ],
591
+ "size": [
592
+ 315,
593
+ 58
594
+ ],
595
+ "flags": {},
596
+ "order": 12,
597
+ "mode": 0,
598
+ "inputs": [
599
+ {
600
+ "localized_name": "control_net",
601
+ "name": "control_net",
602
+ "type": "CONTROL_NET",
603
+ "link": 25
604
+ }
605
+ ],
606
+ "outputs": [
607
+ {
608
+ "localized_name": "CONTROL_NET",
609
+ "name": "CONTROL_NET",
610
+ "type": "CONTROL_NET",
611
+ "links": [
612
+ 22,
613
+ 29
614
+ ]
615
+ }
616
+ ],
617
+ "properties": {
618
+ "cnr_id": "comfy-core",
619
+ "ver": "0.3.27",
620
+ "Node name for S&R": "SetUnionControlNetType"
621
+ },
622
+ "widgets_values": [
623
+ "depth"
624
+ ]
625
+ },
626
+ {
627
+ "id": 8,
628
+ "type": "FluxGuidance",
629
+ "pos": [
630
+ 1165.6083984375,
631
+ 379.4834289550781
632
+ ],
633
+ "size": [
634
+ 317.4000244140625,
635
+ 58
636
+ ],
637
+ "flags": {},
638
+ "order": 16,
639
+ "mode": 0,
640
+ "inputs": [
641
+ {
642
+ "localized_name": "conditioning",
643
+ "name": "conditioning",
644
+ "type": "CONDITIONING",
645
+ "link": 32
646
+ }
647
+ ],
648
+ "outputs": [
649
+ {
650
+ "localized_name": "CONDITIONING",
651
+ "name": "CONDITIONING",
652
+ "shape": 3,
653
+ "type": "CONDITIONING",
654
+ "slot_index": 0,
655
+ "links": [
656
+ 12
657
+ ]
658
+ }
659
+ ],
660
+ "properties": {
661
+ "cnr_id": "comfy-core",
662
+ "ver": "0.3.27",
663
+ "Node name for S&R": "FluxGuidance"
664
+ },
665
+ "widgets_values": [
666
+ 3.5
667
+ ],
668
+ "color": "#233",
669
+ "bgcolor": "#355"
670
+ },
671
+ {
672
+ "id": 4,
673
+ "type": "SamplerCustomAdvanced",
674
+ "pos": [
675
+ 1106.258056640625,
676
+ 511.3636474609375
677
+ ],
678
+ "size": [
679
+ 272.3617858886719,
680
+ 124.53733825683594
681
+ ],
682
+ "flags": {},
683
+ "order": 18,
684
+ "mode": 0,
685
+ "inputs": [
686
+ {
687
+ "localized_name": "noise",
688
+ "name": "noise",
689
+ "type": "NOISE",
690
+ "link": 5
691
+ },
692
+ {
693
+ "localized_name": "guider",
694
+ "name": "guider",
695
+ "type": "GUIDER",
696
+ "link": 6
697
+ },
698
+ {
699
+ "localized_name": "sampler",
700
+ "name": "sampler",
701
+ "type": "SAMPLER",
702
+ "link": 7
703
+ },
704
+ {
705
+ "localized_name": "sigmas",
706
+ "name": "sigmas",
707
+ "type": "SIGMAS",
708
+ "link": 8
709
+ },
710
+ {
711
+ "localized_name": "latent_image",
712
+ "name": "latent_image",
713
+ "type": "LATENT",
714
+ "link": 9
715
+ }
716
+ ],
717
+ "outputs": [
718
+ {
719
+ "localized_name": "output",
720
+ "name": "output",
721
+ "shape": 3,
722
+ "type": "LATENT",
723
+ "slot_index": 0,
724
+ "links": [
725
+ 2
726
+ ]
727
+ },
728
+ {
729
+ "localized_name": "denoised_output",
730
+ "name": "denoised_output",
731
+ "shape": 3,
732
+ "type": "LATENT",
733
+ "links": null
734
+ }
735
+ ],
736
+ "properties": {
737
+ "cnr_id": "comfy-core",
738
+ "ver": "0.3.27",
739
+ "Node name for S&R": "SamplerCustomAdvanced"
740
+ },
741
+ "widgets_values": []
742
+ },
743
+ {
744
+ "id": 25,
745
+ "type": "ControlNetApplyAdvanced",
746
+ "pos": [
747
+ 1143.806884765625,
748
+ 806.5957641601562
749
+ ],
750
+ "size": [
751
+ 315,
752
+ 186
753
+ ],
754
+ "flags": {},
755
+ "order": 14,
756
+ "mode": 0,
757
+ "inputs": [
758
+ {
759
+ "localized_name": "positive",
760
+ "name": "positive",
761
+ "type": "CONDITIONING",
762
+ "link": 27
763
+ },
764
+ {
765
+ "localized_name": "negative",
766
+ "name": "negative",
767
+ "type": "CONDITIONING",
768
+ "link": 28
769
+ },
770
+ {
771
+ "localized_name": "control_net",
772
+ "name": "control_net",
773
+ "type": "CONTROL_NET",
774
+ "link": 29
775
+ },
776
+ {
777
+ "localized_name": "image",
778
+ "name": "image",
779
+ "type": "IMAGE",
780
+ "link": 31
781
+ },
782
+ {
783
+ "localized_name": "vae",
784
+ "name": "vae",
785
+ "shape": 7,
786
+ "type": "VAE",
787
+ "link": 30
788
+ }
789
+ ],
790
+ "outputs": [
791
+ {
792
+ "localized_name": "positive",
793
+ "name": "positive",
794
+ "type": "CONDITIONING",
795
+ "links": [
796
+ 32
797
+ ]
798
+ },
799
+ {
800
+ "localized_name": "negative",
801
+ "name": "negative",
802
+ "type": "CONDITIONING",
803
+ "links": null
804
+ }
805
+ ],
806
+ "properties": {
807
+ "cnr_id": "comfy-core",
808
+ "ver": "0.3.27",
809
+ "Node name for S&R": "ControlNetApplyAdvanced"
810
+ },
811
+ "widgets_values": [
812
+ 0.6000000000000001,
813
+ 0,
814
+ 0.4000000000000001
815
+ ]
816
+ },
817
+ {
818
+ "id": 7,
819
+ "type": "RandomNoise",
820
+ "pos": [
821
+ 709.8004150390625,
822
+ 1092.8807373046875
823
+ ],
824
+ "size": [
825
+ 315,
826
+ 82
827
+ ],
828
+ "flags": {},
829
+ "order": 5,
830
+ "mode": 0,
831
+ "inputs": [],
832
+ "outputs": [
833
+ {
834
+ "localized_name": "NOISE",
835
+ "name": "NOISE",
836
+ "shape": 3,
837
+ "type": "NOISE",
838
+ "links": [
839
+ 5
840
+ ]
841
+ }
842
+ ],
843
+ "properties": {
844
+ "cnr_id": "comfy-core",
845
+ "ver": "0.3.27",
846
+ "Node name for S&R": "RandomNoise"
847
+ },
848
+ "widgets_values": [
849
+ 526841747880726,
850
+ "fixed"
851
+ ],
852
+ "color": "#2a363b",
853
+ "bgcolor": "#3f5159"
854
+ },
855
+ {
856
+ "id": 12,
857
+ "type": "PrimitiveNode",
858
+ "pos": [
859
+ 661.8004150390625,
860
+ 813.2188110351562
861
+ ],
862
+ "size": [
863
+ 210,
864
+ 82
865
+ ],
866
+ "flags": {},
867
+ "order": 6,
868
+ "mode": 0,
869
+ "inputs": [],
870
+ "outputs": [
871
+ {
872
+ "name": "INT",
873
+ "type": "INT",
874
+ "widget": {
875
+ "name": "width"
876
+ },
877
+ "slot_index": 0,
878
+ "links": [
879
+ 14,
880
+ 17
881
+ ]
882
+ }
883
+ ],
884
+ "title": "width",
885
+ "properties": {
886
+ "Run widget replace on values": false
887
+ },
888
+ "widgets_values": [
889
+ 800,
890
+ "fixed"
891
+ ],
892
+ "color": "#323",
893
+ "bgcolor": "#535"
894
+ },
895
+ {
896
+ "id": 23,
897
+ "type": "ControlNetLoader",
898
+ "pos": [
899
+ 306.9288024902344,
900
+ 1231.8907470703125
901
+ ],
902
+ "size": [
903
+ 315,
904
+ 58
905
+ ],
906
+ "flags": {},
907
+ "order": 7,
908
+ "mode": 0,
909
+ "inputs": [],
910
+ "outputs": [
911
+ {
912
+ "label": "ControlNet",
913
+ "localized_name": "CONTROL_NET",
914
+ "name": "CONTROL_NET",
915
+ "type": "CONTROL_NET",
916
+ "links": [
917
+ 25
918
+ ]
919
+ }
920
+ ],
921
+ "properties": {
922
+ "cnr_id": "comfy-core",
923
+ "ver": "0.3.27",
924
+ "Node name for S&R": "ControlNetLoader"
925
+ },
926
+ "widgets_values": [
927
+ "controlnet_union.safetensors"
928
+ ]
929
+ },
930
+ {
931
+ "id": 26,
932
+ "type": "NunchakuFluxDiTLoader",
933
+ "pos": [
934
+ 309.328125,
935
+ 964.0291748046875
936
+ ],
937
+ "size": [
938
+ 315,
939
+ 202
940
+ ],
941
+ "flags": {},
942
+ "order": 8,
943
+ "mode": 0,
944
+ "inputs": [],
945
+ "outputs": [
946
+ {
947
+ "localized_name": "MODEL",
948
+ "name": "MODEL",
949
+ "type": "MODEL",
950
+ "links": [
951
+ 33
952
+ ]
953
+ }
954
+ ],
955
+ "properties": {
956
+ "Node name for S&R": "NunchakuFluxDiTLoader"
957
+ },
958
+ "widgets_values": [
959
+ "svdq-int4-flux.1-dev",
960
+ 0,
961
+ "nunchaku-fp16",
962
+ "auto",
963
+ 0,
964
+ "bfloat16",
965
+ "enabled"
966
+ ]
967
+ }
968
+ ],
969
+ "links": [
970
+ [
971
+ 1,
972
+ 16,
973
+ 0,
974
+ 1,
975
+ 0,
976
+ "CLIP"
977
+ ],
978
+ [
979
+ 2,
980
+ 4,
981
+ 0,
982
+ 2,
983
+ 0,
984
+ "LATENT"
985
+ ],
986
+ [
987
+ 3,
988
+ 17,
989
+ 0,
990
+ 2,
991
+ 1,
992
+ "VAE"
993
+ ],
994
+ [
995
+ 4,
996
+ 2,
997
+ 0,
998
+ 3,
999
+ 0,
1000
+ "IMAGE"
1001
+ ],
1002
+ [
1003
+ 5,
1004
+ 7,
1005
+ 0,
1006
+ 4,
1007
+ 0,
1008
+ "NOISE"
1009
+ ],
1010
+ [
1011
+ 6,
1012
+ 6,
1013
+ 0,
1014
+ 4,
1015
+ 1,
1016
+ "GUIDER"
1017
+ ],
1018
+ [
1019
+ 7,
1020
+ 21,
1021
+ 0,
1022
+ 4,
1023
+ 2,
1024
+ "SAMPLER"
1025
+ ],
1026
+ [
1027
+ 8,
1028
+ 5,
1029
+ 0,
1030
+ 4,
1031
+ 3,
1032
+ "SIGMAS"
1033
+ ],
1034
+ [
1035
+ 9,
1036
+ 9,
1037
+ 0,
1038
+ 4,
1039
+ 4,
1040
+ "LATENT"
1041
+ ],
1042
+ [
1043
+ 10,
1044
+ 11,
1045
+ 0,
1046
+ 5,
1047
+ 0,
1048
+ "MODEL"
1049
+ ],
1050
+ [
1051
+ 11,
1052
+ 11,
1053
+ 0,
1054
+ 6,
1055
+ 0,
1056
+ "MODEL"
1057
+ ],
1058
+ [
1059
+ 12,
1060
+ 8,
1061
+ 0,
1062
+ 6,
1063
+ 1,
1064
+ "CONDITIONING"
1065
+ ],
1066
+ [
1067
+ 14,
1068
+ 12,
1069
+ 0,
1070
+ 9,
1071
+ 0,
1072
+ "INT"
1073
+ ],
1074
+ [
1075
+ 15,
1076
+ 13,
1077
+ 0,
1078
+ 9,
1079
+ 1,
1080
+ "INT"
1081
+ ],
1082
+ [
1083
+ 17,
1084
+ 12,
1085
+ 0,
1086
+ 11,
1087
+ 1,
1088
+ "INT"
1089
+ ],
1090
+ [
1091
+ 18,
1092
+ 13,
1093
+ 0,
1094
+ 11,
1095
+ 2,
1096
+ "INT"
1097
+ ],
1098
+ [
1099
+ 19,
1100
+ 16,
1101
+ 0,
1102
+ 18,
1103
+ 0,
1104
+ "CLIP"
1105
+ ],
1106
+ [
1107
+ 25,
1108
+ 23,
1109
+ 0,
1110
+ 22,
1111
+ 0,
1112
+ "CONTROL_NET"
1113
+ ],
1114
+ [
1115
+ 27,
1116
+ 1,
1117
+ 0,
1118
+ 25,
1119
+ 0,
1120
+ "CONDITIONING"
1121
+ ],
1122
+ [
1123
+ 28,
1124
+ 18,
1125
+ 0,
1126
+ 25,
1127
+ 1,
1128
+ "CONDITIONING"
1129
+ ],
1130
+ [
1131
+ 29,
1132
+ 22,
1133
+ 0,
1134
+ 25,
1135
+ 2,
1136
+ "CONTROL_NET"
1137
+ ],
1138
+ [
1139
+ 30,
1140
+ 17,
1141
+ 0,
1142
+ 25,
1143
+ 4,
1144
+ "VAE"
1145
+ ],
1146
+ [
1147
+ 31,
1148
+ 19,
1149
+ 0,
1150
+ 25,
1151
+ 3,
1152
+ "IMAGE"
1153
+ ],
1154
+ [
1155
+ 32,
1156
+ 25,
1157
+ 0,
1158
+ 8,
1159
+ 0,
1160
+ "CONDITIONING"
1161
+ ],
1162
+ [
1163
+ 33,
1164
+ 26,
1165
+ 0,
1166
+ 11,
1167
+ 0,
1168
+ "MODEL"
1169
+ ]
1170
+ ],
1171
+ "groups": [],
1172
+ "config": {},
1173
+ "extra": {
1174
+ "ds": {
1175
+ "scale": 0.762776844438556,
1176
+ "offset": [
1177
+ 1222.8058856929722,
1178
+ -406.9795149808618
1179
+ ]
1180
+ }
1181
+ },
1182
+ "version": 0.4
1183
+ }
workflows/nunchaku-flux.1-dev.json ADDED
@@ -0,0 +1,1169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "f253212e-0ec7-40c5-9671-bafc52d66023",
3
+ "revision": 0,
4
+ "last_node_id": 47,
5
+ "last_link_id": 130,
6
+ "nodes": [
7
+ {
8
+ "id": 26,
9
+ "type": "FluxGuidance",
10
+ "pos": [
11
+ 533.9339599609375,
12
+ 118.7322998046875
13
+ ],
14
+ "size": [
15
+ 317.4000244140625,
16
+ 58
17
+ ],
18
+ "flags": {},
19
+ "order": 10,
20
+ "mode": 0,
21
+ "inputs": [
22
+ {
23
+ "localized_name": "conditioning",
24
+ "name": "conditioning",
25
+ "type": "CONDITIONING",
26
+ "link": 41
27
+ }
28
+ ],
29
+ "outputs": [
30
+ {
31
+ "localized_name": "CONDITIONING",
32
+ "name": "CONDITIONING",
33
+ "shape": 3,
34
+ "type": "CONDITIONING",
35
+ "slot_index": 0,
36
+ "links": [
37
+ 42
38
+ ]
39
+ }
40
+ ],
41
+ "properties": {
42
+ "cnr_id": "comfy-core",
43
+ "ver": "0.3.24",
44
+ "Node name for S&R": "FluxGuidance"
45
+ },
46
+ "widgets_values": [
47
+ 3.5
48
+ ],
49
+ "color": "#233",
50
+ "bgcolor": "#355"
51
+ },
52
+ {
53
+ "id": 16,
54
+ "type": "KSamplerSelect",
55
+ "pos": [
56
+ 813.7789306640625,
57
+ 847.5765991210938
58
+ ],
59
+ "size": [
60
+ 315,
61
+ 58
62
+ ],
63
+ "flags": {},
64
+ "order": 0,
65
+ "mode": 0,
66
+ "inputs": [],
67
+ "outputs": [
68
+ {
69
+ "localized_name": "SAMPLER",
70
+ "name": "SAMPLER",
71
+ "shape": 3,
72
+ "type": "SAMPLER",
73
+ "links": [
74
+ 19
75
+ ]
76
+ }
77
+ ],
78
+ "properties": {
79
+ "cnr_id": "comfy-core",
80
+ "ver": "0.3.24",
81
+ "Node name for S&R": "KSamplerSelect"
82
+ },
83
+ "widgets_values": [
84
+ "euler"
85
+ ]
86
+ },
87
+ {
88
+ "id": 8,
89
+ "type": "VAEDecode",
90
+ "pos": [
91
+ 938.151611328125,
92
+ 299.3258056640625
93
+ ],
94
+ "size": [
95
+ 210,
96
+ 46
97
+ ],
98
+ "flags": {},
99
+ "order": 16,
100
+ "mode": 0,
101
+ "inputs": [
102
+ {
103
+ "localized_name": "samples",
104
+ "name": "samples",
105
+ "type": "LATENT",
106
+ "link": 24
107
+ },
108
+ {
109
+ "localized_name": "vae",
110
+ "name": "vae",
111
+ "type": "VAE",
112
+ "link": 12
113
+ }
114
+ ],
115
+ "outputs": [
116
+ {
117
+ "localized_name": "IMAGE",
118
+ "name": "IMAGE",
119
+ "type": "IMAGE",
120
+ "slot_index": 0,
121
+ "links": [
122
+ 9
123
+ ]
124
+ }
125
+ ],
126
+ "properties": {
127
+ "cnr_id": "comfy-core",
128
+ "ver": "0.3.24",
129
+ "Node name for S&R": "VAEDecode"
130
+ },
131
+ "widgets_values": []
132
+ },
133
+ {
134
+ "id": 22,
135
+ "type": "BasicGuider",
136
+ "pos": [
137
+ 691.55615234375,
138
+ 303.7747497558594
139
+ ],
140
+ "size": [
141
+ 222.3482666015625,
142
+ 46
143
+ ],
144
+ "flags": {},
145
+ "order": 13,
146
+ "mode": 0,
147
+ "inputs": [
148
+ {
149
+ "localized_name": "model",
150
+ "name": "model",
151
+ "type": "MODEL",
152
+ "link": 54
153
+ },
154
+ {
155
+ "localized_name": "conditioning",
156
+ "name": "conditioning",
157
+ "type": "CONDITIONING",
158
+ "link": 42
159
+ }
160
+ ],
161
+ "outputs": [
162
+ {
163
+ "localized_name": "GUIDER",
164
+ "name": "GUIDER",
165
+ "shape": 3,
166
+ "type": "GUIDER",
167
+ "slot_index": 0,
168
+ "links": [
169
+ 30
170
+ ]
171
+ }
172
+ ],
173
+ "properties": {
174
+ "cnr_id": "comfy-core",
175
+ "ver": "0.3.24",
176
+ "Node name for S&R": "BasicGuider"
177
+ },
178
+ "widgets_values": []
179
+ },
180
+ {
181
+ "id": 27,
182
+ "type": "EmptySD3LatentImage",
183
+ "pos": [
184
+ 825.0562133789062,
185
+ 526.280029296875
186
+ ],
187
+ "size": [
188
+ 315,
189
+ 126
190
+ ],
191
+ "flags": {},
192
+ "order": 7,
193
+ "mode": 0,
194
+ "inputs": [
195
+ {
196
+ "name": "width",
197
+ "type": "INT",
198
+ "widget": {
199
+ "name": "width"
200
+ },
201
+ "link": 112
202
+ },
203
+ {
204
+ "name": "height",
205
+ "type": "INT",
206
+ "widget": {
207
+ "name": "height"
208
+ },
209
+ "link": 113
210
+ }
211
+ ],
212
+ "outputs": [
213
+ {
214
+ "localized_name": "LATENT",
215
+ "name": "LATENT",
216
+ "shape": 3,
217
+ "type": "LATENT",
218
+ "slot_index": 0,
219
+ "links": [
220
+ 116
221
+ ]
222
+ }
223
+ ],
224
+ "properties": {
225
+ "cnr_id": "comfy-core",
226
+ "ver": "0.3.24",
227
+ "Node name for S&R": "EmptySD3LatentImage"
228
+ },
229
+ "widgets_values": [
230
+ 1024,
231
+ 1024,
232
+ 1
233
+ ]
234
+ },
235
+ {
236
+ "id": 13,
237
+ "type": "SamplerCustomAdvanced",
238
+ "pos": [
239
+ 867.9028930664062,
240
+ 126.43718719482422
241
+ ],
242
+ "size": [
243
+ 272.3617858886719,
244
+ 124.53733825683594
245
+ ],
246
+ "flags": {},
247
+ "order": 15,
248
+ "mode": 0,
249
+ "inputs": [
250
+ {
251
+ "localized_name": "noise",
252
+ "name": "noise",
253
+ "type": "NOISE",
254
+ "link": 37
255
+ },
256
+ {
257
+ "localized_name": "guider",
258
+ "name": "guider",
259
+ "type": "GUIDER",
260
+ "link": 30
261
+ },
262
+ {
263
+ "localized_name": "sampler",
264
+ "name": "sampler",
265
+ "type": "SAMPLER",
266
+ "link": 19
267
+ },
268
+ {
269
+ "localized_name": "sigmas",
270
+ "name": "sigmas",
271
+ "type": "SIGMAS",
272
+ "link": 20
273
+ },
274
+ {
275
+ "localized_name": "latent_image",
276
+ "name": "latent_image",
277
+ "type": "LATENT",
278
+ "link": 116
279
+ }
280
+ ],
281
+ "outputs": [
282
+ {
283
+ "localized_name": "output",
284
+ "name": "output",
285
+ "shape": 3,
286
+ "type": "LATENT",
287
+ "slot_index": 0,
288
+ "links": [
289
+ 24
290
+ ]
291
+ },
292
+ {
293
+ "localized_name": "denoised_output",
294
+ "name": "denoised_output",
295
+ "shape": 3,
296
+ "type": "LATENT",
297
+ "links": null
298
+ }
299
+ ],
300
+ "properties": {
301
+ "cnr_id": "comfy-core",
302
+ "ver": "0.3.24",
303
+ "Node name for S&R": "SamplerCustomAdvanced"
304
+ },
305
+ "widgets_values": []
306
+ },
307
+ {
308
+ "id": 25,
309
+ "type": "RandomNoise",
310
+ "pos": [
311
+ 819.1885986328125,
312
+ 709.9674072265625
313
+ ],
314
+ "size": [
315
+ 315,
316
+ 82
317
+ ],
318
+ "flags": {},
319
+ "order": 1,
320
+ "mode": 0,
321
+ "inputs": [],
322
+ "outputs": [
323
+ {
324
+ "localized_name": "NOISE",
325
+ "name": "NOISE",
326
+ "shape": 3,
327
+ "type": "NOISE",
328
+ "links": [
329
+ 37
330
+ ]
331
+ }
332
+ ],
333
+ "properties": {
334
+ "cnr_id": "comfy-core",
335
+ "ver": "0.3.24",
336
+ "Node name for S&R": "RandomNoise"
337
+ },
338
+ "widgets_values": [
339
+ 794018202952262,
340
+ "randomize"
341
+ ],
342
+ "color": "#2a363b",
343
+ "bgcolor": "#3f5159"
344
+ },
345
+ {
346
+ "id": 30,
347
+ "type": "ModelSamplingFlux",
348
+ "pos": [
349
+ 879.5872802734375,
350
+ 1107.096923828125
351
+ ],
352
+ "size": [
353
+ 210,
354
+ 130
355
+ ],
356
+ "flags": {},
357
+ "order": 12,
358
+ "mode": 0,
359
+ "inputs": [
360
+ {
361
+ "localized_name": "model",
362
+ "name": "model",
363
+ "type": "MODEL",
364
+ "link": 130
365
+ },
366
+ {
367
+ "name": "width",
368
+ "type": "INT",
369
+ "widget": {
370
+ "name": "width"
371
+ },
372
+ "link": 115
373
+ },
374
+ {
375
+ "name": "height",
376
+ "type": "INT",
377
+ "widget": {
378
+ "name": "height"
379
+ },
380
+ "link": 114
381
+ }
382
+ ],
383
+ "outputs": [
384
+ {
385
+ "localized_name": "MODEL",
386
+ "name": "MODEL",
387
+ "shape": 3,
388
+ "type": "MODEL",
389
+ "slot_index": 0,
390
+ "links": [
391
+ 54,
392
+ 55
393
+ ]
394
+ }
395
+ ],
396
+ "properties": {
397
+ "cnr_id": "comfy-core",
398
+ "ver": "0.3.24",
399
+ "Node name for S&R": "ModelSamplingFlux"
400
+ },
401
+ "widgets_values": [
402
+ 1.15,
403
+ 0.5,
404
+ 1024,
405
+ 1024
406
+ ]
407
+ },
408
+ {
409
+ "id": 10,
410
+ "type": "VAELoader",
411
+ "pos": [
412
+ 421.0907897949219,
413
+ 767.467041015625
414
+ ],
415
+ "size": [
416
+ 311.81634521484375,
417
+ 60.429901123046875
418
+ ],
419
+ "flags": {},
420
+ "order": 2,
421
+ "mode": 0,
422
+ "inputs": [],
423
+ "outputs": [
424
+ {
425
+ "localized_name": "VAE",
426
+ "name": "VAE",
427
+ "shape": 3,
428
+ "type": "VAE",
429
+ "slot_index": 0,
430
+ "links": [
431
+ 12
432
+ ]
433
+ }
434
+ ],
435
+ "properties": {
436
+ "cnr_id": "comfy-core",
437
+ "ver": "0.3.24",
438
+ "Node name for S&R": "VAELoader"
439
+ },
440
+ "widgets_values": [
441
+ "ae.safetensors"
442
+ ]
443
+ },
444
+ {
445
+ "id": 34,
446
+ "type": "PrimitiveNode",
447
+ "pos": [
448
+ 696.5196533203125,
449
+ 397.441650390625
450
+ ],
451
+ "size": [
452
+ 210,
453
+ 82
454
+ ],
455
+ "flags": {},
456
+ "order": 3,
457
+ "mode": 0,
458
+ "inputs": [],
459
+ "outputs": [
460
+ {
461
+ "name": "INT",
462
+ "type": "INT",
463
+ "widget": {
464
+ "name": "width"
465
+ },
466
+ "slot_index": 0,
467
+ "links": [
468
+ 112,
469
+ 115
470
+ ]
471
+ }
472
+ ],
473
+ "title": "width",
474
+ "properties": {
475
+ "Run widget replace on values": false
476
+ },
477
+ "widgets_values": [
478
+ 1024,
479
+ "fixed"
480
+ ],
481
+ "color": "#323",
482
+ "bgcolor": "#535"
483
+ },
484
+ {
485
+ "id": 35,
486
+ "type": "PrimitiveNode",
487
+ "pos": [
488
+ 937.396484375,
489
+ 392.3027038574219
490
+ ],
491
+ "size": [
492
+ 210,
493
+ 86.4900131225586
494
+ ],
495
+ "flags": {},
496
+ "order": 4,
497
+ "mode": 0,
498
+ "inputs": [],
499
+ "outputs": [
500
+ {
501
+ "name": "INT",
502
+ "type": "INT",
503
+ "widget": {
504
+ "name": "height"
505
+ },
506
+ "slot_index": 0,
507
+ "links": [
508
+ 113,
509
+ 114
510
+ ]
511
+ }
512
+ ],
513
+ "title": "height",
514
+ "properties": {
515
+ "Run widget replace on values": false
516
+ },
517
+ "widgets_values": [
518
+ 1024,
519
+ "fixed"
520
+ ],
521
+ "color": "#323",
522
+ "bgcolor": "#535"
523
+ },
524
+ {
525
+ "id": 9,
526
+ "type": "SaveImage",
527
+ "pos": [
528
+ 1170.8551025390625,
529
+ 128.45352172851562
530
+ ],
531
+ "size": [
532
+ 985.3012084960938,
533
+ 1060.3828125
534
+ ],
535
+ "flags": {},
536
+ "order": 17,
537
+ "mode": 0,
538
+ "inputs": [
539
+ {
540
+ "localized_name": "images",
541
+ "name": "images",
542
+ "type": "IMAGE",
543
+ "link": 9
544
+ }
545
+ ],
546
+ "outputs": [],
547
+ "properties": {
548
+ "cnr_id": "comfy-core",
549
+ "ver": "0.3.24"
550
+ },
551
+ "widgets_values": [
552
+ "ComfyUI",
553
+ ""
554
+ ]
555
+ },
556
+ {
557
+ "id": 17,
558
+ "type": "BasicScheduler",
559
+ "pos": [
560
+ 818.5535888671875,
561
+ 948.8093872070312
562
+ ],
563
+ "size": [
564
+ 315,
565
+ 106
566
+ ],
567
+ "flags": {},
568
+ "order": 14,
569
+ "mode": 0,
570
+ "inputs": [
571
+ {
572
+ "localized_name": "model",
573
+ "name": "model",
574
+ "type": "MODEL",
575
+ "link": 55
576
+ }
577
+ ],
578
+ "outputs": [
579
+ {
580
+ "localized_name": "SIGMAS",
581
+ "name": "SIGMAS",
582
+ "shape": 3,
583
+ "type": "SIGMAS",
584
+ "links": [
585
+ 20
586
+ ]
587
+ }
588
+ ],
589
+ "properties": {
590
+ "cnr_id": "comfy-core",
591
+ "ver": "0.3.24",
592
+ "Node name for S&R": "BasicScheduler"
593
+ },
594
+ "widgets_values": [
595
+ "simple",
596
+ 8,
597
+ 1
598
+ ]
599
+ },
600
+ {
601
+ "id": 6,
602
+ "type": "CLIPTextEncode",
603
+ "pos": [
604
+ 225.4257354736328,
605
+ 298.6509704589844
606
+ ],
607
+ "size": [
608
+ 422.84503173828125,
609
+ 164.31304931640625
610
+ ],
611
+ "flags": {},
612
+ "order": 8,
613
+ "mode": 0,
614
+ "inputs": [
615
+ {
616
+ "localized_name": "clip",
617
+ "name": "clip",
618
+ "type": "CLIP",
619
+ "link": 127
620
+ }
621
+ ],
622
+ "outputs": [
623
+ {
624
+ "localized_name": "CONDITIONING",
625
+ "name": "CONDITIONING",
626
+ "type": "CONDITIONING",
627
+ "slot_index": 0,
628
+ "links": [
629
+ 41
630
+ ]
631
+ }
632
+ ],
633
+ "title": "CLIP Text Encode (Positive Prompt)",
634
+ "properties": {
635
+ "cnr_id": "comfy-core",
636
+ "ver": "0.3.24",
637
+ "Node name for S&R": "CLIPTextEncode"
638
+ },
639
+ "widgets_values": [
640
+ "GHIBSKY style, a cyberpunk cat holding a neon sign that says \"SVDQuant is lite and fast!\""
641
+ ],
642
+ "color": "#232",
643
+ "bgcolor": "#353"
644
+ },
645
+ {
646
+ "id": 44,
647
+ "type": "NunchakuTextEncoderLoader",
648
+ "pos": [
649
+ 240.8671112060547,
650
+ 527.06884765625
651
+ ],
652
+ "size": [
653
+ 352.79998779296875,
654
+ 178
655
+ ],
656
+ "flags": {},
657
+ "order": 5,
658
+ "mode": 0,
659
+ "inputs": [],
660
+ "outputs": [
661
+ {
662
+ "localized_name": "CLIP",
663
+ "name": "CLIP",
664
+ "type": "CLIP",
665
+ "links": [
666
+ 127
667
+ ]
668
+ }
669
+ ],
670
+ "properties": {
671
+ "Node name for S&R": "NunchakuTextEncoderLoader"
672
+ },
673
+ "widgets_values": [
674
+ "flux",
675
+ "t5xxl_fp16.safetensors",
676
+ "clip_l.safetensors",
677
+ 512,
678
+ "disable",
679
+ "none"
680
+ ]
681
+ },
682
+ {
683
+ "id": 47,
684
+ "type": "NunchakuFluxLoraLoader",
685
+ "pos": [
686
+ 419.634033203125,
687
+ 887.4461669921875
688
+ ],
689
+ "size": [
690
+ 340.20001220703125,
691
+ 82
692
+ ],
693
+ "flags": {},
694
+ "order": 11,
695
+ "mode": 0,
696
+ "inputs": [
697
+ {
698
+ "localized_name": "model",
699
+ "name": "model",
700
+ "type": "MODEL",
701
+ "link": 129
702
+ }
703
+ ],
704
+ "outputs": [
705
+ {
706
+ "localized_name": "MODEL",
707
+ "name": "MODEL",
708
+ "type": "MODEL",
709
+ "links": [
710
+ 130
711
+ ]
712
+ }
713
+ ],
714
+ "properties": {
715
+ "Node name for S&R": "NunchakuFluxLoraLoader"
716
+ },
717
+ "widgets_values": [
718
+ "diffusers-ghibsky.safetensors",
719
+ 1
720
+ ]
721
+ },
722
+ {
723
+ "id": 46,
724
+ "type": "NunchakuFluxLoraLoader",
725
+ "pos": [
726
+ 411.6319885253906,
727
+ 1035.1226806640625
728
+ ],
729
+ "size": [
730
+ 340.20001220703125,
731
+ 82
732
+ ],
733
+ "flags": {},
734
+ "order": 9,
735
+ "mode": 0,
736
+ "inputs": [
737
+ {
738
+ "localized_name": "model",
739
+ "name": "model",
740
+ "type": "MODEL",
741
+ "link": 128
742
+ }
743
+ ],
744
+ "outputs": [
745
+ {
746
+ "localized_name": "MODEL",
747
+ "name": "MODEL",
748
+ "type": "MODEL",
749
+ "links": [
750
+ 129
751
+ ]
752
+ }
753
+ ],
754
+ "properties": {
755
+ "Node name for S&R": "NunchakuFluxLoraLoader"
756
+ },
757
+ "widgets_values": [
758
+ "flux1-turbo.safetensors",
759
+ 1
760
+ ]
761
+ },
762
+ {
763
+ "id": 45,
764
+ "type": "NunchakuFluxDiTLoader",
765
+ "pos": [
766
+ 53.896854400634766,
767
+ 1022.2003784179688
768
+ ],
769
+ "size": [
770
+ 315,
771
+ 202
772
+ ],
773
+ "flags": {},
774
+ "order": 6,
775
+ "mode": 0,
776
+ "inputs": [],
777
+ "outputs": [
778
+ {
779
+ "localized_name": "MODEL",
780
+ "name": "MODEL",
781
+ "type": "MODEL",
782
+ "links": [
783
+ 128
784
+ ]
785
+ }
786
+ ],
787
+ "properties": {
788
+ "Node name for S&R": "NunchakuFluxDiTLoader"
789
+ },
790
+ "widgets_values": [
791
+ "svdq-int4-flux.1-dev",
792
+ 0,
793
+ "nunchaku-fp16",
794
+ "auto",
795
+ 0,
796
+ "bfloat16",
797
+ "enabled"
798
+ ]
799
+ }
800
+ ],
801
+ "links": [
802
+ [
803
+ 9,
804
+ 8,
805
+ 0,
806
+ 9,
807
+ 0,
808
+ "IMAGE"
809
+ ],
810
+ [
811
+ 12,
812
+ 10,
813
+ 0,
814
+ 8,
815
+ 1,
816
+ "VAE"
817
+ ],
818
+ [
819
+ 19,
820
+ 16,
821
+ 0,
822
+ 13,
823
+ 2,
824
+ "SAMPLER"
825
+ ],
826
+ [
827
+ 20,
828
+ 17,
829
+ 0,
830
+ 13,
831
+ 3,
832
+ "SIGMAS"
833
+ ],
834
+ [
835
+ 24,
836
+ 13,
837
+ 0,
838
+ 8,
839
+ 0,
840
+ "LATENT"
841
+ ],
842
+ [
843
+ 30,
844
+ 22,
845
+ 0,
846
+ 13,
847
+ 1,
848
+ "GUIDER"
849
+ ],
850
+ [
851
+ 37,
852
+ 25,
853
+ 0,
854
+ 13,
855
+ 0,
856
+ "NOISE"
857
+ ],
858
+ [
859
+ 41,
860
+ 6,
861
+ 0,
862
+ 26,
863
+ 0,
864
+ "CONDITIONING"
865
+ ],
866
+ [
867
+ 42,
868
+ 26,
869
+ 0,
870
+ 22,
871
+ 1,
872
+ "CONDITIONING"
873
+ ],
874
+ [
875
+ 54,
876
+ 30,
877
+ 0,
878
+ 22,
879
+ 0,
880
+ "MODEL"
881
+ ],
882
+ [
883
+ 55,
884
+ 30,
885
+ 0,
886
+ 17,
887
+ 0,
888
+ "MODEL"
889
+ ],
890
+ [
891
+ 112,
892
+ 34,
893
+ 0,
894
+ 27,
895
+ 0,
896
+ "INT"
897
+ ],
898
+ [
899
+ 113,
900
+ 35,
901
+ 0,
902
+ 27,
903
+ 1,
904
+ "INT"
905
+ ],
906
+ [
907
+ 114,
908
+ 35,
909
+ 0,
910
+ 30,
911
+ 2,
912
+ "INT"
913
+ ],
914
+ [
915
+ 115,
916
+ 34,
917
+ 0,
918
+ 30,
919
+ 1,
920
+ "INT"
921
+ ],
922
+ [
923
+ 116,
924
+ 27,
925
+ 0,
926
+ 13,
927
+ 4,
928
+ "LATENT"
929
+ ],
930
+ [
931
+ 127,
932
+ 44,
933
+ 0,
934
+ 6,
935
+ 0,
936
+ "CLIP"
937
+ ],
938
+ [
939
+ 128,
940
+ 45,
941
+ 0,
942
+ 46,
943
+ 0,
944
+ "MODEL"
945
+ ],
946
+ [
947
+ 129,
948
+ 46,
949
+ 0,
950
+ 47,
951
+ 0,
952
+ "MODEL"
953
+ ],
954
+ [
955
+ 130,
956
+ 47,
957
+ 0,
958
+ 30,
959
+ 0,
960
+ "MODEL"
961
+ ]
962
+ ],
963
+ "groups": [],
964
+ "config": {},
965
+ "extra": {
966
+ "ds": {
967
+ "scale": 0.7400249944258178,
968
+ "offset": [
969
+ 1112.4204268192373,
970
+ -37.40798400402991
971
+ ]
972
+ },
973
+ "groupNodes": {
974
+ "EmptyLatentImage": {
975
+ "nodes": [
976
+ {
977
+ "type": "PrimitiveNode",
978
+ "pos": [
979
+ 432,
980
+ 480
981
+ ],
982
+ "size": {
983
+ "0": 210,
984
+ "1": 82
985
+ },
986
+ "flags": {},
987
+ "order": 6,
988
+ "mode": 0,
989
+ "outputs": [
990
+ {
991
+ "name": "INT",
992
+ "type": "INT",
993
+ "links": [],
994
+ "widget": {
995
+ "name": "height"
996
+ },
997
+ "slot_index": 0
998
+ }
999
+ ],
1000
+ "title": "height",
1001
+ "properties": {
1002
+ "Run widget replace on values": false
1003
+ },
1004
+ "color": "#323",
1005
+ "bgcolor": "#535",
1006
+ "index": 0
1007
+ },
1008
+ {
1009
+ "type": "PrimitiveNode",
1010
+ "pos": [
1011
+ 672,
1012
+ 480
1013
+ ],
1014
+ "size": {
1015
+ "0": 210,
1016
+ "1": 82
1017
+ },
1018
+ "flags": {},
1019
+ "order": 7,
1020
+ "mode": 0,
1021
+ "outputs": [
1022
+ {
1023
+ "name": "INT",
1024
+ "type": "INT",
1025
+ "links": [],
1026
+ "slot_index": 0,
1027
+ "widget": {
1028
+ "name": "width"
1029
+ }
1030
+ }
1031
+ ],
1032
+ "title": "width",
1033
+ "properties": {
1034
+ "Run widget replace on values": false
1035
+ },
1036
+ "color": "#323",
1037
+ "bgcolor": "#535",
1038
+ "index": 1
1039
+ },
1040
+ {
1041
+ "type": "EmptySD3LatentImage",
1042
+ "pos": [
1043
+ 480,
1044
+ 624
1045
+ ],
1046
+ "size": {
1047
+ "0": 315,
1048
+ "1": 106
1049
+ },
1050
+ "flags": {},
1051
+ "order": 10,
1052
+ "mode": 0,
1053
+ "inputs": [
1054
+ {
1055
+ "name": "width",
1056
+ "type": "INT",
1057
+ "link": null,
1058
+ "widget": {
1059
+ "name": "width"
1060
+ }
1061
+ },
1062
+ {
1063
+ "name": "height",
1064
+ "type": "INT",
1065
+ "link": null,
1066
+ "widget": {
1067
+ "name": "height"
1068
+ }
1069
+ }
1070
+ ],
1071
+ "outputs": [
1072
+ {
1073
+ "name": "LATENT",
1074
+ "type": "LATENT",
1075
+ "links": [],
1076
+ "shape": 3,
1077
+ "slot_index": 0
1078
+ }
1079
+ ],
1080
+ "properties": {
1081
+ "Node name for S&R": "EmptySD3LatentImage"
1082
+ },
1083
+ "widgets_values": [
1084
+ 1024,
1085
+ 1024,
1086
+ 1
1087
+ ],
1088
+ "index": 2
1089
+ }
1090
+ ],
1091
+ "links": [
1092
+ [
1093
+ 1,
1094
+ 0,
1095
+ 2,
1096
+ 0,
1097
+ 34,
1098
+ "INT"
1099
+ ],
1100
+ [
1101
+ 0,
1102
+ 0,
1103
+ 2,
1104
+ 1,
1105
+ 35,
1106
+ "INT"
1107
+ ]
1108
+ ],
1109
+ "external": [
1110
+ [
1111
+ 0,
1112
+ 0,
1113
+ "INT"
1114
+ ],
1115
+ [
1116
+ 1,
1117
+ 0,
1118
+ "INT"
1119
+ ],
1120
+ [
1121
+ 2,
1122
+ 0,
1123
+ "LATENT"
1124
+ ]
1125
+ ],
1126
+ "config": {
1127
+ "0": {
1128
+ "output": {
1129
+ "0": {
1130
+ "name": "height"
1131
+ }
1132
+ },
1133
+ "input": {
1134
+ "value": {
1135
+ "visible": true
1136
+ }
1137
+ }
1138
+ },
1139
+ "1": {
1140
+ "output": {
1141
+ "0": {
1142
+ "name": "width"
1143
+ }
1144
+ },
1145
+ "input": {
1146
+ "value": {
1147
+ "visible": true
1148
+ }
1149
+ }
1150
+ },
1151
+ "2": {
1152
+ "input": {
1153
+ "width": {
1154
+ "visible": false
1155
+ },
1156
+ "height": {
1157
+ "visible": false
1158
+ }
1159
+ }
1160
+ }
1161
+ }
1162
+ }
1163
+ },
1164
+ "node_versions": {
1165
+ "comfy-core": "0.3.24"
1166
+ }
1167
+ },
1168
+ "version": 0.4
1169
+ }
workflows/nunchaku-flux.1-fill.json ADDED
@@ -0,0 +1,775 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "0c258e12-f212-48d3-b71e-820714cad75f",
3
+ "revision": 0,
4
+ "last_node_id": 58,
5
+ "last_link_id": 108,
6
+ "nodes": [
7
+ {
8
+ "id": 8,
9
+ "type": "VAEDecode",
10
+ "pos": [
11
+ 1620,
12
+ 98
13
+ ],
14
+ "size": [
15
+ 210,
16
+ 46
17
+ ],
18
+ "flags": {},
19
+ "order": 11,
20
+ "mode": 0,
21
+ "inputs": [
22
+ {
23
+ "localized_name": "samples",
24
+ "name": "samples",
25
+ "type": "LATENT",
26
+ "link": 7
27
+ },
28
+ {
29
+ "localized_name": "vae",
30
+ "name": "vae",
31
+ "type": "VAE",
32
+ "link": 60
33
+ }
34
+ ],
35
+ "outputs": [
36
+ {
37
+ "localized_name": "IMAGE",
38
+ "name": "IMAGE",
39
+ "type": "IMAGE",
40
+ "slot_index": 0,
41
+ "links": [
42
+ 95
43
+ ]
44
+ }
45
+ ],
46
+ "properties": {
47
+ "cnr_id": "comfy-core",
48
+ "ver": "0.3.27",
49
+ "Node name for S&R": "VAEDecode"
50
+ },
51
+ "widgets_values": []
52
+ },
53
+ {
54
+ "id": 38,
55
+ "type": "InpaintModelConditioning",
56
+ "pos": [
57
+ 952,
58
+ 78
59
+ ],
60
+ "size": [
61
+ 302.4000244140625,
62
+ 138
63
+ ],
64
+ "flags": {},
65
+ "order": 9,
66
+ "mode": 0,
67
+ "inputs": [
68
+ {
69
+ "localized_name": "positive",
70
+ "name": "positive",
71
+ "type": "CONDITIONING",
72
+ "link": 80
73
+ },
74
+ {
75
+ "localized_name": "negative",
76
+ "name": "negative",
77
+ "type": "CONDITIONING",
78
+ "link": 81
79
+ },
80
+ {
81
+ "localized_name": "vae",
82
+ "name": "vae",
83
+ "type": "VAE",
84
+ "link": 82
85
+ },
86
+ {
87
+ "localized_name": "pixels",
88
+ "name": "pixels",
89
+ "type": "IMAGE",
90
+ "link": 107
91
+ },
92
+ {
93
+ "localized_name": "mask",
94
+ "name": "mask",
95
+ "type": "MASK",
96
+ "link": 108
97
+ }
98
+ ],
99
+ "outputs": [
100
+ {
101
+ "localized_name": "positive",
102
+ "name": "positive",
103
+ "type": "CONDITIONING",
104
+ "slot_index": 0,
105
+ "links": [
106
+ 77
107
+ ]
108
+ },
109
+ {
110
+ "localized_name": "negative",
111
+ "name": "negative",
112
+ "type": "CONDITIONING",
113
+ "slot_index": 1,
114
+ "links": [
115
+ 78
116
+ ]
117
+ },
118
+ {
119
+ "localized_name": "latent",
120
+ "name": "latent",
121
+ "type": "LATENT",
122
+ "slot_index": 2,
123
+ "links": [
124
+ 88
125
+ ]
126
+ }
127
+ ],
128
+ "properties": {
129
+ "cnr_id": "comfy-core",
130
+ "ver": "0.3.27",
131
+ "Node name for S&R": "InpaintModelConditioning"
132
+ },
133
+ "widgets_values": [
134
+ false
135
+ ]
136
+ },
137
+ {
138
+ "id": 3,
139
+ "type": "KSampler",
140
+ "pos": [
141
+ 1280,
142
+ 100
143
+ ],
144
+ "size": [
145
+ 315,
146
+ 262
147
+ ],
148
+ "flags": {},
149
+ "order": 10,
150
+ "mode": 0,
151
+ "inputs": [
152
+ {
153
+ "localized_name": "model",
154
+ "name": "model",
155
+ "type": "MODEL",
156
+ "link": 102
157
+ },
158
+ {
159
+ "localized_name": "positive",
160
+ "name": "positive",
161
+ "type": "CONDITIONING",
162
+ "link": 77
163
+ },
164
+ {
165
+ "localized_name": "negative",
166
+ "name": "negative",
167
+ "type": "CONDITIONING",
168
+ "link": 78
169
+ },
170
+ {
171
+ "localized_name": "latent_image",
172
+ "name": "latent_image",
173
+ "type": "LATENT",
174
+ "link": 88
175
+ }
176
+ ],
177
+ "outputs": [
178
+ {
179
+ "localized_name": "LATENT",
180
+ "name": "LATENT",
181
+ "type": "LATENT",
182
+ "slot_index": 0,
183
+ "links": [
184
+ 7
185
+ ]
186
+ }
187
+ ],
188
+ "properties": {
189
+ "cnr_id": "comfy-core",
190
+ "ver": "0.3.27",
191
+ "Node name for S&R": "KSampler"
192
+ },
193
+ "widgets_values": [
194
+ 53039932755901,
195
+ "randomize",
196
+ 20,
197
+ 1,
198
+ "euler",
199
+ "normal",
200
+ 1
201
+ ]
202
+ },
203
+ {
204
+ "id": 26,
205
+ "type": "FluxGuidance",
206
+ "pos": [
207
+ 596,
208
+ 48
209
+ ],
210
+ "size": [
211
+ 317.4000244140625,
212
+ 58
213
+ ],
214
+ "flags": {},
215
+ "order": 8,
216
+ "mode": 0,
217
+ "inputs": [
218
+ {
219
+ "localized_name": "conditioning",
220
+ "name": "conditioning",
221
+ "type": "CONDITIONING",
222
+ "link": 41
223
+ }
224
+ ],
225
+ "outputs": [
226
+ {
227
+ "localized_name": "CONDITIONING",
228
+ "name": "CONDITIONING",
229
+ "shape": 3,
230
+ "type": "CONDITIONING",
231
+ "slot_index": 0,
232
+ "links": [
233
+ 80
234
+ ]
235
+ }
236
+ ],
237
+ "properties": {
238
+ "cnr_id": "comfy-core",
239
+ "ver": "0.3.27",
240
+ "Node name for S&R": "FluxGuidance"
241
+ },
242
+ "widgets_values": [
243
+ 30
244
+ ]
245
+ },
246
+ {
247
+ "id": 7,
248
+ "type": "CLIPTextEncode",
249
+ "pos": [
250
+ 165,
251
+ 267
252
+ ],
253
+ "size": [
254
+ 425.27801513671875,
255
+ 180.6060791015625
256
+ ],
257
+ "flags": {
258
+ "collapsed": true
259
+ },
260
+ "order": 6,
261
+ "mode": 0,
262
+ "inputs": [
263
+ {
264
+ "localized_name": "clip",
265
+ "name": "clip",
266
+ "type": "CLIP",
267
+ "link": 63
268
+ }
269
+ ],
270
+ "outputs": [
271
+ {
272
+ "localized_name": "CONDITIONING",
273
+ "name": "CONDITIONING",
274
+ "type": "CONDITIONING",
275
+ "slot_index": 0,
276
+ "links": [
277
+ 81
278
+ ]
279
+ }
280
+ ],
281
+ "title": "CLIP Text Encode (Negative Prompt)",
282
+ "properties": {
283
+ "cnr_id": "comfy-core",
284
+ "ver": "0.3.27",
285
+ "Node name for S&R": "CLIPTextEncode"
286
+ },
287
+ "widgets_values": [
288
+ ""
289
+ ],
290
+ "color": "#322",
291
+ "bgcolor": "#533"
292
+ },
293
+ {
294
+ "id": 34,
295
+ "type": "DualCLIPLoader",
296
+ "pos": [
297
+ -237,
298
+ 76
299
+ ],
300
+ "size": [
301
+ 315,
302
+ 122
303
+ ],
304
+ "flags": {},
305
+ "order": 0,
306
+ "mode": 0,
307
+ "inputs": [],
308
+ "outputs": [
309
+ {
310
+ "localized_name": "CLIP",
311
+ "name": "CLIP",
312
+ "type": "CLIP",
313
+ "links": [
314
+ 62,
315
+ 63
316
+ ]
317
+ }
318
+ ],
319
+ "properties": {
320
+ "cnr_id": "comfy-core",
321
+ "ver": "0.3.27",
322
+ "Node name for S&R": "DualCLIPLoader"
323
+ },
324
+ "widgets_values": [
325
+ "clip_l.safetensors",
326
+ "t5xxl_fp16.safetensors",
327
+ "flux",
328
+ "default"
329
+ ]
330
+ },
331
+ {
332
+ "id": 58,
333
+ "type": "ImageAndMaskResizeNode",
334
+ "pos": [
335
+ 536.786865234375,
336
+ 328.54388427734375
337
+ ],
338
+ "size": [
339
+ 315,
340
+ 174
341
+ ],
342
+ "flags": {},
343
+ "order": 7,
344
+ "mode": 0,
345
+ "inputs": [
346
+ {
347
+ "localized_name": "image",
348
+ "name": "image",
349
+ "type": "IMAGE",
350
+ "link": 105
351
+ },
352
+ {
353
+ "localized_name": "mask",
354
+ "name": "mask",
355
+ "type": "MASK",
356
+ "link": 106
357
+ }
358
+ ],
359
+ "outputs": [
360
+ {
361
+ "localized_name": "image",
362
+ "name": "image",
363
+ "type": "IMAGE",
364
+ "slot_index": 0,
365
+ "links": [
366
+ 107
367
+ ]
368
+ },
369
+ {
370
+ "localized_name": "mask",
371
+ "name": "mask",
372
+ "type": "MASK",
373
+ "slot_index": 1,
374
+ "links": [
375
+ 108
376
+ ]
377
+ }
378
+ ],
379
+ "properties": {
380
+ "cnr_id": "comfyui-inpainteasy",
381
+ "ver": "1.0.2",
382
+ "Node name for S&R": "ImageAndMaskResizeNode"
383
+ },
384
+ "widgets_values": [
385
+ 1024,
386
+ 1024,
387
+ "nearest-exact",
388
+ "center",
389
+ 10
390
+ ]
391
+ },
392
+ {
393
+ "id": 23,
394
+ "type": "CLIPTextEncode",
395
+ "pos": [
396
+ 144,
397
+ -7
398
+ ],
399
+ "size": [
400
+ 422.84503173828125,
401
+ 164.31304931640625
402
+ ],
403
+ "flags": {},
404
+ "order": 5,
405
+ "mode": 0,
406
+ "inputs": [
407
+ {
408
+ "localized_name": "clip",
409
+ "name": "clip",
410
+ "type": "CLIP",
411
+ "link": 62
412
+ }
413
+ ],
414
+ "outputs": [
415
+ {
416
+ "localized_name": "CONDITIONING",
417
+ "name": "CONDITIONING",
418
+ "type": "CONDITIONING",
419
+ "slot_index": 0,
420
+ "links": [
421
+ 41
422
+ ]
423
+ }
424
+ ],
425
+ "title": "CLIP Text Encode (Positive Prompt)",
426
+ "properties": {
427
+ "cnr_id": "comfy-core",
428
+ "ver": "0.3.27",
429
+ "Node name for S&R": "CLIPTextEncode"
430
+ },
431
+ "widgets_values": [
432
+ "A wooden basket of a cat."
433
+ ],
434
+ "color": "#232",
435
+ "bgcolor": "#353"
436
+ },
437
+ {
438
+ "id": 48,
439
+ "type": "Note",
440
+ "pos": [
441
+ 210.1423797607422,
442
+ 572.7574462890625
443
+ ],
444
+ "size": [
445
+ 266.4635925292969,
446
+ 132.3040771484375
447
+ ],
448
+ "flags": {},
449
+ "order": 1,
450
+ "mode": 0,
451
+ "inputs": [],
452
+ "outputs": [],
453
+ "properties": {
454
+ "text": ""
455
+ },
456
+ "widgets_values": [
457
+ "To add mask for fill inpainting, right click on the uploaded image and select \"Open in MaskEditor\". Use the brush tool to add masking and click save to continue."
458
+ ],
459
+ "color": "#432",
460
+ "bgcolor": "#653"
461
+ },
462
+ {
463
+ "id": 17,
464
+ "type": "LoadImage",
465
+ "pos": [
466
+ -225.73123168945312,
467
+ 316.9361267089844
468
+ ],
469
+ "size": [
470
+ 423.5578308105469,
471
+ 437.250732421875
472
+ ],
473
+ "flags": {
474
+ "collapsed": false
475
+ },
476
+ "order": 2,
477
+ "mode": 0,
478
+ "inputs": [],
479
+ "outputs": [
480
+ {
481
+ "localized_name": "IMAGE",
482
+ "name": "IMAGE",
483
+ "shape": 3,
484
+ "type": "IMAGE",
485
+ "slot_index": 0,
486
+ "links": [
487
+ 105
488
+ ]
489
+ },
490
+ {
491
+ "localized_name": "MASK",
492
+ "name": "MASK",
493
+ "shape": 3,
494
+ "type": "MASK",
495
+ "slot_index": 1,
496
+ "links": [
497
+ 106
498
+ ]
499
+ }
500
+ ],
501
+ "properties": {
502
+ "cnr_id": "comfy-core",
503
+ "ver": "0.3.27",
504
+ "Node name for S&R": "LoadImage"
505
+ },
506
+ "widgets_values": [
507
+ "clipspace/clipspace-mask-331829.799999997.png [input]",
508
+ "image",
509
+ ""
510
+ ]
511
+ },
512
+ {
513
+ "id": 32,
514
+ "type": "VAELoader",
515
+ "pos": [
516
+ 953.8762817382812,
517
+ 440.3467102050781
518
+ ],
519
+ "size": [
520
+ 315,
521
+ 58
522
+ ],
523
+ "flags": {},
524
+ "order": 3,
525
+ "mode": 0,
526
+ "inputs": [],
527
+ "outputs": [
528
+ {
529
+ "localized_name": "VAE",
530
+ "name": "VAE",
531
+ "type": "VAE",
532
+ "slot_index": 0,
533
+ "links": [
534
+ 60,
535
+ 82
536
+ ]
537
+ }
538
+ ],
539
+ "properties": {
540
+ "cnr_id": "comfy-core",
541
+ "ver": "0.3.27",
542
+ "Node name for S&R": "VAELoader"
543
+ },
544
+ "widgets_values": [
545
+ "ae.safetensors"
546
+ ]
547
+ },
548
+ {
549
+ "id": 9,
550
+ "type": "SaveImage",
551
+ "pos": [
552
+ 1862.43359375,
553
+ 96.36107635498047
554
+ ],
555
+ "size": [
556
+ 828.9535522460938,
557
+ 893.8475341796875
558
+ ],
559
+ "flags": {},
560
+ "order": 12,
561
+ "mode": 0,
562
+ "inputs": [
563
+ {
564
+ "localized_name": "images",
565
+ "name": "images",
566
+ "type": "IMAGE",
567
+ "link": 95
568
+ }
569
+ ],
570
+ "outputs": [],
571
+ "properties": {
572
+ "cnr_id": "comfy-core",
573
+ "ver": "0.3.27",
574
+ "Node name for S&R": "SaveImage"
575
+ },
576
+ "widgets_values": [
577
+ "ComfyUI",
578
+ ""
579
+ ]
580
+ },
581
+ {
582
+ "id": 45,
583
+ "type": "SVDQuantFluxDiTLoader",
584
+ "pos": [
585
+ 944.622314453125,
586
+ -189.1898651123047
587
+ ],
588
+ "size": [
589
+ 315,
590
+ 202
591
+ ],
592
+ "flags": {},
593
+ "order": 4,
594
+ "mode": 0,
595
+ "inputs": [],
596
+ "outputs": [
597
+ {
598
+ "localized_name": "MODEL",
599
+ "name": "MODEL",
600
+ "type": "MODEL",
601
+ "slot_index": 0,
602
+ "links": [
603
+ 102
604
+ ]
605
+ }
606
+ ],
607
+ "properties": {
608
+ "Node name for S&R": "SVDQuantFluxDiTLoader"
609
+ },
610
+ "widgets_values": [
611
+ "svdq-int4-flux.1-fill-dev",
612
+ 0,
613
+ "nunchaku-fp16",
614
+ "auto",
615
+ 0,
616
+ "bfloat16",
617
+ "enabled"
618
+ ]
619
+ }
620
+ ],
621
+ "links": [
622
+ [
623
+ 7,
624
+ 3,
625
+ 0,
626
+ 8,
627
+ 0,
628
+ "LATENT"
629
+ ],
630
+ [
631
+ 41,
632
+ 23,
633
+ 0,
634
+ 26,
635
+ 0,
636
+ "CONDITIONING"
637
+ ],
638
+ [
639
+ 60,
640
+ 32,
641
+ 0,
642
+ 8,
643
+ 1,
644
+ "VAE"
645
+ ],
646
+ [
647
+ 62,
648
+ 34,
649
+ 0,
650
+ 23,
651
+ 0,
652
+ "CLIP"
653
+ ],
654
+ [
655
+ 63,
656
+ 34,
657
+ 0,
658
+ 7,
659
+ 0,
660
+ "CLIP"
661
+ ],
662
+ [
663
+ 77,
664
+ 38,
665
+ 0,
666
+ 3,
667
+ 1,
668
+ "CONDITIONING"
669
+ ],
670
+ [
671
+ 78,
672
+ 38,
673
+ 1,
674
+ 3,
675
+ 2,
676
+ "CONDITIONING"
677
+ ],
678
+ [
679
+ 80,
680
+ 26,
681
+ 0,
682
+ 38,
683
+ 0,
684
+ "CONDITIONING"
685
+ ],
686
+ [
687
+ 81,
688
+ 7,
689
+ 0,
690
+ 38,
691
+ 1,
692
+ "CONDITIONING"
693
+ ],
694
+ [
695
+ 82,
696
+ 32,
697
+ 0,
698
+ 38,
699
+ 2,
700
+ "VAE"
701
+ ],
702
+ [
703
+ 88,
704
+ 38,
705
+ 2,
706
+ 3,
707
+ 3,
708
+ "LATENT"
709
+ ],
710
+ [
711
+ 95,
712
+ 8,
713
+ 0,
714
+ 9,
715
+ 0,
716
+ "IMAGE"
717
+ ],
718
+ [
719
+ 102,
720
+ 45,
721
+ 0,
722
+ 3,
723
+ 0,
724
+ "MODEL"
725
+ ],
726
+ [
727
+ 105,
728
+ 17,
729
+ 0,
730
+ 58,
731
+ 0,
732
+ "IMAGE"
733
+ ],
734
+ [
735
+ 106,
736
+ 17,
737
+ 1,
738
+ 58,
739
+ 1,
740
+ "MASK"
741
+ ],
742
+ [
743
+ 107,
744
+ 58,
745
+ 0,
746
+ 38,
747
+ 3,
748
+ "IMAGE"
749
+ ],
750
+ [
751
+ 108,
752
+ 58,
753
+ 1,
754
+ 38,
755
+ 4,
756
+ "MASK"
757
+ ]
758
+ ],
759
+ "groups": [],
760
+ "config": {},
761
+ "extra": {
762
+ "ds": {
763
+ "scale": 1.01525597994771,
764
+ "offset": [
765
+ -386.9543052427839,
766
+ 140.01730865654588
767
+ ]
768
+ },
769
+ "node_versions": {
770
+ "comfy-core": "0.3.24",
771
+ "comfyui-inpainteasy": "1.0.2"
772
+ }
773
+ },
774
+ "version": 0.4
775
+ }
workflows/nunchaku-flux.1-redux-dev.json ADDED
@@ -0,0 +1,1413 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bdec6d53-d024-44ba-b365-bffa04ed8c10",
3
+ "revision": 0,
4
+ "last_node_id": 45,
5
+ "last_link_id": 125,
6
+ "nodes": [
7
+ {
8
+ "id": 16,
9
+ "type": "KSamplerSelect",
10
+ "pos": [
11
+ 480,
12
+ 912
13
+ ],
14
+ "size": [
15
+ 315,
16
+ 58
17
+ ],
18
+ "flags": {},
19
+ "order": 0,
20
+ "mode": 0,
21
+ "inputs": [],
22
+ "outputs": [
23
+ {
24
+ "localized_name": "SAMPLER",
25
+ "name": "SAMPLER",
26
+ "shape": 3,
27
+ "type": "SAMPLER",
28
+ "links": [
29
+ 19
30
+ ]
31
+ }
32
+ ],
33
+ "properties": {
34
+ "cnr_id": "comfy-core",
35
+ "ver": "0.3.27",
36
+ "Node name for S&R": "KSamplerSelect"
37
+ },
38
+ "widgets_values": [
39
+ "euler"
40
+ ]
41
+ },
42
+ {
43
+ "id": 26,
44
+ "type": "FluxGuidance",
45
+ "pos": [
46
+ 480,
47
+ 144
48
+ ],
49
+ "size": [
50
+ 317.4000244140625,
51
+ 58
52
+ ],
53
+ "flags": {},
54
+ "order": 17,
55
+ "mode": 0,
56
+ "inputs": [
57
+ {
58
+ "localized_name": "conditioning",
59
+ "name": "conditioning",
60
+ "type": "CONDITIONING",
61
+ "link": 41
62
+ }
63
+ ],
64
+ "outputs": [
65
+ {
66
+ "localized_name": "CONDITIONING",
67
+ "name": "CONDITIONING",
68
+ "shape": 3,
69
+ "type": "CONDITIONING",
70
+ "slot_index": 0,
71
+ "links": [
72
+ 122
73
+ ]
74
+ }
75
+ ],
76
+ "properties": {
77
+ "cnr_id": "comfy-core",
78
+ "ver": "0.3.27",
79
+ "Node name for S&R": "FluxGuidance"
80
+ },
81
+ "widgets_values": [
82
+ 3.5
83
+ ],
84
+ "color": "#233",
85
+ "bgcolor": "#355"
86
+ },
87
+ {
88
+ "id": 13,
89
+ "type": "SamplerCustomAdvanced",
90
+ "pos": [
91
+ 864,
92
+ 192
93
+ ],
94
+ "size": [
95
+ 272.3617858886719,
96
+ 124.53733825683594
97
+ ],
98
+ "flags": {},
99
+ "order": 21,
100
+ "mode": 0,
101
+ "inputs": [
102
+ {
103
+ "localized_name": "noise",
104
+ "name": "noise",
105
+ "type": "NOISE",
106
+ "link": 37
107
+ },
108
+ {
109
+ "localized_name": "guider",
110
+ "name": "guider",
111
+ "type": "GUIDER",
112
+ "link": 30
113
+ },
114
+ {
115
+ "localized_name": "sampler",
116
+ "name": "sampler",
117
+ "type": "SAMPLER",
118
+ "link": 19
119
+ },
120
+ {
121
+ "localized_name": "sigmas",
122
+ "name": "sigmas",
123
+ "type": "SIGMAS",
124
+ "link": 20
125
+ },
126
+ {
127
+ "localized_name": "latent_image",
128
+ "name": "latent_image",
129
+ "type": "LATENT",
130
+ "link": 116
131
+ }
132
+ ],
133
+ "outputs": [
134
+ {
135
+ "localized_name": "output",
136
+ "name": "output",
137
+ "shape": 3,
138
+ "type": "LATENT",
139
+ "slot_index": 0,
140
+ "links": [
141
+ 24
142
+ ]
143
+ },
144
+ {
145
+ "localized_name": "denoised_output",
146
+ "name": "denoised_output",
147
+ "shape": 3,
148
+ "type": "LATENT",
149
+ "links": null
150
+ }
151
+ ],
152
+ "properties": {
153
+ "cnr_id": "comfy-core",
154
+ "ver": "0.3.27",
155
+ "Node name for S&R": "SamplerCustomAdvanced"
156
+ },
157
+ "widgets_values": []
158
+ },
159
+ {
160
+ "id": 25,
161
+ "type": "RandomNoise",
162
+ "pos": [
163
+ 480,
164
+ 768
165
+ ],
166
+ "size": [
167
+ 315,
168
+ 82
169
+ ],
170
+ "flags": {},
171
+ "order": 1,
172
+ "mode": 0,
173
+ "inputs": [],
174
+ "outputs": [
175
+ {
176
+ "localized_name": "NOISE",
177
+ "name": "NOISE",
178
+ "shape": 3,
179
+ "type": "NOISE",
180
+ "links": [
181
+ 37
182
+ ]
183
+ }
184
+ ],
185
+ "properties": {
186
+ "cnr_id": "comfy-core",
187
+ "ver": "0.3.27",
188
+ "Node name for S&R": "RandomNoise"
189
+ },
190
+ "widgets_values": [
191
+ 967481450471827,
192
+ "randomize"
193
+ ],
194
+ "color": "#2a363b",
195
+ "bgcolor": "#3f5159"
196
+ },
197
+ {
198
+ "id": 8,
199
+ "type": "VAEDecode",
200
+ "pos": [
201
+ 866,
202
+ 367
203
+ ],
204
+ "size": [
205
+ 210,
206
+ 46
207
+ ],
208
+ "flags": {},
209
+ "order": 22,
210
+ "mode": 0,
211
+ "inputs": [
212
+ {
213
+ "localized_name": "samples",
214
+ "name": "samples",
215
+ "type": "LATENT",
216
+ "link": 24
217
+ },
218
+ {
219
+ "localized_name": "vae",
220
+ "name": "vae",
221
+ "type": "VAE",
222
+ "link": 12
223
+ }
224
+ ],
225
+ "outputs": [
226
+ {
227
+ "localized_name": "IMAGE",
228
+ "name": "IMAGE",
229
+ "type": "IMAGE",
230
+ "slot_index": 0,
231
+ "links": [
232
+ 9
233
+ ]
234
+ }
235
+ ],
236
+ "properties": {
237
+ "cnr_id": "comfy-core",
238
+ "ver": "0.3.27",
239
+ "Node name for S&R": "VAEDecode"
240
+ },
241
+ "widgets_values": []
242
+ },
243
+ {
244
+ "id": 30,
245
+ "type": "ModelSamplingFlux",
246
+ "pos": [
247
+ 480,
248
+ 1152
249
+ ],
250
+ "size": [
251
+ 315,
252
+ 130
253
+ ],
254
+ "flags": {},
255
+ "order": 16,
256
+ "mode": 0,
257
+ "inputs": [
258
+ {
259
+ "localized_name": "model",
260
+ "name": "model",
261
+ "type": "MODEL",
262
+ "link": 125
263
+ },
264
+ {
265
+ "name": "width",
266
+ "type": "INT",
267
+ "widget": {
268
+ "name": "width"
269
+ },
270
+ "link": 115
271
+ },
272
+ {
273
+ "name": "height",
274
+ "type": "INT",
275
+ "widget": {
276
+ "name": "height"
277
+ },
278
+ "link": 114
279
+ }
280
+ ],
281
+ "outputs": [
282
+ {
283
+ "localized_name": "MODEL",
284
+ "name": "MODEL",
285
+ "shape": 3,
286
+ "type": "MODEL",
287
+ "slot_index": 0,
288
+ "links": [
289
+ 54,
290
+ 55
291
+ ]
292
+ }
293
+ ],
294
+ "properties": {
295
+ "cnr_id": "comfy-core",
296
+ "ver": "0.3.27",
297
+ "Node name for S&R": "ModelSamplingFlux"
298
+ },
299
+ "widgets_values": [
300
+ 1.15,
301
+ 0.5,
302
+ 1024,
303
+ 1024
304
+ ]
305
+ },
306
+ {
307
+ "id": 27,
308
+ "type": "EmptySD3LatentImage",
309
+ "pos": [
310
+ 480,
311
+ 624
312
+ ],
313
+ "size": [
314
+ 315,
315
+ 106
316
+ ],
317
+ "flags": {},
318
+ "order": 13,
319
+ "mode": 0,
320
+ "inputs": [
321
+ {
322
+ "name": "width",
323
+ "type": "INT",
324
+ "widget": {
325
+ "name": "width"
326
+ },
327
+ "link": 112
328
+ },
329
+ {
330
+ "name": "height",
331
+ "type": "INT",
332
+ "widget": {
333
+ "name": "height"
334
+ },
335
+ "link": 113
336
+ }
337
+ ],
338
+ "outputs": [
339
+ {
340
+ "localized_name": "LATENT",
341
+ "name": "LATENT",
342
+ "shape": 3,
343
+ "type": "LATENT",
344
+ "slot_index": 0,
345
+ "links": [
346
+ 116
347
+ ]
348
+ }
349
+ ],
350
+ "properties": {
351
+ "cnr_id": "comfy-core",
352
+ "ver": "0.3.27",
353
+ "Node name for S&R": "EmptySD3LatentImage"
354
+ },
355
+ "widgets_values": [
356
+ 1024,
357
+ 1024,
358
+ 1
359
+ ]
360
+ },
361
+ {
362
+ "id": 34,
363
+ "type": "PrimitiveNode",
364
+ "pos": [
365
+ 432,
366
+ 480
367
+ ],
368
+ "size": [
369
+ 210,
370
+ 82
371
+ ],
372
+ "flags": {},
373
+ "order": 2,
374
+ "mode": 0,
375
+ "inputs": [],
376
+ "outputs": [
377
+ {
378
+ "name": "INT",
379
+ "type": "INT",
380
+ "widget": {
381
+ "name": "width"
382
+ },
383
+ "slot_index": 0,
384
+ "links": [
385
+ 112,
386
+ 115
387
+ ]
388
+ }
389
+ ],
390
+ "title": "width",
391
+ "properties": {
392
+ "Run widget replace on values": false
393
+ },
394
+ "widgets_values": [
395
+ 1024,
396
+ "fixed"
397
+ ],
398
+ "color": "#323",
399
+ "bgcolor": "#535"
400
+ },
401
+ {
402
+ "id": 35,
403
+ "type": "PrimitiveNode",
404
+ "pos": [
405
+ 672,
406
+ 480
407
+ ],
408
+ "size": [
409
+ 210,
410
+ 82
411
+ ],
412
+ "flags": {},
413
+ "order": 3,
414
+ "mode": 0,
415
+ "inputs": [],
416
+ "outputs": [
417
+ {
418
+ "name": "INT",
419
+ "type": "INT",
420
+ "widget": {
421
+ "name": "height"
422
+ },
423
+ "slot_index": 0,
424
+ "links": [
425
+ 113,
426
+ 114
427
+ ]
428
+ }
429
+ ],
430
+ "title": "height",
431
+ "properties": {
432
+ "Run widget replace on values": false
433
+ },
434
+ "widgets_values": [
435
+ 1024,
436
+ "fixed"
437
+ ],
438
+ "color": "#323",
439
+ "bgcolor": "#535"
440
+ },
441
+ {
442
+ "id": 9,
443
+ "type": "SaveImage",
444
+ "pos": [
445
+ 1155,
446
+ 196
447
+ ],
448
+ "size": [
449
+ 985.3012084960938,
450
+ 1060.3828125
451
+ ],
452
+ "flags": {},
453
+ "order": 23,
454
+ "mode": 0,
455
+ "inputs": [
456
+ {
457
+ "localized_name": "images",
458
+ "name": "images",
459
+ "type": "IMAGE",
460
+ "link": 9
461
+ }
462
+ ],
463
+ "outputs": [],
464
+ "properties": {
465
+ "cnr_id": "comfy-core",
466
+ "ver": "0.3.27"
467
+ },
468
+ "widgets_values": [
469
+ "ComfyUI"
470
+ ]
471
+ },
472
+ {
473
+ "id": 37,
474
+ "type": "Note",
475
+ "pos": [
476
+ 480,
477
+ 1344
478
+ ],
479
+ "size": [
480
+ 314.99755859375,
481
+ 117.98363494873047
482
+ ],
483
+ "flags": {},
484
+ "order": 4,
485
+ "mode": 0,
486
+ "inputs": [],
487
+ "outputs": [],
488
+ "properties": {
489
+ "text": ""
490
+ },
491
+ "widgets_values": [
492
+ "The reference sampling implementation auto adjusts the shift value based on the resolution, if you don't want this you can just bypass (CTRL-B) this ModelSamplingFlux node.\n"
493
+ ],
494
+ "color": "#432",
495
+ "bgcolor": "#653"
496
+ },
497
+ {
498
+ "id": 28,
499
+ "type": "Note",
500
+ "pos": [
501
+ 48,
502
+ 576
503
+ ],
504
+ "size": [
505
+ 336,
506
+ 288
507
+ ],
508
+ "flags": {},
509
+ "order": 5,
510
+ "mode": 0,
511
+ "inputs": [],
512
+ "outputs": [],
513
+ "properties": {
514
+ "text": ""
515
+ },
516
+ "widgets_values": [
517
+ "If you get an error in any of the nodes above make sure the files are in the correct directories.\n\nSee the top of the examples page for the links : https://comfyanonymous.github.io/ComfyUI_examples/flux/\n\nflux1-dev.safetensors goes in: ComfyUI/models/unet/\n\nt5xxl_fp16.safetensors and clip_l.safetensors go in: ComfyUI/models/clip/\n\nae.safetensors goes in: ComfyUI/models/vae/\n\n\nTip: You can set the weight_dtype above to one of the fp8 types if you have memory issues."
518
+ ],
519
+ "color": "#432",
520
+ "bgcolor": "#653"
521
+ },
522
+ {
523
+ "id": 39,
524
+ "type": "CLIPVisionEncode",
525
+ "pos": [
526
+ 420,
527
+ -300
528
+ ],
529
+ "size": [
530
+ 290,
531
+ 78
532
+ ],
533
+ "flags": {},
534
+ "order": 15,
535
+ "mode": 0,
536
+ "inputs": [
537
+ {
538
+ "localized_name": "clip_vision",
539
+ "name": "clip_vision",
540
+ "type": "CLIP_VISION",
541
+ "link": 117
542
+ },
543
+ {
544
+ "localized_name": "image",
545
+ "name": "image",
546
+ "type": "IMAGE",
547
+ "link": 118
548
+ }
549
+ ],
550
+ "outputs": [
551
+ {
552
+ "localized_name": "CLIP_VISION_OUTPUT",
553
+ "name": "CLIP_VISION_OUTPUT",
554
+ "type": "CLIP_VISION_OUTPUT",
555
+ "slot_index": 0,
556
+ "links": [
557
+ 120
558
+ ]
559
+ }
560
+ ],
561
+ "properties": {
562
+ "cnr_id": "comfy-core",
563
+ "ver": "0.3.27",
564
+ "Node name for S&R": "CLIPVisionEncode"
565
+ },
566
+ "widgets_values": [
567
+ "center"
568
+ ]
569
+ },
570
+ {
571
+ "id": 42,
572
+ "type": "StyleModelLoader",
573
+ "pos": [
574
+ 400,
575
+ -180
576
+ ],
577
+ "size": [
578
+ 340,
579
+ 60
580
+ ],
581
+ "flags": {},
582
+ "order": 6,
583
+ "mode": 0,
584
+ "inputs": [],
585
+ "outputs": [
586
+ {
587
+ "localized_name": "STYLE_MODEL",
588
+ "name": "STYLE_MODEL",
589
+ "type": "STYLE_MODEL",
590
+ "links": [
591
+ 119
592
+ ]
593
+ }
594
+ ],
595
+ "properties": {
596
+ "cnr_id": "comfy-core",
597
+ "ver": "0.3.27",
598
+ "Node name for S&R": "StyleModelLoader"
599
+ },
600
+ "widgets_values": [
601
+ "flux1-redux-dev.safetensors"
602
+ ]
603
+ },
604
+ {
605
+ "id": 38,
606
+ "type": "CLIPVisionLoader",
607
+ "pos": [
608
+ 60,
609
+ -410
610
+ ],
611
+ "size": [
612
+ 370,
613
+ 60
614
+ ],
615
+ "flags": {},
616
+ "order": 7,
617
+ "mode": 0,
618
+ "inputs": [],
619
+ "outputs": [
620
+ {
621
+ "localized_name": "CLIP_VISION",
622
+ "name": "CLIP_VISION",
623
+ "type": "CLIP_VISION",
624
+ "slot_index": 0,
625
+ "links": [
626
+ 117
627
+ ]
628
+ }
629
+ ],
630
+ "properties": {
631
+ "cnr_id": "comfy-core",
632
+ "ver": "0.3.27",
633
+ "Node name for S&R": "CLIPVisionLoader"
634
+ },
635
+ "widgets_values": [
636
+ "sigclip_vision_patch14_384.safetensors"
637
+ ]
638
+ },
639
+ {
640
+ "id": 41,
641
+ "type": "StyleModelApply",
642
+ "pos": [
643
+ 760,
644
+ -300
645
+ ],
646
+ "size": [
647
+ 320,
648
+ 122
649
+ ],
650
+ "flags": {},
651
+ "order": 19,
652
+ "mode": 0,
653
+ "inputs": [
654
+ {
655
+ "localized_name": "conditioning",
656
+ "name": "conditioning",
657
+ "type": "CONDITIONING",
658
+ "link": 122
659
+ },
660
+ {
661
+ "localized_name": "style_model",
662
+ "name": "style_model",
663
+ "type": "STYLE_MODEL",
664
+ "link": 119
665
+ },
666
+ {
667
+ "localized_name": "clip_vision_output",
668
+ "name": "clip_vision_output",
669
+ "shape": 7,
670
+ "type": "CLIP_VISION_OUTPUT",
671
+ "link": 120
672
+ }
673
+ ],
674
+ "outputs": [
675
+ {
676
+ "localized_name": "CONDITIONING",
677
+ "name": "CONDITIONING",
678
+ "type": "CONDITIONING",
679
+ "slot_index": 0,
680
+ "links": [
681
+ 123
682
+ ]
683
+ }
684
+ ],
685
+ "properties": {
686
+ "cnr_id": "comfy-core",
687
+ "ver": "0.3.27",
688
+ "Node name for S&R": "StyleModelApply"
689
+ },
690
+ "widgets_values": [
691
+ 1,
692
+ "multiply"
693
+ ]
694
+ },
695
+ {
696
+ "id": 22,
697
+ "type": "BasicGuider",
698
+ "pos": [
699
+ 960,
700
+ 66
701
+ ],
702
+ "size": [
703
+ 222.3482666015625,
704
+ 46
705
+ ],
706
+ "flags": {},
707
+ "order": 20,
708
+ "mode": 0,
709
+ "inputs": [
710
+ {
711
+ "localized_name": "model",
712
+ "name": "model",
713
+ "type": "MODEL",
714
+ "link": 54
715
+ },
716
+ {
717
+ "localized_name": "conditioning",
718
+ "name": "conditioning",
719
+ "type": "CONDITIONING",
720
+ "link": 123
721
+ }
722
+ ],
723
+ "outputs": [
724
+ {
725
+ "localized_name": "GUIDER",
726
+ "name": "GUIDER",
727
+ "shape": 3,
728
+ "type": "GUIDER",
729
+ "slot_index": 0,
730
+ "links": [
731
+ 30
732
+ ]
733
+ }
734
+ ],
735
+ "properties": {
736
+ "cnr_id": "comfy-core",
737
+ "ver": "0.3.27",
738
+ "Node name for S&R": "BasicGuider"
739
+ },
740
+ "widgets_values": []
741
+ },
742
+ {
743
+ "id": 43,
744
+ "type": "Note",
745
+ "pos": [
746
+ 1130,
747
+ -440
748
+ ],
749
+ "size": [
750
+ 345.9017028808594,
751
+ 182.3145294189453
752
+ ],
753
+ "flags": {},
754
+ "order": 8,
755
+ "mode": 0,
756
+ "inputs": [],
757
+ "outputs": [],
758
+ "properties": {},
759
+ "widgets_values": [
760
+ "The redux model lets you prompt with images. It can be used with any Flux1 dev or schnell model workflow.\n\nYou can chain multiple \"Apply Style Model\" nodes if you want to mix multiple images together."
761
+ ],
762
+ "color": "#432",
763
+ "bgcolor": "#653"
764
+ },
765
+ {
766
+ "id": 6,
767
+ "type": "CLIPTextEncode",
768
+ "pos": [
769
+ 384,
770
+ 240
771
+ ],
772
+ "size": [
773
+ 422.84503173828125,
774
+ 164.31304931640625
775
+ ],
776
+ "flags": {},
777
+ "order": 14,
778
+ "mode": 0,
779
+ "inputs": [
780
+ {
781
+ "localized_name": "clip",
782
+ "name": "clip",
783
+ "type": "CLIP",
784
+ "link": 10
785
+ }
786
+ ],
787
+ "outputs": [
788
+ {
789
+ "localized_name": "CONDITIONING",
790
+ "name": "CONDITIONING",
791
+ "type": "CONDITIONING",
792
+ "slot_index": 0,
793
+ "links": [
794
+ 41
795
+ ]
796
+ }
797
+ ],
798
+ "title": "CLIP Text Encode (Positive Prompt)",
799
+ "properties": {
800
+ "cnr_id": "comfy-core",
801
+ "ver": "0.3.27",
802
+ "Node name for S&R": "CLIPTextEncode"
803
+ },
804
+ "widgets_values": [
805
+ "cute anime girl with massive fluffy fennec ears"
806
+ ],
807
+ "color": "#232",
808
+ "bgcolor": "#353"
809
+ },
810
+ {
811
+ "id": 17,
812
+ "type": "BasicScheduler",
813
+ "pos": [
814
+ 483.37908935546875,
815
+ 1006.0205688476562
816
+ ],
817
+ "size": [
818
+ 315,
819
+ 106
820
+ ],
821
+ "flags": {},
822
+ "order": 18,
823
+ "mode": 0,
824
+ "inputs": [
825
+ {
826
+ "localized_name": "model",
827
+ "name": "model",
828
+ "type": "MODEL",
829
+ "link": 55
830
+ }
831
+ ],
832
+ "outputs": [
833
+ {
834
+ "localized_name": "SIGMAS",
835
+ "name": "SIGMAS",
836
+ "shape": 3,
837
+ "type": "SIGMAS",
838
+ "links": [
839
+ 20
840
+ ]
841
+ }
842
+ ],
843
+ "properties": {
844
+ "cnr_id": "comfy-core",
845
+ "ver": "0.3.27",
846
+ "Node name for S&R": "BasicScheduler"
847
+ },
848
+ "widgets_values": [
849
+ "simple",
850
+ 20,
851
+ 1
852
+ ]
853
+ },
854
+ {
855
+ "id": 11,
856
+ "type": "DualCLIPLoader",
857
+ "pos": [
858
+ 50.331546783447266,
859
+ 305.58355712890625
860
+ ],
861
+ "size": [
862
+ 315,
863
+ 122
864
+ ],
865
+ "flags": {},
866
+ "order": 9,
867
+ "mode": 0,
868
+ "inputs": [],
869
+ "outputs": [
870
+ {
871
+ "localized_name": "CLIP",
872
+ "name": "CLIP",
873
+ "shape": 3,
874
+ "type": "CLIP",
875
+ "slot_index": 0,
876
+ "links": [
877
+ 10
878
+ ]
879
+ }
880
+ ],
881
+ "properties": {
882
+ "cnr_id": "comfy-core",
883
+ "ver": "0.3.27",
884
+ "Node name for S&R": "DualCLIPLoader"
885
+ },
886
+ "widgets_values": [
887
+ "t5xxl_fp16.safetensors",
888
+ "clip_l.safetensors",
889
+ "flux",
890
+ "default"
891
+ ]
892
+ },
893
+ {
894
+ "id": 10,
895
+ "type": "VAELoader",
896
+ "pos": [
897
+ 54.39567565917969,
898
+ 475.6108093261719
899
+ ],
900
+ "size": [
901
+ 311.81634521484375,
902
+ 60.429901123046875
903
+ ],
904
+ "flags": {},
905
+ "order": 10,
906
+ "mode": 0,
907
+ "inputs": [],
908
+ "outputs": [
909
+ {
910
+ "localized_name": "VAE",
911
+ "name": "VAE",
912
+ "shape": 3,
913
+ "type": "VAE",
914
+ "slot_index": 0,
915
+ "links": [
916
+ 12
917
+ ]
918
+ }
919
+ ],
920
+ "properties": {
921
+ "cnr_id": "comfy-core",
922
+ "ver": "0.3.27",
923
+ "Node name for S&R": "VAELoader"
924
+ },
925
+ "widgets_values": [
926
+ "ae.safetensors"
927
+ ]
928
+ },
929
+ {
930
+ "id": 40,
931
+ "type": "LoadImage",
932
+ "pos": [
933
+ 60,
934
+ -300
935
+ ],
936
+ "size": [
937
+ 315,
938
+ 314
939
+ ],
940
+ "flags": {},
941
+ "order": 11,
942
+ "mode": 0,
943
+ "inputs": [],
944
+ "outputs": [
945
+ {
946
+ "localized_name": "IMAGE",
947
+ "name": "IMAGE",
948
+ "type": "IMAGE",
949
+ "links": [
950
+ 118
951
+ ]
952
+ },
953
+ {
954
+ "localized_name": "MASK",
955
+ "name": "MASK",
956
+ "type": "MASK",
957
+ "links": null
958
+ }
959
+ ],
960
+ "properties": {
961
+ "cnr_id": "comfy-core",
962
+ "ver": "0.3.27",
963
+ "Node name for S&R": "LoadImage"
964
+ },
965
+ "widgets_values": [
966
+ "flux_redux_model_example.png",
967
+ "image",
968
+ ""
969
+ ]
970
+ },
971
+ {
972
+ "id": 45,
973
+ "type": "NunchakuFluxDiTLoader",
974
+ "pos": [
975
+ 83.87139129638672,
976
+ 1020.9346313476562
977
+ ],
978
+ "size": [
979
+ 315,
980
+ 202
981
+ ],
982
+ "flags": {},
983
+ "order": 12,
984
+ "mode": 0,
985
+ "inputs": [],
986
+ "outputs": [
987
+ {
988
+ "localized_name": "MODEL",
989
+ "name": "MODEL",
990
+ "type": "MODEL",
991
+ "links": [
992
+ 125
993
+ ]
994
+ }
995
+ ],
996
+ "properties": {
997
+ "Node name for S&R": "NunchakuFluxDiTLoader"
998
+ },
999
+ "widgets_values": [
1000
+ "svdq-int4-flux.1-dev",
1001
+ 0,
1002
+ "nunchaku-fp16",
1003
+ "auto",
1004
+ 0,
1005
+ "bfloat16",
1006
+ "enabled"
1007
+ ]
1008
+ }
1009
+ ],
1010
+ "links": [
1011
+ [
1012
+ 9,
1013
+ 8,
1014
+ 0,
1015
+ 9,
1016
+ 0,
1017
+ "IMAGE"
1018
+ ],
1019
+ [
1020
+ 10,
1021
+ 11,
1022
+ 0,
1023
+ 6,
1024
+ 0,
1025
+ "CLIP"
1026
+ ],
1027
+ [
1028
+ 12,
1029
+ 10,
1030
+ 0,
1031
+ 8,
1032
+ 1,
1033
+ "VAE"
1034
+ ],
1035
+ [
1036
+ 19,
1037
+ 16,
1038
+ 0,
1039
+ 13,
1040
+ 2,
1041
+ "SAMPLER"
1042
+ ],
1043
+ [
1044
+ 20,
1045
+ 17,
1046
+ 0,
1047
+ 13,
1048
+ 3,
1049
+ "SIGMAS"
1050
+ ],
1051
+ [
1052
+ 24,
1053
+ 13,
1054
+ 0,
1055
+ 8,
1056
+ 0,
1057
+ "LATENT"
1058
+ ],
1059
+ [
1060
+ 30,
1061
+ 22,
1062
+ 0,
1063
+ 13,
1064
+ 1,
1065
+ "GUIDER"
1066
+ ],
1067
+ [
1068
+ 37,
1069
+ 25,
1070
+ 0,
1071
+ 13,
1072
+ 0,
1073
+ "NOISE"
1074
+ ],
1075
+ [
1076
+ 41,
1077
+ 6,
1078
+ 0,
1079
+ 26,
1080
+ 0,
1081
+ "CONDITIONING"
1082
+ ],
1083
+ [
1084
+ 54,
1085
+ 30,
1086
+ 0,
1087
+ 22,
1088
+ 0,
1089
+ "MODEL"
1090
+ ],
1091
+ [
1092
+ 55,
1093
+ 30,
1094
+ 0,
1095
+ 17,
1096
+ 0,
1097
+ "MODEL"
1098
+ ],
1099
+ [
1100
+ 112,
1101
+ 34,
1102
+ 0,
1103
+ 27,
1104
+ 0,
1105
+ "INT"
1106
+ ],
1107
+ [
1108
+ 113,
1109
+ 35,
1110
+ 0,
1111
+ 27,
1112
+ 1,
1113
+ "INT"
1114
+ ],
1115
+ [
1116
+ 114,
1117
+ 35,
1118
+ 0,
1119
+ 30,
1120
+ 2,
1121
+ "INT"
1122
+ ],
1123
+ [
1124
+ 115,
1125
+ 34,
1126
+ 0,
1127
+ 30,
1128
+ 1,
1129
+ "INT"
1130
+ ],
1131
+ [
1132
+ 116,
1133
+ 27,
1134
+ 0,
1135
+ 13,
1136
+ 4,
1137
+ "LATENT"
1138
+ ],
1139
+ [
1140
+ 117,
1141
+ 38,
1142
+ 0,
1143
+ 39,
1144
+ 0,
1145
+ "CLIP_VISION"
1146
+ ],
1147
+ [
1148
+ 118,
1149
+ 40,
1150
+ 0,
1151
+ 39,
1152
+ 1,
1153
+ "IMAGE"
1154
+ ],
1155
+ [
1156
+ 119,
1157
+ 42,
1158
+ 0,
1159
+ 41,
1160
+ 1,
1161
+ "STYLE_MODEL"
1162
+ ],
1163
+ [
1164
+ 120,
1165
+ 39,
1166
+ 0,
1167
+ 41,
1168
+ 2,
1169
+ "CLIP_VISION_OUTPUT"
1170
+ ],
1171
+ [
1172
+ 122,
1173
+ 26,
1174
+ 0,
1175
+ 41,
1176
+ 0,
1177
+ "CONDITIONING"
1178
+ ],
1179
+ [
1180
+ 123,
1181
+ 41,
1182
+ 0,
1183
+ 22,
1184
+ 1,
1185
+ "CONDITIONING"
1186
+ ],
1187
+ [
1188
+ 125,
1189
+ 45,
1190
+ 0,
1191
+ 30,
1192
+ 0,
1193
+ "MODEL"
1194
+ ]
1195
+ ],
1196
+ "groups": [
1197
+ {
1198
+ "id": 1,
1199
+ "title": "Redux Model",
1200
+ "bounding": [
1201
+ 50,
1202
+ -483.6000061035156,
1203
+ 1040,
1204
+ 507.6000061035156
1205
+ ],
1206
+ "color": "#3f789e",
1207
+ "font_size": 24,
1208
+ "flags": {}
1209
+ }
1210
+ ],
1211
+ "config": {},
1212
+ "extra": {
1213
+ "ds": {
1214
+ "scale": 1.1,
1215
+ "offset": [
1216
+ 806.9864064691736,
1217
+ -252.69362916013048
1218
+ ]
1219
+ },
1220
+ "groupNodes": {
1221
+ "EmptyLatentImage": {
1222
+ "nodes": [
1223
+ {
1224
+ "type": "PrimitiveNode",
1225
+ "pos": [
1226
+ 432,
1227
+ 480
1228
+ ],
1229
+ "size": {
1230
+ "0": 210,
1231
+ "1": 82
1232
+ },
1233
+ "flags": {},
1234
+ "order": 6,
1235
+ "mode": 0,
1236
+ "outputs": [
1237
+ {
1238
+ "name": "INT",
1239
+ "type": "INT",
1240
+ "links": [],
1241
+ "widget": {
1242
+ "name": "height"
1243
+ },
1244
+ "slot_index": 0
1245
+ }
1246
+ ],
1247
+ "title": "height",
1248
+ "properties": {
1249
+ "Run widget replace on values": false
1250
+ },
1251
+ "color": "#323",
1252
+ "bgcolor": "#535",
1253
+ "index": 0
1254
+ },
1255
+ {
1256
+ "type": "PrimitiveNode",
1257
+ "pos": [
1258
+ 672,
1259
+ 480
1260
+ ],
1261
+ "size": {
1262
+ "0": 210,
1263
+ "1": 82
1264
+ },
1265
+ "flags": {},
1266
+ "order": 7,
1267
+ "mode": 0,
1268
+ "outputs": [
1269
+ {
1270
+ "name": "INT",
1271
+ "type": "INT",
1272
+ "links": [],
1273
+ "slot_index": 0,
1274
+ "widget": {
1275
+ "name": "width"
1276
+ }
1277
+ }
1278
+ ],
1279
+ "title": "width",
1280
+ "properties": {
1281
+ "Run widget replace on values": false
1282
+ },
1283
+ "color": "#323",
1284
+ "bgcolor": "#535",
1285
+ "index": 1
1286
+ },
1287
+ {
1288
+ "type": "EmptySD3LatentImage",
1289
+ "pos": [
1290
+ 480,
1291
+ 624
1292
+ ],
1293
+ "size": {
1294
+ "0": 315,
1295
+ "1": 106
1296
+ },
1297
+ "flags": {},
1298
+ "order": 10,
1299
+ "mode": 0,
1300
+ "inputs": [
1301
+ {
1302
+ "name": "width",
1303
+ "type": "INT",
1304
+ "link": null,
1305
+ "widget": {
1306
+ "name": "width"
1307
+ }
1308
+ },
1309
+ {
1310
+ "name": "height",
1311
+ "type": "INT",
1312
+ "link": null,
1313
+ "widget": {
1314
+ "name": "height"
1315
+ }
1316
+ }
1317
+ ],
1318
+ "outputs": [
1319
+ {
1320
+ "name": "LATENT",
1321
+ "type": "LATENT",
1322
+ "links": [],
1323
+ "shape": 3,
1324
+ "slot_index": 0
1325
+ }
1326
+ ],
1327
+ "properties": {
1328
+ "Node name for S&R": "EmptySD3LatentImage"
1329
+ },
1330
+ "widgets_values": [
1331
+ 1024,
1332
+ 1024,
1333
+ 1
1334
+ ],
1335
+ "index": 2
1336
+ }
1337
+ ],
1338
+ "links": [
1339
+ [
1340
+ 1,
1341
+ 0,
1342
+ 2,
1343
+ 0,
1344
+ 34,
1345
+ "INT"
1346
+ ],
1347
+ [
1348
+ 0,
1349
+ 0,
1350
+ 2,
1351
+ 1,
1352
+ 35,
1353
+ "INT"
1354
+ ]
1355
+ ],
1356
+ "external": [
1357
+ [
1358
+ 0,
1359
+ 0,
1360
+ "INT"
1361
+ ],
1362
+ [
1363
+ 1,
1364
+ 0,
1365
+ "INT"
1366
+ ],
1367
+ [
1368
+ 2,
1369
+ 0,
1370
+ "LATENT"
1371
+ ]
1372
+ ],
1373
+ "config": {
1374
+ "0": {
1375
+ "output": {
1376
+ "0": {
1377
+ "name": "height"
1378
+ }
1379
+ },
1380
+ "input": {
1381
+ "value": {
1382
+ "visible": true
1383
+ }
1384
+ }
1385
+ },
1386
+ "1": {
1387
+ "output": {
1388
+ "0": {
1389
+ "name": "width"
1390
+ }
1391
+ },
1392
+ "input": {
1393
+ "value": {
1394
+ "visible": true
1395
+ }
1396
+ }
1397
+ },
1398
+ "2": {
1399
+ "input": {
1400
+ "width": {
1401
+ "visible": false
1402
+ },
1403
+ "height": {
1404
+ "visible": false
1405
+ }
1406
+ }
1407
+ }
1408
+ }
1409
+ }
1410
+ }
1411
+ },
1412
+ "version": 0.4
1413
+ }
workflows/nunchaku-flux.1-schnell.json ADDED
@@ -0,0 +1,630 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "d24d0f3f-b304-405e-b7c4-0b0abfa1c33b",
3
+ "revision": 0,
4
+ "last_node_id": 31,
5
+ "last_link_id": 46,
6
+ "nodes": [
7
+ {
8
+ "id": 8,
9
+ "type": "VAEDecode",
10
+ "pos": [
11
+ 1248,
12
+ 192
13
+ ],
14
+ "size": [
15
+ 210,
16
+ 46
17
+ ],
18
+ "flags": {},
19
+ "order": 10,
20
+ "mode": 0,
21
+ "inputs": [
22
+ {
23
+ "localized_name": "samples",
24
+ "name": "samples",
25
+ "type": "LATENT",
26
+ "link": 24
27
+ },
28
+ {
29
+ "localized_name": "vae",
30
+ "name": "vae",
31
+ "type": "VAE",
32
+ "link": 12
33
+ }
34
+ ],
35
+ "outputs": [
36
+ {
37
+ "localized_name": "IMAGE",
38
+ "name": "IMAGE",
39
+ "type": "IMAGE",
40
+ "slot_index": 0,
41
+ "links": [
42
+ 9
43
+ ]
44
+ }
45
+ ],
46
+ "properties": {
47
+ "cnr_id": "comfy-core",
48
+ "ver": "0.3.27",
49
+ "Node name for S&R": "VAEDecode"
50
+ },
51
+ "widgets_values": []
52
+ },
53
+ {
54
+ "id": 5,
55
+ "type": "EmptyLatentImage",
56
+ "pos": [
57
+ 480,
58
+ 432
59
+ ],
60
+ "size": [
61
+ 315,
62
+ 106
63
+ ],
64
+ "flags": {},
65
+ "order": 0,
66
+ "mode": 0,
67
+ "inputs": [],
68
+ "outputs": [
69
+ {
70
+ "localized_name": "LATENT",
71
+ "name": "LATENT",
72
+ "type": "LATENT",
73
+ "slot_index": 0,
74
+ "links": [
75
+ 23
76
+ ]
77
+ }
78
+ ],
79
+ "properties": {
80
+ "cnr_id": "comfy-core",
81
+ "ver": "0.3.27",
82
+ "Node name for S&R": "EmptyLatentImage"
83
+ },
84
+ "widgets_values": [
85
+ 1024,
86
+ 1024,
87
+ 1
88
+ ],
89
+ "color": "#323",
90
+ "bgcolor": "#535"
91
+ },
92
+ {
93
+ "id": 16,
94
+ "type": "KSamplerSelect",
95
+ "pos": [
96
+ 480,
97
+ 720
98
+ ],
99
+ "size": [
100
+ 315,
101
+ 58
102
+ ],
103
+ "flags": {},
104
+ "order": 1,
105
+ "mode": 0,
106
+ "inputs": [],
107
+ "outputs": [
108
+ {
109
+ "localized_name": "SAMPLER",
110
+ "name": "SAMPLER",
111
+ "shape": 3,
112
+ "type": "SAMPLER",
113
+ "links": [
114
+ 19
115
+ ]
116
+ }
117
+ ],
118
+ "properties": {
119
+ "cnr_id": "comfy-core",
120
+ "ver": "0.3.27",
121
+ "Node name for S&R": "KSamplerSelect"
122
+ },
123
+ "widgets_values": [
124
+ "euler"
125
+ ]
126
+ },
127
+ {
128
+ "id": 17,
129
+ "type": "BasicScheduler",
130
+ "pos": [
131
+ 480,
132
+ 816
133
+ ],
134
+ "size": [
135
+ 315,
136
+ 106
137
+ ],
138
+ "flags": {},
139
+ "order": 6,
140
+ "mode": 0,
141
+ "inputs": [
142
+ {
143
+ "localized_name": "model",
144
+ "name": "model",
145
+ "type": "MODEL",
146
+ "link": 45
147
+ }
148
+ ],
149
+ "outputs": [
150
+ {
151
+ "localized_name": "SIGMAS",
152
+ "name": "SIGMAS",
153
+ "shape": 3,
154
+ "type": "SIGMAS",
155
+ "links": [
156
+ 20
157
+ ]
158
+ }
159
+ ],
160
+ "properties": {
161
+ "cnr_id": "comfy-core",
162
+ "ver": "0.3.27",
163
+ "Node name for S&R": "BasicScheduler"
164
+ },
165
+ "widgets_values": [
166
+ "simple",
167
+ 4,
168
+ 1
169
+ ]
170
+ },
171
+ {
172
+ "id": 22,
173
+ "type": "BasicGuider",
174
+ "pos": [
175
+ 552.8497924804688,
176
+ 128.6840362548828
177
+ ],
178
+ "size": [
179
+ 241.79998779296875,
180
+ 46
181
+ ],
182
+ "flags": {},
183
+ "order": 8,
184
+ "mode": 0,
185
+ "inputs": [
186
+ {
187
+ "localized_name": "model",
188
+ "name": "model",
189
+ "type": "MODEL",
190
+ "link": 44
191
+ },
192
+ {
193
+ "localized_name": "conditioning",
194
+ "name": "conditioning",
195
+ "type": "CONDITIONING",
196
+ "link": 40
197
+ }
198
+ ],
199
+ "outputs": [
200
+ {
201
+ "localized_name": "GUIDER",
202
+ "name": "GUIDER",
203
+ "shape": 3,
204
+ "type": "GUIDER",
205
+ "slot_index": 0,
206
+ "links": [
207
+ 30
208
+ ]
209
+ }
210
+ ],
211
+ "properties": {
212
+ "cnr_id": "comfy-core",
213
+ "ver": "0.3.27",
214
+ "Node name for S&R": "BasicGuider"
215
+ },
216
+ "widgets_values": []
217
+ },
218
+ {
219
+ "id": 6,
220
+ "type": "CLIPTextEncode",
221
+ "pos": [
222
+ 375,
223
+ 221
224
+ ],
225
+ "size": [
226
+ 422.84503173828125,
227
+ 164.31304931640625
228
+ ],
229
+ "flags": {},
230
+ "order": 7,
231
+ "mode": 0,
232
+ "inputs": [
233
+ {
234
+ "localized_name": "clip",
235
+ "name": "clip",
236
+ "type": "CLIP",
237
+ "link": 46
238
+ }
239
+ ],
240
+ "outputs": [
241
+ {
242
+ "localized_name": "CONDITIONING",
243
+ "name": "CONDITIONING",
244
+ "type": "CONDITIONING",
245
+ "slot_index": 0,
246
+ "links": [
247
+ 40
248
+ ]
249
+ }
250
+ ],
251
+ "properties": {
252
+ "cnr_id": "comfy-core",
253
+ "ver": "0.3.27",
254
+ "Node name for S&R": "CLIPTextEncode"
255
+ },
256
+ "widgets_values": [
257
+ "Pirate ship trapped in a cosmic maelstrom nebula, rendered in cosmic beach whirlpool engine, volumetric lighting, spectacular, ambient lights, light pollution, cinematic atmosphere, art nouveau style, illustration art artwork by SenseiJaye, intricate detail."
258
+ ],
259
+ "color": "#232",
260
+ "bgcolor": "#353"
261
+ },
262
+ {
263
+ "id": 13,
264
+ "type": "SamplerCustomAdvanced",
265
+ "pos": [
266
+ 842,
267
+ 215
268
+ ],
269
+ "size": [
270
+ 355.20001220703125,
271
+ 106
272
+ ],
273
+ "flags": {},
274
+ "order": 9,
275
+ "mode": 0,
276
+ "inputs": [
277
+ {
278
+ "localized_name": "noise",
279
+ "name": "noise",
280
+ "type": "NOISE",
281
+ "link": 37
282
+ },
283
+ {
284
+ "localized_name": "guider",
285
+ "name": "guider",
286
+ "type": "GUIDER",
287
+ "link": 30
288
+ },
289
+ {
290
+ "localized_name": "sampler",
291
+ "name": "sampler",
292
+ "type": "SAMPLER",
293
+ "link": 19
294
+ },
295
+ {
296
+ "localized_name": "sigmas",
297
+ "name": "sigmas",
298
+ "type": "SIGMAS",
299
+ "link": 20
300
+ },
301
+ {
302
+ "localized_name": "latent_image",
303
+ "name": "latent_image",
304
+ "type": "LATENT",
305
+ "link": 23
306
+ }
307
+ ],
308
+ "outputs": [
309
+ {
310
+ "localized_name": "output",
311
+ "name": "output",
312
+ "shape": 3,
313
+ "type": "LATENT",
314
+ "slot_index": 0,
315
+ "links": [
316
+ 24
317
+ ]
318
+ },
319
+ {
320
+ "localized_name": "denoised_output",
321
+ "name": "denoised_output",
322
+ "shape": 3,
323
+ "type": "LATENT",
324
+ "links": null
325
+ }
326
+ ],
327
+ "properties": {
328
+ "cnr_id": "comfy-core",
329
+ "ver": "0.3.27",
330
+ "Node name for S&R": "SamplerCustomAdvanced"
331
+ },
332
+ "widgets_values": []
333
+ },
334
+ {
335
+ "id": 9,
336
+ "type": "SaveImage",
337
+ "pos": [
338
+ 1569.9610595703125,
339
+ 199.1280517578125
340
+ ],
341
+ "size": [
342
+ 985.3012084960938,
343
+ 1060.3828125
344
+ ],
345
+ "flags": {},
346
+ "order": 11,
347
+ "mode": 0,
348
+ "inputs": [
349
+ {
350
+ "localized_name": "images",
351
+ "name": "images",
352
+ "type": "IMAGE",
353
+ "link": 9
354
+ }
355
+ ],
356
+ "outputs": [],
357
+ "properties": {
358
+ "cnr_id": "comfy-core",
359
+ "ver": "0.3.27"
360
+ },
361
+ "widgets_values": [
362
+ "ComfyUI",
363
+ ""
364
+ ]
365
+ },
366
+ {
367
+ "id": 10,
368
+ "type": "VAELoader",
369
+ "pos": [
370
+ 874.65625,
371
+ 480.88372802734375
372
+ ],
373
+ "size": [
374
+ 315,
375
+ 58
376
+ ],
377
+ "flags": {},
378
+ "order": 2,
379
+ "mode": 0,
380
+ "inputs": [],
381
+ "outputs": [
382
+ {
383
+ "localized_name": "VAE",
384
+ "name": "VAE",
385
+ "shape": 3,
386
+ "type": "VAE",
387
+ "slot_index": 0,
388
+ "links": [
389
+ 12
390
+ ]
391
+ }
392
+ ],
393
+ "properties": {
394
+ "cnr_id": "comfy-core",
395
+ "ver": "0.3.27",
396
+ "Node name for S&R": "VAELoader"
397
+ },
398
+ "widgets_values": [
399
+ "ae.safetensors"
400
+ ]
401
+ },
402
+ {
403
+ "id": 25,
404
+ "type": "RandomNoise",
405
+ "pos": [
406
+ 479.2310485839844,
407
+ 589.0120239257812
408
+ ],
409
+ "size": [
410
+ 315,
411
+ 82
412
+ ],
413
+ "flags": {},
414
+ "order": 3,
415
+ "mode": 0,
416
+ "inputs": [],
417
+ "outputs": [
418
+ {
419
+ "localized_name": "NOISE",
420
+ "name": "NOISE",
421
+ "shape": 3,
422
+ "type": "NOISE",
423
+ "links": [
424
+ 37
425
+ ]
426
+ }
427
+ ],
428
+ "properties": {
429
+ "cnr_id": "comfy-core",
430
+ "ver": "0.3.27",
431
+ "Node name for S&R": "RandomNoise"
432
+ },
433
+ "widgets_values": [
434
+ 1037743483120774,
435
+ "fixed"
436
+ ],
437
+ "color": "#2a363b",
438
+ "bgcolor": "#3f5159"
439
+ },
440
+ {
441
+ "id": 30,
442
+ "type": "NunchakuFluxDiTLoader",
443
+ "pos": [
444
+ -51.99778366088867,
445
+ 554.4547119140625
446
+ ],
447
+ "size": [
448
+ 315,
449
+ 202
450
+ ],
451
+ "flags": {},
452
+ "order": 4,
453
+ "mode": 0,
454
+ "inputs": [],
455
+ "outputs": [
456
+ {
457
+ "localized_name": "MODEL",
458
+ "name": "MODEL",
459
+ "type": "MODEL",
460
+ "links": [
461
+ 44,
462
+ 45
463
+ ]
464
+ }
465
+ ],
466
+ "properties": {
467
+ "Node name for S&R": "NunchakuFluxDiTLoader"
468
+ },
469
+ "widgets_values": [
470
+ "svdq-int4-flux.1-schnell",
471
+ 0,
472
+ "nunchaku-fp16",
473
+ "auto",
474
+ 0,
475
+ "bfloat16",
476
+ "enabled"
477
+ ]
478
+ },
479
+ {
480
+ "id": 31,
481
+ "type": "NunchakuTextEncoderLoader",
482
+ "pos": [
483
+ -86.92931365966797,
484
+ 273.9510803222656
485
+ ],
486
+ "size": [
487
+ 352.79998779296875,
488
+ 178
489
+ ],
490
+ "flags": {},
491
+ "order": 5,
492
+ "mode": 0,
493
+ "inputs": [],
494
+ "outputs": [
495
+ {
496
+ "localized_name": "CLIP",
497
+ "name": "CLIP",
498
+ "type": "CLIP",
499
+ "links": [
500
+ 46
501
+ ]
502
+ }
503
+ ],
504
+ "properties": {
505
+ "Node name for S&R": "NunchakuTextEncoderLoader"
506
+ },
507
+ "widgets_values": [
508
+ "flux",
509
+ "t5xxl_fp16.safetensors",
510
+ "clip_l.safetensors",
511
+ 512,
512
+ "disable",
513
+ "none"
514
+ ]
515
+ }
516
+ ],
517
+ "links": [
518
+ [
519
+ 9,
520
+ 8,
521
+ 0,
522
+ 9,
523
+ 0,
524
+ "IMAGE"
525
+ ],
526
+ [
527
+ 12,
528
+ 10,
529
+ 0,
530
+ 8,
531
+ 1,
532
+ "VAE"
533
+ ],
534
+ [
535
+ 19,
536
+ 16,
537
+ 0,
538
+ 13,
539
+ 2,
540
+ "SAMPLER"
541
+ ],
542
+ [
543
+ 20,
544
+ 17,
545
+ 0,
546
+ 13,
547
+ 3,
548
+ "SIGMAS"
549
+ ],
550
+ [
551
+ 23,
552
+ 5,
553
+ 0,
554
+ 13,
555
+ 4,
556
+ "LATENT"
557
+ ],
558
+ [
559
+ 24,
560
+ 13,
561
+ 0,
562
+ 8,
563
+ 0,
564
+ "LATENT"
565
+ ],
566
+ [
567
+ 30,
568
+ 22,
569
+ 0,
570
+ 13,
571
+ 1,
572
+ "GUIDER"
573
+ ],
574
+ [
575
+ 37,
576
+ 25,
577
+ 0,
578
+ 13,
579
+ 0,
580
+ "NOISE"
581
+ ],
582
+ [
583
+ 40,
584
+ 6,
585
+ 0,
586
+ 22,
587
+ 1,
588
+ "CONDITIONING"
589
+ ],
590
+ [
591
+ 44,
592
+ 30,
593
+ 0,
594
+ 22,
595
+ 0,
596
+ "MODEL"
597
+ ],
598
+ [
599
+ 45,
600
+ 30,
601
+ 0,
602
+ 17,
603
+ 0,
604
+ "MODEL"
605
+ ],
606
+ [
607
+ 46,
608
+ 31,
609
+ 0,
610
+ 6,
611
+ 0,
612
+ "CLIP"
613
+ ]
614
+ ],
615
+ "groups": [],
616
+ "config": {},
617
+ "extra": {
618
+ "ds": {
619
+ "scale": 1.0152559799477088,
620
+ "offset": [
621
+ 517.2566558039406,
622
+ -11.10350450888439
623
+ ]
624
+ },
625
+ "node_versions": {
626
+ "comfy-core": "0.3.24"
627
+ }
628
+ },
629
+ "version": 0.4
630
+ }