Aikimi commited on
Commit
6231647
·
verified ·
1 Parent(s): a20383b

Add validated Iris-3B weight-only INT8 models and CUDA comparisons

Browse files
.gitattributes CHANGED
@@ -33,3 +33,9 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ examples/depth-photo.jpg filter=lfs diff=lfs merge=lfs -text
37
+ examples/depth-watercolor.jpg filter=lfs diff=lfs merge=lfs -text
38
+ examples/generate-photo.jpg filter=lfs diff=lfs merge=lfs -text
39
+ examples/generate-watercolor.jpg filter=lfs diff=lfs merge=lfs -text
40
+ examples/upscale-photo.jpg filter=lfs diff=lfs merge=lfs -text
41
+ examples/upscale-watercolor.jpg filter=lfs diff=lfs merge=lfs -text
LICENSE ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
NOTICE ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ Iris-3B
2
+ Copyright 2026 Speridlabs
3
+
4
+ This product is licensed under the Apache License, Version 2.0 (see LICENSE).
5
+
6
+ Runtime dependencies that are downloaded, not redistributed, keep their own
7
+ licenses, including:
8
+ - Qwen3-VL-4B-Instruct (text encoder), Alibaba Cloud, Apache License 2.0
9
+ - DINOv2 (REPA teacher, training only), Meta Platforms, Apache License 2.0
10
+ - Dion (Muon optimizer implementation), Microsoft, MIT License
README.md ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - en
5
+ - ja
6
+ library_name: pytorch
7
+ pipeline_tag: text-to-image
8
+ tags:
9
+ - iris
10
+ - forge-neo
11
+ - int8
12
+ - weight-only
13
+ - image-to-image
14
+ - depth-estimation
15
+ - image-restoration
16
+ base_model: speridlabs/iris-3b
17
+ ---
18
+
19
+ # Iris-3B INT8 for Aikimi Forge Neo
20
+
21
+ Rowwise symmetric, weight-only INT8 derivatives of Speridlabs' Iris-3B image generation, relative depth, and restoration models. Use the Iris tab in [Aikimi Forge Neo](https://github.com/AiWithYou/aikimi-forge-neo). The integration can also run the original, unquantized weights.
22
+
23
+ This is a custom checkpoint format (`iris-rowwise-int8-v1`) for Forge Neo's Iris loader. It stores selected Linear weights as INT8 with per-output FP32 scales, then computes Linear operations in BF16 under CUDA autocast. It does not use an integer GEMM kernel. Shared modulation cores and other parameters retain their original format. The Qwen3-VL text encoder is unchanged and downloaded separately for image generation; depth and restoration do not load it.
24
+
25
+ ## Files and use
26
+
27
+ | Directory | Task | INT8 model bytes | Original model bytes |
28
+ |---|---|---:|---:|
29
+ | Root | Text-to-image | 3,233,164,048 | 11,950,112,680 |
30
+ | `depth/` | Relative depth | 3,233,825,264 | 11,952,738,184 |
31
+ | `upscaler/` | Restoration and 4x enlargement | 3,233,164,048 | 11,950,112,680 |
32
+
33
+ Each model includes its original configuration and a `manifest.json` recording the source revision, SHA-256, conversion format, quantized Linear count, and output file sizes and SHA-256. Downstream models also include their original empty-prompt embedding. Model weights alone are about 73% smaller. Text-to-image still needs the separate Qwen3-VL-4B-Instruct encoder (about 8.88 GB of weights).
34
+
35
+ On Windows with an NVIDIA GPU, update Forge Neo and run:
36
+
37
+ ```powershell
38
+ .\aikimi-iris-setup.bat
39
+ ```
40
+
41
+ Or select Iris, a task, and INT8 in the UI, then choose **モデルを準備**. Only the selected task's weights are downloaded. To prepare all three:
42
+
43
+ ```powershell
44
+ .\venv\Scripts\python.exe tools/setup_iris.py --precision int8 --task all
45
+ ```
46
+
47
+ Forge Neo downloads a fixed, validated Hub commit and checks every weight file against size and SHA-256. Users do not need to quantize locally. The dedicated worker environment is separate from the main UI environment. Source inference code is pinned; only its packaging definition moves training dependencies into an optional extra.
48
+
49
+ The format requires Forge Neo's quantization loader. Loading these files directly with the original upstream loader or a Diffusers pipeline is not supported.
50
+
51
+ Text-to-image size choices follow the upstream demo's buckets with substantial training mass: 1024x1024 (default), 1344x768, 1280x832, 1152x896, 896x1152, 832x1280, and 768x1344. Additional INT8 UI tests at 256x256 produced collapsed grid-like output and at 512x512 visible grid artifacts, so these sizes are excluded from the integration. The paired comparison images below use 1024x1024.
52
+
53
+ ## Measured comparisons
54
+
55
+ Tested on 2026-10-09 with one NVIDIA RTX 3090 24 GB, Windows, Python 3.13.14, PyTorch 2.13.0+cu130. Each pair uses identical input and conditions. Text-to-image uses 1024x1024, 100 steps, CFG 3, an empty negative prompt, and fixed seeds. Cold-load smoke tests and initial CPU model construction are excluded from timing; inference wall time includes returning model weights to CPU. Peaks are PyTorch CUDA allocated memory, not total board usage. Each condition was measured once.
56
+
57
+ Text-to-image's measured peak decreased from approximately 18.9 GiB to 10.7 GiB. Generation times were similar, with INT8 slightly slower in these samples. Both normal and INT8 completed at 1024x1024 on this 24 GB card. No physical 12 GB or 16 GB card was tested.
58
+
59
+ ![Photo comparison](examples/generate-photo.jpg)
60
+
61
+ ![Watercolor comparison](examples/generate-watercolor.jpg)
62
+
63
+ Both generated pairs preserved the scene and subject in visual inspection, with small changes in fine detail. They are not pixel-identical, and these examples do not establish lossless quantization or a general quality guarantee. Prompts, seeds, raw measurements, and paired differences are in [benchmark.json](benchmark.json).
64
+
65
+ Depth is relative depth, not metric distance. The two 1024x1024 comparisons have finite depth arrays and normal/INT8 Pearson correlations of 0.999908 and 0.999945; this measures agreement between variants, not ground-truth depth accuracy. PNG visualization and NPY arrays are exported.
66
+
67
+ ![Relative depth comparison](examples/depth-photo.jpg)
68
+
69
+ Restoration inputs were deliberately downsampled and JPEG-compressed generated references: 256x256 quality 35 to 1024x1024 (one tile), and 384x256 quality 45 to 1536x1024 (two overlapping tiles). Both precisions completed both paths, and floating-point output was checked for finiteness before integer image conversion. Visual inspection found similar structure and detail in these pairs, with small changes. Restoration may reconstruct detail differently from the reference.
70
+
71
+ ![Restoration comparison](examples/upscale-watercolor.jpg)
72
+
73
+ All twelve paired CUDA cases completed. Depth/restoration peak allocated memory was approximately 15.0–15.1 GiB normal and 6.8–6.9 GiB INT8. These tasks had no pre-run warmup; the first photo includes cold GPU transfer and host memory/disk effects, so their times must not be compared as a steady-state speed benchmark. See the methodology in benchmark.json.
74
+
75
+ Restoration follows the upstream input budget (short edge up to 512, long edge up to 1024) and enlarges that processed input 4x, using overlapping tiles where required.
76
+
77
+ ## Source and license
78
+
79
+ - Original model: [speridlabs/iris-3b](https://huggingface.co/speridlabs/iris-3b), revision `7445443349bc9abe3c96f01ff793e2098ca012b3`.
80
+ - Original inference: [speridlabs/iris-3b](https://github.com/speridlabs/iris-3b), commit `a8d15239dea469aba042cfa56ca3bb4e450d5ebc`.
81
+ - Text encoder: [Qwen/Qwen3-VL-4B-Instruct](https://huggingface.co/Qwen/Qwen3-VL-4B-Instruct), revision `ebb281ec70b05090aa6165b016eac8ec08e71b17`.
82
+
83
+ Apache-2.0. Original LICENSE and NOTICE are retained. Aikimi's modification is the weight-only conversion and Forge Neo integration; this is an independently converted derivative, not an official Speridlabs INT8 release.
benchmark.json ADDED
@@ -0,0 +1,305 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "date": "2026-10-09",
3
+ "environment": {
4
+ "torch": "2.13.0+cu130",
5
+ "python": "3.13.14 (main, Jun 11 2026, 04:04:46)",
6
+ "device": "NVIDIA GeForce RTX 3090",
7
+ "cuda": "13.0",
8
+ "torch_threads": 10
9
+ },
10
+ "method": "One GPU; one task model at a time; torch inference mode and BF16 autocast. T2I uses Qwen3-VL-4B and 100 steps, 1024x1024, CFG 3 after a 2-step warmup. Other tasks have no warmup; their first photo case includes cold GPU transfer and host memory/disk effects. Times are Runner.run wall time including GPU offload, excluding initial CPU model construction and downloads. Initial 2-step T2I cold-load smoke is excluded. Each condition was measured once, not a statistical speed benchmark. Peak is torch CUDA allocated/reserved memory for the inference. It excludes other processes and is not total board memory. Depth uses the 1024x1024 normal T2I PNG. Restoration inputs are generated references downsampled to 256x256 JPEG quality 35 (one tile) and cropped/downsampled to 384x256 JPEG quality 45 (two overlapping tiles), outputs 1024x1024 and 1536x1024.",
11
+ "records": [
12
+ {
13
+ "task": "generate",
14
+ "case": "photo",
15
+ "precision": "normal",
16
+ "request": {
17
+ "task": "generate",
18
+ "precision": "normal",
19
+ "prompt": "A candid editorial photograph of a young adult woman with short dark hair standing at a rain soaked Tokyo street crossing at dusk, holding a transparent umbrella, reflections of neon signs, realistic skin texture, 50mm lens, natural proportions, cinematic but believable lighting.",
20
+ "seed": 424242,
21
+ "width": 1024,
22
+ "height": 1024,
23
+ "steps": 100,
24
+ "cfg": 3.0,
25
+ "negative_prompt": ""
26
+ },
27
+ "size": [
28
+ 1024,
29
+ 1024
30
+ ],
31
+ "wall_seconds": 243.98675999999978,
32
+ "peak_allocated_mib": 19348.044921875,
33
+ "peak_reserved_mib": 19732.0,
34
+ "pixel_std": 72.87049865722656
35
+ },
36
+ {
37
+ "task": "generate",
38
+ "case": "photo",
39
+ "precision": "int8",
40
+ "request": {
41
+ "task": "generate",
42
+ "precision": "int8",
43
+ "prompt": "A candid editorial photograph of a young adult woman with short dark hair standing at a rain soaked Tokyo street crossing at dusk, holding a transparent umbrella, reflections of neon signs, realistic skin texture, 50mm lens, natural proportions, cinematic but believable lighting.",
44
+ "seed": 424242,
45
+ "width": 1024,
46
+ "height": 1024,
47
+ "steps": 100,
48
+ "cfg": 3.0,
49
+ "negative_prompt": ""
50
+ },
51
+ "size": [
52
+ 1024,
53
+ 1024
54
+ ],
55
+ "wall_seconds": 244.0833332000766,
56
+ "peak_allocated_mib": 10934.3515625,
57
+ "peak_reserved_mib": 11488.0,
58
+ "pixel_std": 73.21208953857422
59
+ },
60
+ {
61
+ "task": "generate",
62
+ "case": "watercolor",
63
+ "precision": "normal",
64
+ "request": {
65
+ "task": "generate",
66
+ "precision": "normal",
67
+ "prompt": "A detailed hand painted watercolor illustration of a small wooden reading room above a quiet bookshop. A ginger cat sleeps on a green velvet armchair, warm light from a brass desk lamp, a large window looking onto rainy rooftops, bookshelves with distinct books, delicate line work, paper texture. No text.",
68
+ "seed": 20261009,
69
+ "width": 1024,
70
+ "height": 1024,
71
+ "steps": 100,
72
+ "cfg": 3.0,
73
+ "negative_prompt": ""
74
+ },
75
+ "size": [
76
+ 1024,
77
+ 1024
78
+ ],
79
+ "wall_seconds": 252.1166963998694,
80
+ "peak_allocated_mib": 19347.509765625,
81
+ "peak_reserved_mib": 19752.0,
82
+ "pixel_std": 66.97412872314453
83
+ },
84
+ {
85
+ "task": "generate",
86
+ "case": "watercolor",
87
+ "precision": "int8",
88
+ "request": {
89
+ "task": "generate",
90
+ "precision": "int8",
91
+ "prompt": "A detailed hand painted watercolor illustration of a small wooden reading room above a quiet bookshop. A ginger cat sleeps on a green velvet armchair, warm light from a brass desk lamp, a large window looking onto rainy rooftops, bookshelves with distinct books, delicate line work, paper texture. No text.",
92
+ "seed": 20261009,
93
+ "width": 1024,
94
+ "height": 1024,
95
+ "steps": 100,
96
+ "cfg": 3.0,
97
+ "negative_prompt": ""
98
+ },
99
+ "size": [
100
+ 1024,
101
+ 1024
102
+ ],
103
+ "wall_seconds": 254.52246790006757,
104
+ "peak_allocated_mib": 10933.671875,
105
+ "peak_reserved_mib": 11528.0,
106
+ "pixel_std": 67.01991271972656
107
+ },
108
+ {
109
+ "task": "depth",
110
+ "case": "photo",
111
+ "precision": "normal",
112
+ "request": {
113
+ "task": "depth",
114
+ "precision": "normal"
115
+ },
116
+ "size": [
117
+ 1024,
118
+ 1024
119
+ ],
120
+ "wall_seconds": 283.81315309996717,
121
+ "peak_allocated_mib": 15374.9541015625,
122
+ "peak_reserved_mib": 16048.0,
123
+ "pixel_std": 85.49915313720703
124
+ },
125
+ {
126
+ "task": "depth",
127
+ "case": "photo",
128
+ "precision": "int8",
129
+ "request": {
130
+ "task": "depth",
131
+ "precision": "int8"
132
+ },
133
+ "size": [
134
+ 1024,
135
+ 1024
136
+ ],
137
+ "wall_seconds": 87.89453630009666,
138
+ "peak_allocated_mib": 6960.0576171875,
139
+ "peak_reserved_mib": 7674.0,
140
+ "pixel_std": 85.4561996459961
141
+ },
142
+ {
143
+ "task": "depth",
144
+ "case": "watercolor",
145
+ "precision": "normal",
146
+ "request": {
147
+ "task": "depth",
148
+ "precision": "normal"
149
+ },
150
+ "size": [
151
+ 1024,
152
+ 1024
153
+ ],
154
+ "wall_seconds": 8.675420299870893,
155
+ "peak_allocated_mib": 15406.9013671875,
156
+ "peak_reserved_mib": 16058.0,
157
+ "pixel_std": 80.67788696289062
158
+ },
159
+ {
160
+ "task": "depth",
161
+ "case": "watercolor",
162
+ "precision": "int8",
163
+ "request": {
164
+ "task": "depth",
165
+ "precision": "int8"
166
+ },
167
+ "size": [
168
+ 1024,
169
+ 1024
170
+ ],
171
+ "wall_seconds": 3.3528326998930424,
172
+ "peak_allocated_mib": 6989.7626953125,
173
+ "peak_reserved_mib": 7708.0,
174
+ "pixel_std": 80.69136047363281
175
+ },
176
+ {
177
+ "task": "upscale",
178
+ "case": "photo",
179
+ "precision": "normal",
180
+ "request": {
181
+ "task": "upscale",
182
+ "precision": "normal"
183
+ },
184
+ "size": [
185
+ 1024,
186
+ 1024
187
+ ],
188
+ "wall_seconds": 300.6608500001021,
189
+ "peak_allocated_mib": 15366.005859375,
190
+ "peak_reserved_mib": 16018.0,
191
+ "pixel_std": 74.8482437133789
192
+ },
193
+ {
194
+ "task": "upscale",
195
+ "case": "photo",
196
+ "precision": "int8",
197
+ "request": {
198
+ "task": "upscale",
199
+ "precision": "int8"
200
+ },
201
+ "size": [
202
+ 1024,
203
+ 1024
204
+ ],
205
+ "wall_seconds": 91.08279359992594,
206
+ "peak_allocated_mib": 6953.5810546875,
207
+ "peak_reserved_mib": 7654.0,
208
+ "pixel_std": 74.83624267578125
209
+ },
210
+ {
211
+ "task": "upscale",
212
+ "case": "watercolor",
213
+ "precision": "normal",
214
+ "request": {
215
+ "task": "upscale",
216
+ "precision": "normal"
217
+ },
218
+ "size": [
219
+ 1536,
220
+ 1024
221
+ ],
222
+ "wall_seconds": 9.50692670000717,
223
+ "peak_allocated_mib": 15452.650390625,
224
+ "peak_reserved_mib": 16100.0,
225
+ "pixel_std": 72.71382141113281
226
+ },
227
+ {
228
+ "task": "upscale",
229
+ "case": "watercolor",
230
+ "precision": "int8",
231
+ "request": {
232
+ "task": "upscale",
233
+ "precision": "int8"
234
+ },
235
+ "size": [
236
+ 1536,
237
+ 1024
238
+ ],
239
+ "wall_seconds": 4.555513399885967,
240
+ "peak_allocated_mib": 7039.1875,
241
+ "peak_reserved_mib": 7754.0,
242
+ "pixel_std": 72.731201171875
243
+ }
244
+ ],
245
+ "comparisons": [
246
+ {
247
+ "task": "generate",
248
+ "case": "photo",
249
+ "pixel_mae_0_255": 2.3095102310180664,
250
+ "identical_pixels_fraction": 0.023015975952148438
251
+ },
252
+ {
253
+ "task": "generate",
254
+ "case": "watercolor",
255
+ "pixel_mae_0_255": 4.086854457855225,
256
+ "identical_pixels_fraction": 0.0079193115234375
257
+ },
258
+ {
259
+ "task": "depth",
260
+ "case": "photo",
261
+ "pixel_mae_0_255": 0.5848824381828308,
262
+ "identical_pixels_fraction": 0.5262269973754883,
263
+ "depth_pearson": 0.9999082843818213,
264
+ "depth_shapes": [
265
+ [
266
+ 1024,
267
+ 1024
268
+ ],
269
+ [
270
+ 1024,
271
+ 1024
272
+ ]
273
+ ]
274
+ },
275
+ {
276
+ "task": "depth",
277
+ "case": "watercolor",
278
+ "pixel_mae_0_255": 0.6243413090705872,
279
+ "identical_pixels_fraction": 0.5460033416748047,
280
+ "depth_pearson": 0.9999447206409359,
281
+ "depth_shapes": [
282
+ [
283
+ 1024,
284
+ 1024
285
+ ],
286
+ [
287
+ 1024,
288
+ 1024
289
+ ]
290
+ ]
291
+ },
292
+ {
293
+ "task": "upscale",
294
+ "case": "photo",
295
+ "pixel_mae_0_255": 0.6896772384643555,
296
+ "identical_pixels_fraction": 0.09531784057617188
297
+ },
298
+ {
299
+ "task": "upscale",
300
+ "case": "watercolor",
301
+ "pixel_mae_0_255": 1.0330185890197754,
302
+ "identical_pixels_fraction": 0.07715797424316406
303
+ }
304
+ ]
305
+ }
config.yaml ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model:
2
+ block: single_stream
3
+ dual_depth: 8
4
+ final_block_text: keep
5
+ hidden_size: 2560
6
+ depth: 24
7
+ num_heads: 20
8
+ num_kv_heads: 5
9
+ gated_attention: true
10
+ sandwich_norm: true
11
+ patch_size: 16
12
+ in_channels: 3
13
+ mlp_ratio: 4.0
14
+ qkv_bias: false
15
+ qk_norm: true
16
+ norm_eps: 1.0e-06
17
+ attn_backend: sdpa
18
+ modulation: shared_bias
19
+ modulation_rank: 64
20
+ timestep_max_period: 10.0
21
+ adaln_zero_init: true
22
+ rope_theta: 10000.0
23
+ rope_scale: 16.0
24
+ rope_aspect: isotropic
25
+ rope_frame_pairs: 0
26
+ rope_frame_theta: 10.0
27
+ text_rope: true
28
+ text_rope_theta: 10000.0
29
+ text_abs_pos_embed: true
30
+ text_dim: 2560
31
+ text_len: 300
32
+ text_adapter: lap_blocks2
33
+ text_lap_num_layers: 12
34
+ text_lap_num_heads: 32
35
+ text_lap_mlp_ratio: 1.3
36
+ repa_layer: 10
37
+ pixel:
38
+ enabled: true
39
+ depth: 4
40
+ hidden_size: 16
41
+ attn_hidden_size: 1280
42
+ num_heads: 10
43
+ mlp_ratio: 4.0
44
+ modulation: post
45
+ abs_pos_embed: true
46
+ text_encoder:
47
+ name: qwen3_vl
48
+ pretrained: Qwen/Qwen3-VL-4B-Instruct
49
+ dim: 2560
50
+ max_length: 300
51
+ dtype: bfloat16
52
+ attn_implementation: sdpa
53
+ hidden_layers:
54
+ - 2
55
+ - 5
56
+ - 8
57
+ - 11
58
+ - 14
59
+ - 17
60
+ - 20
61
+ - 23
62
+ - 26
63
+ - 29
64
+ - 32
65
+ - 35
66
+ compile: false
67
+ on_caption_overflow: warn
68
+ flow:
69
+ num_train_timesteps: 1000
70
+ shift: 4.0
71
+ timestep_sampler: logit_normal
72
+ logit_mean: 0.0
73
+ logit_std: 1.0
74
+ prediction: v
75
+ x_pred_sigma_min: 0.05
76
+ shift_law: none
77
+ shift_base_tokens: 256
depth/config.yaml ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model:
2
+ block: single_stream
3
+ dual_depth: 8
4
+ final_block_text: keep
5
+ hidden_size: 2560
6
+ depth: 24
7
+ num_heads: 20
8
+ num_kv_heads: 5
9
+ gated_attention: true
10
+ sandwich_norm: true
11
+ patch_size: 16
12
+ in_channels: 3
13
+ mlp_ratio: 4.0
14
+ qkv_bias: false
15
+ qk_norm: true
16
+ norm_eps: 1.0e-06
17
+ attn_backend: sdpa
18
+ modulation: shared_bias
19
+ modulation_rank: 64
20
+ timestep_max_period: 10.0
21
+ adaln_zero_init: true
22
+ rope_theta: 10000.0
23
+ rope_scale: 16.0
24
+ rope_aspect: isotropic
25
+ rope_frame_pairs: 0
26
+ rope_frame_theta: 10.0
27
+ text_rope: true
28
+ text_rope_theta: 10000.0
29
+ text_abs_pos_embed: true
30
+ text_dim: 2560
31
+ text_len: 300
32
+ text_adapter: lap_blocks2
33
+ text_lap_num_layers: 12
34
+ text_lap_num_heads: 32
35
+ text_lap_mlp_ratio: 1.3
36
+ repa_layer: 10
37
+ pixel:
38
+ enabled: true
39
+ depth: 4
40
+ hidden_size: 16
41
+ attn_hidden_size: 1280
42
+ num_heads: 10
43
+ mlp_ratio: 4.0
44
+ modulation: post
45
+ abs_pos_embed: true
46
+ text_encoder:
47
+ name: qwen3_vl
48
+ pretrained: Qwen/Qwen3-VL-4B-Instruct
49
+ dim: 2560
50
+ max_length: 300
51
+ dtype: bfloat16
52
+ attn_implementation: sdpa
53
+ hidden_layers:
54
+ - 2
55
+ - 5
56
+ - 8
57
+ - 11
58
+ - 14
59
+ - 17
60
+ - 20
61
+ - 23
62
+ - 26
63
+ - 29
64
+ - 32
65
+ - 35
66
+ compile: false
67
+ on_caption_overflow: warn
68
+ flow:
69
+ num_train_timesteps: 1000
70
+ shift: 4.0
71
+ timestep_sampler: logit_normal
72
+ logit_mean: 0.0
73
+ logit_std: 1.0
74
+ prediction: v
75
+ x_pred_sigma_min: 0.05
76
+ shift_law: none
77
+ shift_base_tokens: 256
78
+ task:
79
+ name: depth
depth/empty_prompt.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea77e942f2ac7698bf4e5a2657d1820839b7e47212762ae31fbe5234beef33e6
3
+ size 36864468
depth/manifest.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "iris-rowwise-int8-v1",
3
+ "linear_count": 298,
4
+ "bytes": 3233728048,
5
+ "task": "depth",
6
+ "source_repo": "speridlabs/iris-3b",
7
+ "source_revision": "7445443349bc9abe3c96f01ff793e2098ca012b3",
8
+ "source_sha256": "e7aabbd5992637914407bfb5541f67c727ae30516d63eb32a85c541f8e5d8952",
9
+ "code_revision": "a8d15239dea469aba042cfa56ca3bb4e450d5ebc",
10
+ "files": [
11
+ {
12
+ "path": "model.safetensors",
13
+ "size": 3233825264,
14
+ "sha256": "ddb618148d1011bba0431aa24b9a5f27b11d3083f3628203f425d45c162a75a5"
15
+ },
16
+ {
17
+ "path": "config.yaml",
18
+ "size": 1427,
19
+ "sha256": "f2a9fbdccabc1a27ba5475ed0ad4bfc35dc854d1008be6a167f8b3de8bfd4dcf"
20
+ },
21
+ {
22
+ "path": "empty_prompt.safetensors",
23
+ "size": 36864468,
24
+ "sha256": "ea77e942f2ac7698bf4e5a2657d1820839b7e47212762ae31fbe5234beef33e6"
25
+ }
26
+ ]
27
+ }
depth/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ddb618148d1011bba0431aa24b9a5f27b11d3083f3628203f425d45c162a75a5
3
+ size 3233825264
examples/depth-photo.jpg ADDED

Git LFS Details

  • SHA256: 34073bfeb0cbe9453cdb41b7f96a65463c67cdf5dd000d9ca9ef955a008db422
  • Pointer size: 131 Bytes
  • Size of remote file: 306 kB
examples/depth-watercolor.jpg ADDED

Git LFS Details

  • SHA256: 9e6a75317e6498fd87bfefa24dd6008f193692b599a5be8496d4d00284e94dba
  • Pointer size: 131 Bytes
  • Size of remote file: 438 kB
examples/generate-photo.jpg ADDED

Git LFS Details

  • SHA256: d72c240703003b59e56cb9088eccc93c07789094cf929515ba22fb898efb984b
  • Pointer size: 131 Bytes
  • Size of remote file: 275 kB
examples/generate-watercolor.jpg ADDED

Git LFS Details

  • SHA256: b797b834ccd544b4a3dc649e1d96196b424e972b091ac5b75560c5990affcd10
  • Pointer size: 131 Bytes
  • Size of remote file: 480 kB
examples/upscale-photo.jpg ADDED

Git LFS Details

  • SHA256: a1ed859905fc37e0bc8e22e4334fffbfe224ed3494b214c9372674f06371c826
  • Pointer size: 131 Bytes
  • Size of remote file: 435 kB
examples/upscale-watercolor.jpg ADDED

Git LFS Details

  • SHA256: ea2d06b23c8c30f65f787f48374d0e92a5e556ea50d3e3c1828295494b9c0bee
  • Pointer size: 131 Bytes
  • Size of remote file: 510 kB
manifest.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "iris-rowwise-int8-v1",
3
+ "linear_count": 298,
4
+ "bytes": 3233072608,
5
+ "task": "generate",
6
+ "source_repo": "speridlabs/iris-3b",
7
+ "source_revision": "7445443349bc9abe3c96f01ff793e2098ca012b3",
8
+ "source_sha256": "a90e1f4c197bac8491f82078def68884b6a3527ea7fc97a693e3e367372aa80f",
9
+ "code_revision": "a8d15239dea469aba042cfa56ca3bb4e450d5ebc",
10
+ "files": [
11
+ {
12
+ "path": "model.safetensors",
13
+ "size": 3233164048,
14
+ "sha256": "0c71d95482b0a3db64245a9754618e5082929d76e1b5fecc33dda6ba1fd948e5"
15
+ },
16
+ {
17
+ "path": "config.yaml",
18
+ "size": 1407,
19
+ "sha256": "077ce19156d9425a7e665a0059be02b3c5a1fcd7aea7607047b4f7486efa6cd5"
20
+ }
21
+ ]
22
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0c71d95482b0a3db64245a9754618e5082929d76e1b5fecc33dda6ba1fd948e5
3
+ size 3233164048
upscaler/config.yaml ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model:
2
+ block: single_stream
3
+ dual_depth: 8
4
+ final_block_text: keep
5
+ hidden_size: 2560
6
+ depth: 24
7
+ num_heads: 20
8
+ num_kv_heads: 5
9
+ gated_attention: true
10
+ sandwich_norm: true
11
+ patch_size: 16
12
+ in_channels: 3
13
+ mlp_ratio: 4.0
14
+ qkv_bias: false
15
+ qk_norm: true
16
+ norm_eps: 1.0e-06
17
+ attn_backend: sdpa
18
+ modulation: shared_bias
19
+ modulation_rank: 64
20
+ timestep_max_period: 10.0
21
+ adaln_zero_init: true
22
+ rope_theta: 10000.0
23
+ rope_scale: 16.0
24
+ rope_aspect: isotropic
25
+ rope_frame_pairs: 0
26
+ rope_frame_theta: 10.0
27
+ text_rope: true
28
+ text_rope_theta: 10000.0
29
+ text_abs_pos_embed: true
30
+ text_dim: 2560
31
+ text_len: 300
32
+ text_adapter: lap_blocks2
33
+ text_lap_num_layers: 12
34
+ text_lap_num_heads: 32
35
+ text_lap_mlp_ratio: 1.3
36
+ repa_layer: 10
37
+ pixel:
38
+ enabled: true
39
+ depth: 4
40
+ hidden_size: 16
41
+ attn_hidden_size: 1280
42
+ num_heads: 10
43
+ mlp_ratio: 4.0
44
+ modulation: post
45
+ abs_pos_embed: true
46
+ text_encoder:
47
+ name: qwen3_vl
48
+ pretrained: Qwen/Qwen3-VL-4B-Instruct
49
+ dim: 2560
50
+ max_length: 300
51
+ dtype: bfloat16
52
+ attn_implementation: sdpa
53
+ hidden_layers:
54
+ - 2
55
+ - 5
56
+ - 8
57
+ - 11
58
+ - 14
59
+ - 17
60
+ - 20
61
+ - 23
62
+ - 26
63
+ - 29
64
+ - 32
65
+ - 35
66
+ compile: false
67
+ on_caption_overflow: warn
68
+ flow:
69
+ num_train_timesteps: 1000
70
+ shift: 4.0
71
+ timestep_sampler: logit_normal
72
+ logit_mean: 0.0
73
+ logit_std: 1.0
74
+ prediction: v
75
+ x_pred_sigma_min: 0.05
76
+ shift_law: none
77
+ shift_base_tokens: 256
78
+ task:
79
+ name: restoration
80
+ sigma: 0.5
81
+ tile: 1024
upscaler/empty_prompt.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3cef1162f07bb81f7fb37fc7c997a9305a000f4de2563e61982d5d373a61d225
3
+ size 36864468
upscaler/manifest.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "iris-rowwise-int8-v1",
3
+ "linear_count": 298,
4
+ "bytes": 3233072608,
5
+ "task": "upscale",
6
+ "source_repo": "speridlabs/iris-3b",
7
+ "source_revision": "7445443349bc9abe3c96f01ff793e2098ca012b3",
8
+ "source_sha256": "b4235e5f60bd1c0cb761f13b9549e31aefd25e3814aded4349f1f156ce0abeaa",
9
+ "code_revision": "a8d15239dea469aba042cfa56ca3bb4e450d5ebc",
10
+ "files": [
11
+ {
12
+ "path": "model.safetensors",
13
+ "size": 3233164048,
14
+ "sha256": "d7806539bb65ea6e1035b988707482e1cca6bc805801871a1bba49495a16e49e"
15
+ },
16
+ {
17
+ "path": "config.yaml",
18
+ "size": 1459,
19
+ "sha256": "da09cc9a84c6ed6014f9c788640ee24bca0b79c1f9fa55b947a52357ca32a51d"
20
+ },
21
+ {
22
+ "path": "empty_prompt.safetensors",
23
+ "size": 36864468,
24
+ "sha256": "3cef1162f07bb81f7fb37fc7c997a9305a000f4de2563e61982d5d373a61d225"
25
+ }
26
+ ]
27
+ }
upscaler/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d7806539bb65ea6e1035b988707482e1cca6bc805801871a1bba49495a16e49e
3
+ size 3233164048