Text-to-Image
Diffusers
OpenVINO
StableDiffusionXLPipeline
int4
optimum
optimum-intel
nncf
lcm
anime
sdxl
cpu
8-step
Instructions to use HelloSun/nova_xl_lcm-OpenVINO-INT4 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use HelloSun/nova_xl_lcm-OpenVINO-INT4 with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("HelloSun/nova_xl_lcm-OpenVINO-INT4", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
Add Nova XL LCM OpenVINO INT4: model + 10 examples + README/REPORT/scripts
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +20 -0
- README.md +115 -0
- REPORT.md +68 -0
- examples/01_hanfu_seed42_8step_1024.png +3 -0
- examples/01_hanfu_seed42_8step_512.png +3 -0
- examples/02_astronaut_seed43_8step_1024.png +3 -0
- examples/02_astronaut_seed43_8step_512.png +3 -0
- examples/03_taipei_seed44_8step_1024.png +3 -0
- examples/03_taipei_seed44_8step_512.png +3 -0
- examples/04_shiba_seed45_8step_1024.png +3 -0
- examples/04_shiba_seed45_8step_512.png +3 -0
- examples/05_ink_seed46_8step_1024.png +3 -0
- examples/05_ink_seed46_8step_512.png +3 -0
- examples/06_ghibli_style_seed47_8step_1024.png +3 -0
- examples/06_ghibli_style_seed47_8step_512.png +3 -0
- examples/07_makoto_shinkai_seed48_8step_1024.png +3 -0
- examples/07_makoto_shinkai_seed48_8step_512.png +3 -0
- examples/08_flat_vector_seed49_8step_1024.png +3 -0
- examples/08_flat_vector_seed49_8step_512.png +3 -0
- examples/09_retro_80s_seed50_8step_1024.png +3 -0
- examples/09_retro_80s_seed50_8step_512.png +3 -0
- examples/10_impasto_thick_seed51_8step_1024.png +3 -0
- examples/10_impasto_thick_seed51_8step_512.png +3 -0
- examples/benchmark.json +436 -0
- examples/prompts.txt +20 -0
- generate5.py +150 -0
- inference_int4.py +29 -0
- model_index.json +42 -0
- openvino_config.json +90 -0
- quantize_int4.py +35 -0
- scheduler/scheduler_config.json +24 -0
- text_encoder/config.json +26 -0
- text_encoder/openvino_model.bin +3 -0
- text_encoder/openvino_model.xml +0 -0
- text_encoder_2/config.json +26 -0
- text_encoder_2/openvino_model.bin +3 -0
- text_encoder_2/openvino_model.xml +0 -0
- tokenizer/merges.txt +0 -0
- tokenizer/special_tokens_map.json +30 -0
- tokenizer/tokenizer_config.json +31 -0
- tokenizer/vocab.json +0 -0
- tokenizer_2/merges.txt +0 -0
- tokenizer_2/special_tokens_map.json +30 -0
- tokenizer_2/tokenizer_config.json +39 -0
- tokenizer_2/vocab.json +0 -0
- unet/config.json +73 -0
- unet/openvino_model.bin +3 -0
- unet/openvino_model.xml +0 -0
- vae_decoder/config.json +38 -0
- vae_decoder/openvino_model.bin +3 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,23 @@ 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/01_hanfu_seed42_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
examples/01_hanfu_seed42_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
examples/02_astronaut_seed43_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
examples/02_astronaut_seed43_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
examples/03_taipei_seed44_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
examples/03_taipei_seed44_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
examples/04_shiba_seed45_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
examples/04_shiba_seed45_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
examples/05_ink_seed46_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
examples/05_ink_seed46_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
examples/06_ghibli_style_seed47_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
examples/06_ghibli_style_seed47_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
examples/07_makoto_shinkai_seed48_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 49 |
+
examples/07_makoto_shinkai_seed48_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
examples/08_flat_vector_seed49_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
examples/08_flat_vector_seed49_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
| 52 |
+
examples/09_retro_80s_seed50_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 53 |
+
examples/09_retro_80s_seed50_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
| 54 |
+
examples/10_impasto_thick_seed51_8step_1024.png filter=lfs diff=lfs merge=lfs -text
|
| 55 |
+
examples/10_impasto_thick_seed51_8step_512.png filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
library_name: diffusers
|
| 3 |
+
pipeline_tag: text-to-image
|
| 4 |
+
base_model: sca255/nova_xl_lcm
|
| 5 |
+
tags:
|
| 6 |
+
- openvino
|
| 7 |
+
- int4
|
| 8 |
+
- optimum
|
| 9 |
+
- lcm
|
| 10 |
+
- anime
|
| 11 |
+
- sdxl
|
| 12 |
+
- text-to-image
|
| 13 |
+
license: openrail++
|
| 14 |
+
---
|
| 15 |
+
|
| 16 |
+
# Nova XL LCM OpenVINO INT4 (optimum)
|
| 17 |
+
|
| 18 |
+
Source: [sca255/nova_xl_lcm](https://huggingface.co/sca255/nova_xl_lcm) (SDXL LCM anime model, StableDiffusionXLPipeline).
|
| 19 |
+
Recipe: `num_inference_steps=8, guidance_scale=1.5`, 1024x1024 (LCM distilled model).
|
| 20 |
+
Converted with **optimum-intel 2.2.0 / optimum 2.3.0 / openvino 2026.4.0 / nncf 3.4.0**:
|
| 21 |
+
1. `optimum-cli export openvino -m sca255/nova_xl_lcm --task text-to-image --library diffusers --weight-format fp16 ./nova_xl_lcm-ov-fp16`
|
| 22 |
+
2. `OVQuantizer` NNCF weight-only INT4 (`bits=4, sym=False, group_size=128, fallback=adjust, ratio=1.0`) on unet + text_encoder + text_encoder_2, VAE INT8 default. See `quantize_int4.py`.
|
| 23 |
+
- FP16 OV 6.5G → INT4 OV 2.0G (unet 1.5G, text_encoder_2 377M, text_encoder 81M, vae_dec 48M, vae_enc 33M, ~69%↓).
|
| 24 |
+
|
| 25 |
+
## Usage
|
| 26 |
+
```python
|
| 27 |
+
from optimum.intel import OVDiffusionPipeline
|
| 28 |
+
import torch
|
| 29 |
+
pipe = OVDiffusionPipeline.from_pretrained("HelloSun/nova_xl_lcm-OpenVINO-INT4", compile=True)
|
| 30 |
+
img = pipe("1girl, anime style, masterpiece, best quality",
|
| 31 |
+
height=1024, width=1024, num_inference_steps=8, guidance_scale=1.5,
|
| 32 |
+
generator=torch.Generator().manual_seed(42)).images[0]
|
| 33 |
+
img.save("out.png")
|
| 34 |
+
```
|
| 35 |
+
Env: `diffusers==0.37.1 transformers==4.57.6 tokenizers==0.22.0 huggingface-hub==0.35.1 optimum==2.3.0 optimum-intel==2.2.0 openvino==2026.4.0 nncf==3.4.0 torch pillow psutil`. Full example: `inference_int4.py`.
|
| 36 |
+
|
| 37 |
+
## 5 标准提示词 × 8-step (LCM recipe: 8 steps, guidance 1.5, 1024px, CPU)
|
| 38 |
+
|
| 39 |
+
### 01_hanfu — seed 42 — 32.3s
|
| 40 |
+
`1girl, red hanfu, intricate embroidery, golden phoenix headdress, soft night lighting, tiered pagoda background, lantern lights, anime style, masterpiece, best quality, ultra detailed`
|
| 41 |
+

|
| 42 |
+
|
| 43 |
+
### 02_astronaut — seed 43 — 28.8s
|
| 44 |
+
`1girl astronaut in lush jungle, cold color palette, detailed foliage, cinematic lighting, anime style, masterpiece, best quality, 8k`
|
| 45 |
+

|
| 46 |
+
|
| 47 |
+
### 03_taipei — seed 44 — 34.2s
|
| 48 |
+
`1girl in cyberpunk Taipei at night, heavy rain, neon signs 'TAIPEI' and '台北', wet asphalt reflections, crowded night market, anime style, masterpiece, best quality`
|
| 49 |
+

|
| 50 |
+
|
| 51 |
+
### 04_shiba — seed 45 — 31.9s
|
| 52 |
+
`cute shiba inu wearing tiny astronaut helmet, sunflower field under starry sky, dreamy illustration, vibrant colors, anime style, masterpiece, best quality`
|
| 53 |
+

|
| 54 |
+
|
| 55 |
+
### 05_ink — seed 46 — 29.7s
|
| 56 |
+
`traditional chinese ink wash landscape, misty mountains, small pagoda on cliff, cranes flying, minimalist, elegant, anime style, masterpiece, best quality`
|
| 57 |
+

|
| 58 |
+
|
| 59 |
+
## 5 额外风格提示词 × 8-step (seeds 47-51)
|
| 60 |
+
|
| 61 |
+
### 06_ghibli_style — seed 47 — 29.7s
|
| 62 |
+
`studio ghibli style, 1girl in floating castle, magical clouds, whimsical atmosphere, detailed background, masterpiece, best quality`
|
| 63 |
+

|
| 64 |
+
|
| 65 |
+
### 07_makoto_shinkai — seed 48 — 30.0s
|
| 66 |
+
`makoto shinkai style, 1girl under comet sky, breathtaking lighting, detailed clouds, emotional atmosphere, anime style, masterpiece, 8k`
|
| 67 |
+

|
| 68 |
+
|
| 69 |
+
### 08_flat_vector — seed 49 — 30.1s
|
| 70 |
+
`flat vector illustration, 1girl in modern city, clean geometric shapes, bold colors, minimalist, commercial anime art style, behance trending`
|
| 71 |
+

|
| 72 |
+
|
| 73 |
+
### 09_retro_80s — seed 50 — 29.9s
|
| 74 |
+
`1980s retro anime, 1girl with neon city background, VHS aesthetic, synthwave colors, cel shaded, nostalgic anime style, masterpiece`
|
| 75 |
+

|
| 76 |
+
|
| 77 |
+
### 10_impasto_thick — seed 51 — 29.5s
|
| 78 |
+
`thick impasto anime concept art, 1girl with heavy brushstrokes, expressive texture, dramatic lighting, artstation masterpiece, detailed anime style`
|
| 79 |
+

|
| 80 |
+
|
| 81 |
+
## 實驗數據 (CPU 真實能力)
|
| 82 |
+
測試環境:
|
| 83 |
+
- CPU: Intel Xeon Platinum 8559C, x86_64, 2 sockets x 48 cores x 2 threads = 192 vCPU, KVM
|
| 84 |
+
- RAM 2.0Ti, OpenVINO CPU only, openvino 2026.4.0
|
| 85 |
+
- 設定: num_inference_steps=8 (LCM recipe), guidance_scale=1.5, 1024x1024
|
| 86 |
+
|
| 87 |
+
| 項目 | 數據 |
|
| 88 |
+
|---|---|
|
| 89 |
+
| load+compile | 12.5s |
|
| 90 |
+
| 1024px 平均 | ~30.6s/張, 單步 ~3.67s |
|
| 91 |
+
| 01 | 32.34s, mean 3.67s, steps [6.02,3.42,3.49,3.51,3.50,3.58,3.44,3.45] |
|
| 92 |
+
| 02 | 28.75s, mean 3.39s |
|
| 93 |
+
| 03 | 34.20s, mean 3.99s |
|
| 94 |
+
| 04 | 31.90s, mean 3.72s |
|
| 95 |
+
| 05 | 29.66s, mean 3.48s |
|
| 96 |
+
| 06 | 29.74s, mean 3.49s |
|
| 97 |
+
| 07 | 29.97s, mean 3.51s |
|
| 98 |
+
| 08 | 30.13s, mean 3.54s |
|
| 99 |
+
| 09 | 29.89s, mean 3.50s |
|
| 100 |
+
| 10 | 29.52s, mean 3.46s |
|
| 101 |
+
| 512px 對照 (同10組/seed) | 01:9.59s/1.14s, 02:9.63s/1.13s, 03:10.68s/1.26s, 04:9.84s/1.17s, 05:9.53s/1.13s, 06:9.83s/1.17s, 07:9.53s/1.13s, 08:9.77s/1.16s, 09:9.57s/1.13s, 10:9.53s/1.13s, 平均~9.75s/單步~1.15s (見examples/*_512.png) |
|
| 102 |
+
| 模型大小 | FP16 6.5G → INT4 2.0G (~69%↓) |
|
| 103 |
+
|
| 104 |
+
首圖首步較慢主因: text_encoder + text_encoder_2 + 首個 UNet warmup. VAE decode + text-encode 已含在 total 內. 純 CPU, OpenVINO 自動多線程.
|
| 105 |
+
|
| 106 |
+
詳細見 `REPORT.md` + `examples/benchmark.json` + `examples/prompts.txt`.
|
| 107 |
+
|
| 108 |
+
## 復現
|
| 109 |
+
```
|
| 110 |
+
pip install diffusers==0.37.1 transformers==4.57.6 tokenizers==0.22.0 huggingface-hub==0.35.1 optimum==2.3.0 optimum-intel==2.2.0 openvino==2026.4.0 nncf==3.4.0 torch pillow psutil
|
| 111 |
+
optimum-cli export openvino -m sca255/nova_xl_lcm --task text-to-image --library diffusers --weight-format fp16 ./nova_xl_lcm-ov-fp16
|
| 112 |
+
python quantize_int4.py
|
| 113 |
+
python inference_int4.py
|
| 114 |
+
python generate5.py
|
| 115 |
+
```
|
REPORT.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Nova XL LCM → OpenVINO INT4 (optimum) 轉換與 CPU 實測報告
|
| 2 |
+
|
| 3 |
+
來源模型: sca255/nova_xl_lcm (SDXL LCM anime, StableDiffusionXLPipeline)
|
| 4 |
+
官方範例: `num_inference_steps=8, guidance_scale=1.5` (LCM 8-step distilled, 1024x1024)
|
| 5 |
+
轉換工具: diffusers==0.37.1 transformers==4.57.6 tokenizers==0.22.0 huggingface-hub==0.35.1 optimum-intel==2.2.0 optimum==2.3.0 openvino==2026.4.0 nncf==3.4.0 torch pillow psutil
|
| 6 |
+
方法 (見 `quantize_int4.py`):
|
| 7 |
+
1. `optimum-cli export openvino -m sca255/nova_xl_lcm --task text-to-image --library diffusers --weight-format fp16 ./nova_xl_lcm-ov-fp16`
|
| 8 |
+
2. `OVQuantizer` + `OVPipelineQuantizationConfig(unet=INT4, text_encoder=INT4, text_encoder_2=INT4)`,NNCF weight-only:
|
| 9 |
+
`OVWeightQuantizationConfig(bits=4, sym=False, group_size=128, group_size_fallback="adjust", ratio=1.0)`,其餘預設 INT8 (`bits=8, sym=True`)
|
| 10 |
+
`ov_config=OVConfig(quantization_config=...)`,詳見 `quantize_int4.py`。範例推論見 `inference_int4.py`,批次生成見 `generate5.py`。
|
| 11 |
+
|
| 12 |
+
## 模型檔案
|
| 13 |
+
- FP16 OV: 6.5 GB (unet 4.8G + text_encoder_2 1.3G + text_encoder 236M + vae_decoder 95M + vae_encoder 66M)
|
| 14 |
+
- INT4 OV: 2.0 GB (unet 1.5G + text_encoder_2 377M + text_encoder 81M + vae_decoder 48M + vae_encoder 33M)
|
| 15 |
+
- 壓縮比: ~69% ↓ (6.5 → 2.0G)。上傳 repo: HelloSun/nova_xl_lcm-OpenVINO-INT4
|
| 16 |
+
|
| 17 |
+
## 測試環境 CPU 真實能力
|
| 18 |
+
- CPU: Intel(R) Xeon(R) Platinum 8559C, x86_64, 2 sockets x 48 cores, 2 threads/core = 192 vCPU
|
| 19 |
+
- RAM: 2.0Ti total, OpenVINO device: CPU only, openvino 2026.4.0
|
| 20 |
+
- 設定: num_inference_steps=8 (LCM recipe), guidance_scale=1.5, height=width=1024
|
| 21 |
+
|
| 22 |
+
## 實測數據 (OV INT4, CPU)
|
| 23 |
+
- load+compile: 12.5s
|
| 24 |
+
- 1024x1024, 8 scheduler steps:
|
| 25 |
+
- 01_hanfu(42): total 32.34s, mean step 3.67s, steps [6.02,3.42,3.49,3.51,3.50,3.58,3.44,3.45]
|
| 26 |
+
- 02_astronaut(43): total 28.75s, mean step 3.39s, steps [3.54,3.30,3.33,3.39,3.30,3.39,3.49,3.39]
|
| 27 |
+
- 03_taipei(44): total 34.20s, mean step 3.99s, steps [4.21,4.20,4.07,3.93,3.91,3.86,3.90,4.01]
|
| 28 |
+
- 04_shiba(45): total 31.90s, mean step 3.72s, steps [4.08,4.32,3.77,3.52,3.61,3.58,3.53,3.50]
|
| 29 |
+
- 05_ink(46): total 29.66s, mean step 3.48s, steps [3.56,3.50,3.49,3.51,3.50,3.33,3.50,3.50]
|
| 30 |
+
- 06_ghibli_style(47): total 29.74s, mean step 3.49s, steps [3.62,3.50,3.42,3.49,3.51,3.48,3.51,3.41]
|
| 31 |
+
- 07_makoto_shinkai(48): total 29.97s, mean step 3.51s, steps [3.66,3.50,3.41,3.61,3.49,3.49,3.60,3.42]
|
| 32 |
+
- 08_flat_vector(49): total 30.13s, mean step 3.54s, steps [3.63,3.60,3.41,3.60,3.48,3.50,3.61,3.49]
|
| 33 |
+
- 09_retro_80s(50): total 29.89s, mean step 3.50s, steps [3.71,3.60,3.47,3.41,3.41,3.51,3.51,3.48]
|
| 34 |
+
- 10_impasto_thick(51): total 29.52s, mean step 3.46s, steps [3.55,3.48,3.49,3.44,3.38,3.49,3.49,3.42]
|
| 35 |
+
- 平均: ~30.61s/張, 單步 ~3.67s, 首圖首 step 較慢 (text_encoder + text_encoder_2 + warmup)
|
| 36 |
+
- 512x512 對照 (同10組prompt/seed, examples/*_8step_512.png):
|
| 37 |
+
- 01_hanfu(42): total 9.59s, mean 1.14s
|
| 38 |
+
- 02_astronaut(43): total 9.63s, mean 1.13s
|
| 39 |
+
- 03_taipei(44): total 10.68s, mean 1.26s
|
| 40 |
+
- 04_shiba(45): total 9.84s, mean 1.17s
|
| 41 |
+
- 05_ink(46): total 9.53s, mean 1.13s
|
| 42 |
+
- 06_ghibli_style(47): total 9.83s, mean 1.17s
|
| 43 |
+
- 07_makoto_shinkai(48): total 9.53s, mean 1.13s
|
| 44 |
+
- 08_flat_vector(49): total 9.77s, mean 1.16s
|
| 45 |
+
- 09_retro_80s(50): total 9.57s, mean 1.13s
|
| 46 |
+
- 10_impasto_thick(51): total 9.53s, mean 1.13s
|
| 47 |
+
- 平均: ~9.75s/張, 單步 ~1.15s。1024 (~30.6s) 是 512 的 ~3.1x 時間
|
| 48 |
+
- VAE decode + text-encode 已含在 total 內。純 CPU, OpenVINO 自動用滿多線程; 複現時用 `num_inference_steps=8, guidance_scale=1.5`
|
| 49 |
+
|
| 50 |
+
## 10 組 prompt (seed 固定, examples/*.png)
|
| 51 |
+
01 [seed42] 1girl, red hanfu, intricate embroidery, golden phoenix headdress, soft night lighting, tiered pagoda background, lantern lights, anime style, masterpiece, best quality, ultra detailed
|
| 52 |
+
02 [seed43] 1girl astronaut in lush jungle, cold color palette, detailed foliage, cinematic lighting, anime style, masterpiece, best quality, 8k
|
| 53 |
+
03 [seed44] 1girl in cyberpunk Taipei at night, heavy rain, neon signs 'TAIPEI' and '台北', wet asphalt reflections, crowded night market, anime style, masterpiece, best quality
|
| 54 |
+
04 [seed45] cute shiba inu wearing tiny astronaut helmet, sunflower field under starry sky, dreamy illustration, vibrant colors, anime style, masterpiece, best quality
|
| 55 |
+
05 [seed46] traditional chinese ink wash landscape, misty mountains, small pagoda on cliff, cranes flying, minimalist, elegant, anime style, masterpiece, best quality
|
| 56 |
+
06 [seed47] studio ghibli style, 1girl in floating castle, magical clouds, whimsical atmosphere, detailed background, masterpiece, best quality
|
| 57 |
+
07 [seed48] makoto shinkai style, 1girl under comet sky, breathtaking lighting, detailed clouds, emotional atmosphere, anime style, masterpiece, 8k
|
| 58 |
+
08 [seed49] flat vector illustration, 1girl in modern city, clean geometric shapes, bold colors, minimalist, commercial anime art style, behance trending
|
| 59 |
+
09 [seed50] 1980s retro anime, 1girl with neon city background, VHS aesthetic, synthwave colors, cel shaded, nostalgic anime style, masterpiece
|
| 60 |
+
10 [seed51] thick impasto anime concept art, 1girl with heavy brushstrokes, expressive texture, dramatic lighting, artstation masterpiece, detailed anime style
|
| 61 |
+
詳見 examples/prompts.txt, examples/benchmark.json, 圖片 examples/*_8step_1024.png + examples/*_8step_512.png (512對照組)
|
| 62 |
+
|
| 63 |
+
## 復現
|
| 64 |
+
pip install diffusers==0.37.1 transformers==4.57.6 tokenizers==0.22.0 huggingface-hub==0.35.1 optimum==2.3.0 optimum-intel==2.2.0 openvino==2026.4.0 nncf==3.4.0 torch pillow psutil
|
| 65 |
+
optimum-cli export openvino -m sca255/nova_xl_lcm --task text-to-image --library diffusers --weight-format fp16 ./nova_xl_lcm-ov-fp16
|
| 66 |
+
python quantize_int4.py
|
| 67 |
+
python inference_int4.py
|
| 68 |
+
python generate5.py
|
examples/01_hanfu_seed42_8step_1024.png
ADDED
|
Git LFS Details
|
examples/01_hanfu_seed42_8step_512.png
ADDED
|
Git LFS Details
|
examples/02_astronaut_seed43_8step_1024.png
ADDED
|
Git LFS Details
|
examples/02_astronaut_seed43_8step_512.png
ADDED
|
Git LFS Details
|
examples/03_taipei_seed44_8step_1024.png
ADDED
|
Git LFS Details
|
examples/03_taipei_seed44_8step_512.png
ADDED
|
Git LFS Details
|
examples/04_shiba_seed45_8step_1024.png
ADDED
|
Git LFS Details
|
examples/04_shiba_seed45_8step_512.png
ADDED
|
Git LFS Details
|
examples/05_ink_seed46_8step_1024.png
ADDED
|
Git LFS Details
|
examples/05_ink_seed46_8step_512.png
ADDED
|
Git LFS Details
|
examples/06_ghibli_style_seed47_8step_1024.png
ADDED
|
Git LFS Details
|
examples/06_ghibli_style_seed47_8step_512.png
ADDED
|
Git LFS Details
|
examples/07_makoto_shinkai_seed48_8step_1024.png
ADDED
|
Git LFS Details
|
examples/07_makoto_shinkai_seed48_8step_512.png
ADDED
|
Git LFS Details
|
examples/08_flat_vector_seed49_8step_1024.png
ADDED
|
Git LFS Details
|
examples/08_flat_vector_seed49_8step_512.png
ADDED
|
Git LFS Details
|
examples/09_retro_80s_seed50_8step_1024.png
ADDED
|
Git LFS Details
|
examples/09_retro_80s_seed50_8step_512.png
ADDED
|
Git LFS Details
|
examples/10_impasto_thick_seed51_8step_1024.png
ADDED
|
Git LFS Details
|
examples/10_impasto_thick_seed51_8step_512.png
ADDED
|
Git LFS Details
|
examples/benchmark.json
ADDED
|
@@ -0,0 +1,436 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "/tmp/opencode/nova_xl_lcm-ov-int4",
|
| 3 |
+
"load_compile_s": 12.45,
|
| 4 |
+
"height": 1024,
|
| 5 |
+
"width": 1024,
|
| 6 |
+
"results": [
|
| 7 |
+
{
|
| 8 |
+
"id": "01_hanfu",
|
| 9 |
+
"prompt": "1girl, red hanfu, intricate embroidery, golden phoenix headdress, soft night lighting, tiered pagoda background, lantern lights, anime style, masterpiece, best quality, ultra detailed",
|
| 10 |
+
"seed": 42,
|
| 11 |
+
"height": 1024,
|
| 12 |
+
"width": 1024,
|
| 13 |
+
"num_inference_steps_param": 8,
|
| 14 |
+
"guidance_scale": 1.5,
|
| 15 |
+
"scheduler_steps_observed": 8,
|
| 16 |
+
"step_times_s": [
|
| 17 |
+
6.022,
|
| 18 |
+
3.42,
|
| 19 |
+
3.492,
|
| 20 |
+
3.507,
|
| 21 |
+
3.495,
|
| 22 |
+
3.583,
|
| 23 |
+
3.441,
|
| 24 |
+
3.453
|
| 25 |
+
],
|
| 26 |
+
"total_s": 32.34,
|
| 27 |
+
"mean_step_s": 3.802,
|
| 28 |
+
"image": "/tmp/opencode/nova_xl_examples/01_hanfu_seed42_8step_1024.png",
|
| 29 |
+
"timestamp": "2026-09-30T08:00:16.487929",
|
| 30 |
+
"control_512": {
|
| 31 |
+
"image": "/tmp/opencode/nova_xl_examples/01_hanfu_seed42_8step_512.png",
|
| 32 |
+
"height": 512,
|
| 33 |
+
"width": 512,
|
| 34 |
+
"total_s": 9.59,
|
| 35 |
+
"mean_step_s": 1.137,
|
| 36 |
+
"step_times_s": [
|
| 37 |
+
1.397,
|
| 38 |
+
1.101,
|
| 39 |
+
1.108,
|
| 40 |
+
1.1,
|
| 41 |
+
1.097,
|
| 42 |
+
1.097,
|
| 43 |
+
1.095,
|
| 44 |
+
1.099
|
| 45 |
+
],
|
| 46 |
+
"timestamp": "2026-09-30T08:00:26.359003"
|
| 47 |
+
}
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"id": "02_astronaut",
|
| 51 |
+
"prompt": "1girl astronaut in lush jungle, cold color palette, detailed foliage, cinematic lighting, anime style, masterpiece, best quality, 8k",
|
| 52 |
+
"seed": 43,
|
| 53 |
+
"height": 1024,
|
| 54 |
+
"width": 1024,
|
| 55 |
+
"num_inference_steps_param": 8,
|
| 56 |
+
"guidance_scale": 1.5,
|
| 57 |
+
"scheduler_steps_observed": 8,
|
| 58 |
+
"step_times_s": [
|
| 59 |
+
3.543,
|
| 60 |
+
3.3,
|
| 61 |
+
3.326,
|
| 62 |
+
3.394,
|
| 63 |
+
3.301,
|
| 64 |
+
3.391,
|
| 65 |
+
3.492,
|
| 66 |
+
3.393
|
| 67 |
+
],
|
| 68 |
+
"total_s": 28.75,
|
| 69 |
+
"mean_step_s": 3.393,
|
| 70 |
+
"image": "/tmp/opencode/nova_xl_examples/02_astronaut_seed43_8step_1024.png",
|
| 71 |
+
"timestamp": "2026-09-30T08:00:55.583287",
|
| 72 |
+
"control_512": {
|
| 73 |
+
"image": "/tmp/opencode/nova_xl_examples/02_astronaut_seed43_8step_512.png",
|
| 74 |
+
"height": 512,
|
| 75 |
+
"width": 512,
|
| 76 |
+
"total_s": 9.63,
|
| 77 |
+
"mean_step_s": 1.128,
|
| 78 |
+
"step_times_s": [
|
| 79 |
+
1.23,
|
| 80 |
+
1.108,
|
| 81 |
+
1.189,
|
| 82 |
+
1.114,
|
| 83 |
+
1.087,
|
| 84 |
+
1.024,
|
| 85 |
+
1.072,
|
| 86 |
+
1.204
|
| 87 |
+
],
|
| 88 |
+
"timestamp": "2026-09-30T08:01:05.465534"
|
| 89 |
+
}
|
| 90 |
+
},
|
| 91 |
+
{
|
| 92 |
+
"id": "03_taipei",
|
| 93 |
+
"prompt": "1girl in cyberpunk Taipei at night, heavy rain, neon signs 'TAIPEI' and '台北', wet asphalt reflections, crowded night market, anime style, masterpiece, best quality",
|
| 94 |
+
"seed": 44,
|
| 95 |
+
"height": 1024,
|
| 96 |
+
"width": 1024,
|
| 97 |
+
"num_inference_steps_param": 8,
|
| 98 |
+
"guidance_scale": 1.5,
|
| 99 |
+
"scheduler_steps_observed": 8,
|
| 100 |
+
"step_times_s": [
|
| 101 |
+
4.209,
|
| 102 |
+
4.201,
|
| 103 |
+
4.073,
|
| 104 |
+
3.93,
|
| 105 |
+
3.913,
|
| 106 |
+
3.858,
|
| 107 |
+
3.899,
|
| 108 |
+
4.007
|
| 109 |
+
],
|
| 110 |
+
"total_s": 34.2,
|
| 111 |
+
"mean_step_s": 4.011,
|
| 112 |
+
"image": "/tmp/opencode/nova_xl_examples/03_taipei_seed44_8step_1024.png",
|
| 113 |
+
"timestamp": "2026-09-30T08:01:40.307647",
|
| 114 |
+
"control_512": {
|
| 115 |
+
"image": "/tmp/opencode/nova_xl_examples/03_taipei_seed44_8step_512.png",
|
| 116 |
+
"height": 512,
|
| 117 |
+
"width": 512,
|
| 118 |
+
"total_s": 10.68,
|
| 119 |
+
"mean_step_s": 1.259,
|
| 120 |
+
"step_times_s": [
|
| 121 |
+
1.48,
|
| 122 |
+
1.197,
|
| 123 |
+
1.125,
|
| 124 |
+
1.289,
|
| 125 |
+
1.281,
|
| 126 |
+
1.301,
|
| 127 |
+
1.131,
|
| 128 |
+
1.269
|
| 129 |
+
],
|
| 130 |
+
"timestamp": "2026-09-30T08:01:51.278539"
|
| 131 |
+
}
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
"id": "04_shiba",
|
| 135 |
+
"prompt": "cute shiba inu wearing tiny astronaut helmet, sunflower field under starry sky, dreamy illustration, vibrant colors, anime style, masterpiece, best quality",
|
| 136 |
+
"seed": 45,
|
| 137 |
+
"height": 1024,
|
| 138 |
+
"width": 1024,
|
| 139 |
+
"num_inference_steps_param": 8,
|
| 140 |
+
"guidance_scale": 1.5,
|
| 141 |
+
"scheduler_steps_observed": 8,
|
| 142 |
+
"step_times_s": [
|
| 143 |
+
4.077,
|
| 144 |
+
4.32,
|
| 145 |
+
3.774,
|
| 146 |
+
3.516,
|
| 147 |
+
3.614,
|
| 148 |
+
3.577,
|
| 149 |
+
3.528,
|
| 150 |
+
3.495
|
| 151 |
+
],
|
| 152 |
+
"total_s": 31.9,
|
| 153 |
+
"mean_step_s": 3.738,
|
| 154 |
+
"image": "/tmp/opencode/nova_xl_examples/04_shiba_seed45_8step_1024.png",
|
| 155 |
+
"timestamp": "2026-09-30T08:02:23.840968",
|
| 156 |
+
"control_512": {
|
| 157 |
+
"image": "/tmp/opencode/nova_xl_examples/04_shiba_seed45_8step_512.png",
|
| 158 |
+
"height": 512,
|
| 159 |
+
"width": 512,
|
| 160 |
+
"total_s": 9.84,
|
| 161 |
+
"mean_step_s": 1.17,
|
| 162 |
+
"step_times_s": [
|
| 163 |
+
1.352,
|
| 164 |
+
1.114,
|
| 165 |
+
1.196,
|
| 166 |
+
1.178,
|
| 167 |
+
1.127,
|
| 168 |
+
1.191,
|
| 169 |
+
1.095,
|
| 170 |
+
1.105
|
| 171 |
+
],
|
| 172 |
+
"timestamp": "2026-09-30T08:02:33.960585"
|
| 173 |
+
}
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"id": "05_ink",
|
| 177 |
+
"prompt": "traditional chinese ink wash landscape, misty mountains, small pagoda on cliff, cranes flying, minimalist, elegant, anime style, masterpiece, best quality",
|
| 178 |
+
"seed": 46,
|
| 179 |
+
"height": 1024,
|
| 180 |
+
"width": 1024,
|
| 181 |
+
"num_inference_steps_param": 8,
|
| 182 |
+
"guidance_scale": 1.5,
|
| 183 |
+
"scheduler_steps_observed": 8,
|
| 184 |
+
"step_times_s": [
|
| 185 |
+
3.559,
|
| 186 |
+
3.495,
|
| 187 |
+
3.486,
|
| 188 |
+
3.512,
|
| 189 |
+
3.496,
|
| 190 |
+
3.33,
|
| 191 |
+
3.498,
|
| 192 |
+
3.496
|
| 193 |
+
],
|
| 194 |
+
"total_s": 29.66,
|
| 195 |
+
"mean_step_s": 3.484,
|
| 196 |
+
"image": "/tmp/opencode/nova_xl_examples/05_ink_seed46_8step_1024.png",
|
| 197 |
+
"timestamp": "2026-09-30T08:03:04.275206",
|
| 198 |
+
"control_512": {
|
| 199 |
+
"image": "/tmp/opencode/nova_xl_examples/05_ink_seed46_8step_512.png",
|
| 200 |
+
"height": 512,
|
| 201 |
+
"width": 512,
|
| 202 |
+
"total_s": 9.53,
|
| 203 |
+
"mean_step_s": 1.131,
|
| 204 |
+
"step_times_s": [
|
| 205 |
+
1.238,
|
| 206 |
+
1.181,
|
| 207 |
+
1.115,
|
| 208 |
+
1.108,
|
| 209 |
+
1.18,
|
| 210 |
+
1.103,
|
| 211 |
+
1.095,
|
| 212 |
+
1.024
|
| 213 |
+
],
|
| 214 |
+
"timestamp": "2026-09-30T08:03:14.079835"
|
| 215 |
+
}
|
| 216 |
+
},
|
| 217 |
+
{
|
| 218 |
+
"id": "06_ghibli_style",
|
| 219 |
+
"prompt": "studio ghibli style, 1girl in floating castle, magical clouds, whimsical atmosphere, detailed background, masterpiece, best quality",
|
| 220 |
+
"seed": 47,
|
| 221 |
+
"height": 1024,
|
| 222 |
+
"width": 1024,
|
| 223 |
+
"num_inference_steps_param": 8,
|
| 224 |
+
"guidance_scale": 1.5,
|
| 225 |
+
"scheduler_steps_observed": 8,
|
| 226 |
+
"step_times_s": [
|
| 227 |
+
3.617,
|
| 228 |
+
3.501,
|
| 229 |
+
3.42,
|
| 230 |
+
3.491,
|
| 231 |
+
3.505,
|
| 232 |
+
3.482,
|
| 233 |
+
3.512,
|
| 234 |
+
3.412
|
| 235 |
+
],
|
| 236 |
+
"total_s": 29.74,
|
| 237 |
+
"mean_step_s": 3.493,
|
| 238 |
+
"image": "/tmp/opencode/nova_xl_examples/06_ghibli_style_seed47_8step_1024.png",
|
| 239 |
+
"timestamp": "2026-09-30T08:03:44.580401",
|
| 240 |
+
"control_512": {
|
| 241 |
+
"image": "/tmp/opencode/nova_xl_examples/06_ghibli_style_seed47_8step_512.png",
|
| 242 |
+
"height": 512,
|
| 243 |
+
"width": 512,
|
| 244 |
+
"total_s": 9.83,
|
| 245 |
+
"mean_step_s": 1.167,
|
| 246 |
+
"step_times_s": [
|
| 247 |
+
1.249,
|
| 248 |
+
1.189,
|
| 249 |
+
1.114,
|
| 250 |
+
1.195,
|
| 251 |
+
1.178,
|
| 252 |
+
1.1,
|
| 253 |
+
1.115,
|
| 254 |
+
1.2
|
| 255 |
+
],
|
| 256 |
+
"timestamp": "2026-09-30T08:03:54.698464"
|
| 257 |
+
}
|
| 258 |
+
},
|
| 259 |
+
{
|
| 260 |
+
"id": "07_makoto_shinkai",
|
| 261 |
+
"prompt": "makoto shinkai style, 1girl under comet sky, breathtaking lighting, detailed clouds, emotional atmosphere, anime style, masterpiece, 8k",
|
| 262 |
+
"seed": 48,
|
| 263 |
+
"height": 1024,
|
| 264 |
+
"width": 1024,
|
| 265 |
+
"num_inference_steps_param": 8,
|
| 266 |
+
"guidance_scale": 1.5,
|
| 267 |
+
"scheduler_steps_observed": 8,
|
| 268 |
+
"step_times_s": [
|
| 269 |
+
3.664,
|
| 270 |
+
3.499,
|
| 271 |
+
3.412,
|
| 272 |
+
3.607,
|
| 273 |
+
3.488,
|
| 274 |
+
3.486,
|
| 275 |
+
3.598,
|
| 276 |
+
3.424
|
| 277 |
+
],
|
| 278 |
+
"total_s": 29.97,
|
| 279 |
+
"mean_step_s": 3.522,
|
| 280 |
+
"image": "/tmp/opencode/nova_xl_examples/07_makoto_shinkai_seed48_8step_1024.png",
|
| 281 |
+
"timestamp": "2026-09-30T08:04:25.367477",
|
| 282 |
+
"control_512": {
|
| 283 |
+
"image": "/tmp/opencode/nova_xl_examples/07_makoto_shinkai_seed48_8step_512.png",
|
| 284 |
+
"height": 512,
|
| 285 |
+
"width": 512,
|
| 286 |
+
"total_s": 9.53,
|
| 287 |
+
"mean_step_s": 1.13,
|
| 288 |
+
"step_times_s": [
|
| 289 |
+
1.23,
|
| 290 |
+
1.117,
|
| 291 |
+
1.112,
|
| 292 |
+
1.174,
|
| 293 |
+
1.021,
|
| 294 |
+
1.098,
|
| 295 |
+
1.181,
|
| 296 |
+
1.108
|
| 297 |
+
],
|
| 298 |
+
"timestamp": "2026-09-30T08:04:35.186794"
|
| 299 |
+
}
|
| 300 |
+
},
|
| 301 |
+
{
|
| 302 |
+
"id": "08_flat_vector",
|
| 303 |
+
"prompt": "flat vector illustration, 1girl in modern city, clean geometric shapes, bold colors, minimalist, commercial anime art style, behance trending",
|
| 304 |
+
"seed": 49,
|
| 305 |
+
"height": 1024,
|
| 306 |
+
"width": 1024,
|
| 307 |
+
"num_inference_steps_param": 8,
|
| 308 |
+
"guidance_scale": 1.5,
|
| 309 |
+
"scheduler_steps_observed": 8,
|
| 310 |
+
"step_times_s": [
|
| 311 |
+
3.633,
|
| 312 |
+
3.598,
|
| 313 |
+
3.412,
|
| 314 |
+
3.604,
|
| 315 |
+
3.484,
|
| 316 |
+
3.503,
|
| 317 |
+
3.608,
|
| 318 |
+
3.487
|
| 319 |
+
],
|
| 320 |
+
"total_s": 30.13,
|
| 321 |
+
"mean_step_s": 3.541,
|
| 322 |
+
"image": "/tmp/opencode/nova_xl_examples/08_flat_vector_seed49_8step_1024.png",
|
| 323 |
+
"timestamp": "2026-09-30T08:05:05.802048",
|
| 324 |
+
"control_512": {
|
| 325 |
+
"image": "/tmp/opencode/nova_xl_examples/08_flat_vector_seed49_8step_512.png",
|
| 326 |
+
"height": 512,
|
| 327 |
+
"width": 512,
|
| 328 |
+
"total_s": 9.77,
|
| 329 |
+
"mean_step_s": 1.16,
|
| 330 |
+
"step_times_s": [
|
| 331 |
+
1.274,
|
| 332 |
+
1.182,
|
| 333 |
+
1.124,
|
| 334 |
+
1.187,
|
| 335 |
+
1.108,
|
| 336 |
+
1.182,
|
| 337 |
+
1.109,
|
| 338 |
+
1.114
|
| 339 |
+
],
|
| 340 |
+
"timestamp": "2026-09-30T08:05:15.884667"
|
| 341 |
+
}
|
| 342 |
+
},
|
| 343 |
+
{
|
| 344 |
+
"id": "09_retro_80s",
|
| 345 |
+
"prompt": "1980s retro anime, 1girl with neon city background, VHS aesthetic, synthwave colors, cel shaded, nostalgic anime style, masterpiece",
|
| 346 |
+
"seed": 50,
|
| 347 |
+
"height": 1024,
|
| 348 |
+
"width": 1024,
|
| 349 |
+
"num_inference_steps_param": 8,
|
| 350 |
+
"guidance_scale": 1.5,
|
| 351 |
+
"scheduler_steps_observed": 8,
|
| 352 |
+
"step_times_s": [
|
| 353 |
+
3.713,
|
| 354 |
+
3.598,
|
| 355 |
+
3.475,
|
| 356 |
+
3.406,
|
| 357 |
+
3.407,
|
| 358 |
+
3.507,
|
| 359 |
+
3.51,
|
| 360 |
+
3.476
|
| 361 |
+
],
|
| 362 |
+
"total_s": 29.89,
|
| 363 |
+
"mean_step_s": 3.511,
|
| 364 |
+
"image": "/tmp/opencode/nova_xl_examples/09_retro_80s_seed50_8step_1024.png",
|
| 365 |
+
"timestamp": "2026-09-30T08:05:46.392780",
|
| 366 |
+
"control_512": {
|
| 367 |
+
"image": "/tmp/opencode/nova_xl_examples/09_retro_80s_seed50_8step_512.png",
|
| 368 |
+
"height": 512,
|
| 369 |
+
"width": 512,
|
| 370 |
+
"total_s": 9.57,
|
| 371 |
+
"mean_step_s": 1.133,
|
| 372 |
+
"step_times_s": [
|
| 373 |
+
1.262,
|
| 374 |
+
1.108,
|
| 375 |
+
1.175,
|
| 376 |
+
1.109,
|
| 377 |
+
1.102,
|
| 378 |
+
1.103,
|
| 379 |
+
1.105,
|
| 380 |
+
1.1
|
| 381 |
+
],
|
| 382 |
+
"timestamp": "2026-09-30T08:05:56.288080"
|
| 383 |
+
}
|
| 384 |
+
},
|
| 385 |
+
{
|
| 386 |
+
"id": "10_impasto_thick",
|
| 387 |
+
"prompt": "thick impasto anime concept art, 1girl with heavy brushstrokes, expressive texture, dramatic lighting, artstation masterpiece, detailed anime style",
|
| 388 |
+
"seed": 51,
|
| 389 |
+
"height": 1024,
|
| 390 |
+
"width": 1024,
|
| 391 |
+
"num_inference_steps_param": 8,
|
| 392 |
+
"guidance_scale": 1.5,
|
| 393 |
+
"scheduler_steps_observed": 8,
|
| 394 |
+
"step_times_s": [
|
| 395 |
+
3.546,
|
| 396 |
+
3.482,
|
| 397 |
+
3.494,
|
| 398 |
+
3.444,
|
| 399 |
+
3.383,
|
| 400 |
+
3.493,
|
| 401 |
+
3.486,
|
| 402 |
+
3.417
|
| 403 |
+
],
|
| 404 |
+
"total_s": 29.52,
|
| 405 |
+
"mean_step_s": 3.468,
|
| 406 |
+
"image": "/tmp/opencode/nova_xl_examples/10_impasto_thick_seed51_8step_1024.png",
|
| 407 |
+
"timestamp": "2026-09-30T08:06:26.353283",
|
| 408 |
+
"control_512": {
|
| 409 |
+
"image": "/tmp/opencode/nova_xl_examples/10_impasto_thick_seed51_8step_512.png",
|
| 410 |
+
"height": 512,
|
| 411 |
+
"width": 512,
|
| 412 |
+
"total_s": 9.53,
|
| 413 |
+
"mean_step_s": 1.13,
|
| 414 |
+
"step_times_s": [
|
| 415 |
+
1.222,
|
| 416 |
+
1.121,
|
| 417 |
+
1.105,
|
| 418 |
+
1.094,
|
| 419 |
+
1.1,
|
| 420 |
+
1.107,
|
| 421 |
+
1.173,
|
| 422 |
+
1.121
|
| 423 |
+
],
|
| 424 |
+
"timestamp": "2026-09-30T08:06:36.175755"
|
| 425 |
+
}
|
| 426 |
+
}
|
| 427 |
+
],
|
| 428 |
+
"sysinfo": {
|
| 429 |
+
"cpu_model": "Intel(R) Xeon(R) Platinum 8559C",
|
| 430 |
+
"os_cpu_count": 192,
|
| 431 |
+
"lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 46 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 192\nOn-line CPU(s) list: 0-191\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8559C\nCPU family: 6\nModel: 207\nThread(s) per core: 2\nCore(s) per socket: 48\nSocket(s): 2\nStepping: 2\nBogoMIPS: 4800.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd ida arat avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq rdpid cldemote movdiri movdir64b md_clear serialize amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nHypervisor vendor: KVM\nVirtualization type: full\nL1d cache: 4.5 MiB (96 instances)\nL1i cache: 3 MiB (96 instances)\nL2 cache: 192 MiB (96 instances)\nL3 cache: 640 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-47,96-143\nNUMA node1 CPU(s): 48-95,144-191\nVulnerability Gather data sampling: Not affected\nVulnerability Ghostwrite: Not affected\nVulnerability Indirect target selection: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Old microcode: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S\nVulnerability Srbds: Not affected\nVulnerability Tsa: Not affected\nVulnerability Tsx async abort: Not affected\nVulnerability Vmscape: Not affected\n",
|
| 432 |
+
"openvino_version": "2026.4.0-22959-99c81491cc3-releases/2026/4",
|
| 433 |
+
"settings": "num_inference_steps=8, guidance_scale=1.5, 1024 main + 512 control",
|
| 434 |
+
"source_model": "sca255/nova_xl_lcm (SDXL LCM anime)"
|
| 435 |
+
}
|
| 436 |
+
}
|
examples/prompts.txt
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
01_hanfu seed=42 1girl, red hanfu, intricate embroidery, golden phoenix headdress, soft night lighting, tiered pagoda background, lantern lights, anime style, masterpiece, best quality, ultra detailed 2026-09-30T08:06:36.210047
|
| 2 |
+
|
| 3 |
+
02_astronaut seed=43 1girl astronaut in lush jungle, cold color palette, detailed foliage, cinematic lighting, anime style, masterpiece, best quality, 8k 2026-09-30T08:06:36.210057
|
| 4 |
+
|
| 5 |
+
03_taipei seed=44 1girl in cyberpunk Taipei at night, heavy rain, neon signs 'TAIPEI' and '台北', wet asphalt reflections, crowded night market, anime style, masterpiece, best quality 2026-09-30T08:06:36.210059
|
| 6 |
+
|
| 7 |
+
04_shiba seed=45 cute shiba inu wearing tiny astronaut helmet, sunflower field under starry sky, dreamy illustration, vibrant colors, anime style, masterpiece, best quality 2026-09-30T08:06:36.210065
|
| 8 |
+
|
| 9 |
+
05_ink seed=46 traditional chinese ink wash landscape, misty mountains, small pagoda on cliff, cranes flying, minimalist, elegant, anime style, masterpiece, best quality 2026-09-30T08:06:36.210067
|
| 10 |
+
|
| 11 |
+
06_ghibli_style seed=47 studio ghibli style, 1girl in floating castle, magical clouds, whimsical atmosphere, detailed background, masterpiece, best quality 2026-09-30T08:06:36.210068
|
| 12 |
+
|
| 13 |
+
07_makoto_shinkai seed=48 makoto shinkai style, 1girl under comet sky, breathtaking lighting, detailed clouds, emotional atmosphere, anime style, masterpiece, 8k 2026-09-30T08:06:36.210070
|
| 14 |
+
|
| 15 |
+
08_flat_vector seed=49 flat vector illustration, 1girl in modern city, clean geometric shapes, bold colors, minimalist, commercial anime art style, behance trending 2026-09-30T08:06:36.210072
|
| 16 |
+
|
| 17 |
+
09_retro_80s seed=50 1980s retro anime, 1girl with neon city background, VHS aesthetic, synthwave colors, cel shaded, nostalgic anime style, masterpiece 2026-09-30T08:06:36.210073
|
| 18 |
+
|
| 19 |
+
10_impasto_thick seed=51 thick impasto anime concept art, 1girl with heavy brushstrokes, expressive texture, dramatic lighting, artstation masterpiece, detailed anime style 2026-09-30T08:06:36.210075
|
| 20 |
+
|
generate5.py
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""Generate 10 prompts with Nova XL LCM OV INT4 + benchmark.
|
| 3 |
+
LCM recipe: num_inference_steps=8, guidance_scale=1.5, 1024x1024 (+512 control).
|
| 4 |
+
10 fixed seeds 42-51, saved to examples/.
|
| 5 |
+
Per-step timing via callback. Plus 512px control group.
|
| 6 |
+
"""
|
| 7 |
+
import json, time, os, gc, subprocess
|
| 8 |
+
from pathlib import Path
|
| 9 |
+
|
| 10 |
+
import torch
|
| 11 |
+
from optimum.intel import OVDiffusionPipeline
|
| 12 |
+
|
| 13 |
+
MODEL_ID = "HelloSun/nova_xl_lcm-OpenVINO-INT4" # or local ./nova_xl_lcm-ov-int4
|
| 14 |
+
OUT_DIR = Path("examples")
|
| 15 |
+
OUT_DIR.mkdir(exist_ok=True)
|
| 16 |
+
|
| 17 |
+
PROMPTS = [
|
| 18 |
+
("01_hanfu", 42, "1girl, red hanfu, intricate embroidery, golden phoenix headdress, soft night lighting, tiered pagoda background, lantern lights, anime style, masterpiece, best quality, ultra detailed"),
|
| 19 |
+
("02_astronaut", 43, "1girl astronaut in lush jungle, cold color palette, detailed foliage, cinematic lighting, anime style, masterpiece, best quality, 8k"),
|
| 20 |
+
("03_taipei", 44, "1girl in cyberpunk Taipei at night, heavy rain, neon signs 'TAIPEI' and '台北', wet asphalt reflections, crowded night market, anime style, masterpiece, best quality"),
|
| 21 |
+
("04_shiba", 45, "cute shiba inu wearing tiny astronaut helmet, sunflower field under starry sky, dreamy illustration, vibrant colors, anime style, masterpiece, best quality"),
|
| 22 |
+
("05_ink", 46, "traditional chinese ink wash landscape, misty mountains, small pagoda on cliff, cranes flying, minimalist, elegant, anime style, masterpiece, best quality"),
|
| 23 |
+
("06_ghibli_style", 47, "studio ghibli style, 1girl in floating castle, magical clouds, whimsical atmosphere, detailed background, masterpiece, best quality"),
|
| 24 |
+
("07_makoto_shinkai", 48, "makoto shinkai style, 1girl under comet sky, breathtaking lighting, detailed clouds, emotional atmosphere, anime style, masterpiece, 8k"),
|
| 25 |
+
("08_flat_vector", 49, "flat vector illustration, 1girl in modern city, clean geometric shapes, bold colors, minimalist, commercial anime art style, behance trending"),
|
| 26 |
+
("09_retro_80s", 50, "1980s retro anime, 1girl with neon city background, VHS aesthetic, synthwave colors, cel shaded, nostalgic anime style, masterpiece"),
|
| 27 |
+
("10_impasto_thick", 51, "thick impasto anime concept art, 1girl with heavy brushstrokes, expressive texture, dramatic lighting, artstation masterpiece, detailed anime style"),
|
| 28 |
+
]
|
| 29 |
+
|
| 30 |
+
HEIGHT = WIDTH = 1024
|
| 31 |
+
NUM_STEPS = 8
|
| 32 |
+
GUIDANCE = 1.5
|
| 33 |
+
CONTROL_RES = 512
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def main():
|
| 37 |
+
import argparse
|
| 38 |
+
parser = argparse.ArgumentParser()
|
| 39 |
+
parser.add_argument("--model", default=MODEL_ID)
|
| 40 |
+
parser.add_argument("--outdir", default="examples")
|
| 41 |
+
args = parser.parse_args()
|
| 42 |
+
outdir = Path(args.outdir)
|
| 43 |
+
outdir.mkdir(parents=True, exist_ok=True)
|
| 44 |
+
|
| 45 |
+
print("=== Loading OV INT4 pipeline ===")
|
| 46 |
+
t_load0 = time.time()
|
| 47 |
+
pipe = OVDiffusionPipeline.from_pretrained(args.model, compile=True)
|
| 48 |
+
t_load = time.time() - t_load0
|
| 49 |
+
print(f"load+compile: {t_load:.1f}s")
|
| 50 |
+
|
| 51 |
+
results = []
|
| 52 |
+
for pid, seed, prompt in PROMPTS:
|
| 53 |
+
print(f"\n=== {pid} seed={seed} ===")
|
| 54 |
+
print(prompt)
|
| 55 |
+
gc.collect()
|
| 56 |
+
|
| 57 |
+
step_times = []
|
| 58 |
+
t_last = [time.time()]
|
| 59 |
+
|
| 60 |
+
def cb(pipe, step_idx, timestep, callback_kwargs):
|
| 61 |
+
now = time.time()
|
| 62 |
+
step_times.append(now - t_last[0])
|
| 63 |
+
t_last[0] = now
|
| 64 |
+
return callback_kwargs
|
| 65 |
+
|
| 66 |
+
t0 = time.time()
|
| 67 |
+
out = pipe(
|
| 68 |
+
prompt=prompt,
|
| 69 |
+
height=HEIGHT,
|
| 70 |
+
width=WIDTH,
|
| 71 |
+
num_inference_steps=NUM_STEPS,
|
| 72 |
+
guidance_scale=GUIDANCE,
|
| 73 |
+
generator=torch.Generator().manual_seed(seed),
|
| 74 |
+
callback_on_step_end=cb,
|
| 75 |
+
callback_on_step_end_tensor_inputs=["latents"],
|
| 76 |
+
)
|
| 77 |
+
total = time.time() - t0
|
| 78 |
+
img = out.images[0]
|
| 79 |
+
save_path = outdir / f"{pid}_seed{seed}_{NUM_STEPS}step_1024.png"
|
| 80 |
+
img.save(save_path)
|
| 81 |
+
print(f"saved {save_path} size={img.size} total={total:.1f}s")
|
| 82 |
+
print(f"step times: {[f'{x:.2f}' for x in step_times]}")
|
| 83 |
+
entry = {
|
| 84 |
+
"id": pid, "prompt": prompt, "seed": seed,
|
| 85 |
+
"height": HEIGHT, "width": WIDTH,
|
| 86 |
+
"num_inference_steps_param": NUM_STEPS,
|
| 87 |
+
"guidance_scale": GUIDANCE,
|
| 88 |
+
"scheduler_steps_observed": len(step_times),
|
| 89 |
+
"step_times_s": [round(x, 3) for x in step_times],
|
| 90 |
+
"total_s": round(total, 2),
|
| 91 |
+
"mean_step_s": round(sum(step_times) / len(step_times), 3) if step_times else None,
|
| 92 |
+
"image": str(save_path),
|
| 93 |
+
}
|
| 94 |
+
# 512px control
|
| 95 |
+
gc.collect()
|
| 96 |
+
c_times = []
|
| 97 |
+
c_last = [time.time()]
|
| 98 |
+
|
| 99 |
+
def cb2(pipe, step_idx, timestep, callback_kwargs):
|
| 100 |
+
now = time.time()
|
| 101 |
+
c_times.append(now - c_last[0])
|
| 102 |
+
c_last[0] = now
|
| 103 |
+
return callback_kwargs
|
| 104 |
+
|
| 105 |
+
tc0 = time.time()
|
| 106 |
+
cout = pipe(
|
| 107 |
+
prompt=prompt, height=CONTROL_RES, width=CONTROL_RES,
|
| 108 |
+
num_inference_steps=NUM_STEPS, guidance_scale=GUIDANCE,
|
| 109 |
+
generator=torch.Generator().manual_seed(seed),
|
| 110 |
+
callback_on_step_end=cb2,
|
| 111 |
+
callback_on_step_end_tensor_inputs=["latents"],
|
| 112 |
+
)
|
| 113 |
+
c_total = time.time() - tc0
|
| 114 |
+
cimg = cout.images[0]
|
| 115 |
+
c_path = outdir / f"{pid}_seed{seed}_{NUM_STEPS}step_512.png"
|
| 116 |
+
cimg.save(c_path)
|
| 117 |
+
print(f"control 512 saved {c_path} total={c_total:.1f}s mean={sum(c_times)/len(c_times):.2f}s")
|
| 118 |
+
entry["control_512"] = {
|
| 119 |
+
"image": str(c_path), "height": CONTROL_RES, "width": CONTROL_RES,
|
| 120 |
+
"total_s": round(c_total, 2),
|
| 121 |
+
"mean_step_s": round(sum(c_times) / len(c_times), 3) if c_times else None,
|
| 122 |
+
"step_times_s": [round(x, 3) for x in c_times],
|
| 123 |
+
}
|
| 124 |
+
results.append(entry)
|
| 125 |
+
|
| 126 |
+
with open(outdir / "benchmark.json", "w") as f:
|
| 127 |
+
import openvino as ov
|
| 128 |
+
try:
|
| 129 |
+
lscpu = subprocess.check_output("lscpu", shell=True, text=True)
|
| 130 |
+
except Exception as e:
|
| 131 |
+
lscpu = str(e)
|
| 132 |
+
sysinfo = {
|
| 133 |
+
"cpu_model": "Intel(R) Xeon(R) Platinum 8559C",
|
| 134 |
+
"os_cpu_count": os.cpu_count(),
|
| 135 |
+
"lscpu": lscpu,
|
| 136 |
+
"openvino_version": ov.__version__,
|
| 137 |
+
"settings": f"num_inference_steps={NUM_STEPS}, guidance_scale={GUIDANCE}, 1024 main + 512 control",
|
| 138 |
+
"source_model": "sca255/nova_xl_lcm (SDXL LCM anime)",
|
| 139 |
+
}
|
| 140 |
+
json.dump({"model": args.model, "load_compile_s": round(t_load, 2),
|
| 141 |
+
"height": HEIGHT, "width": WIDTH, "results": results,
|
| 142 |
+
"sysinfo": sysinfo}, f, indent=2, ensure_ascii=False)
|
| 143 |
+
with open(outdir / "prompts.txt", "w") as f:
|
| 144 |
+
for pid, seed, prompt in PROMPTS:
|
| 145 |
+
f.write(f"{pid}\tseed={seed}\t{prompt}\n\n")
|
| 146 |
+
print(f"\nDone. See {outdir}/benchmark.json")
|
| 147 |
+
|
| 148 |
+
|
| 149 |
+
if __name__ == "__main__":
|
| 150 |
+
main()
|
inference_int4.py
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Nova XL LCM OpenVINO INT4 inference example (optimum-intel).
|
| 2 |
+
Requires: diffusers==0.37.1, transformers==4.57.6, tokenizers==0.22.0,
|
| 3 |
+
huggingface-hub==0.35.1, optimum-intel==2.2.0, optimum==2.3.0,
|
| 4 |
+
openvino==2026.4.0, nncf==3.4.0, torch, pillow, psutil
|
| 5 |
+
Source model: sca255/nova_xl_lcm (SDXL LCM anime).
|
| 6 |
+
Recipe: num_inference_steps=8, guidance_scale=1.5, 1024x1024.
|
| 7 |
+
"""
|
| 8 |
+
import torch
|
| 9 |
+
from optimum.intel import OVDiffusionPipeline
|
| 10 |
+
|
| 11 |
+
MODEL_ID = "HelloSun/nova_xl_lcm-OpenVINO-INT4" # or local ./nova_xl_lcm-ov-int4
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
def main():
|
| 15 |
+
pipe = OVDiffusionPipeline.from_pretrained(MODEL_ID, compile=True)
|
| 16 |
+
prompt = "1girl, anime style, masterpiece, best quality, detailed face, beautiful eyes"
|
| 17 |
+
image = pipe(
|
| 18 |
+
prompt=prompt,
|
| 19 |
+
height=1024, width=1024,
|
| 20 |
+
num_inference_steps=8,
|
| 21 |
+
guidance_scale=1.5,
|
| 22 |
+
generator=torch.Generator().manual_seed(42),
|
| 23 |
+
).images[0]
|
| 24 |
+
image.save("nova_xl_lcm_ov_int4.png")
|
| 25 |
+
print("saved nova_xl_lcm_ov_int4.png")
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
if __name__ == "__main__":
|
| 29 |
+
main()
|
model_index.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_class_name": "StableDiffusionXLPipeline",
|
| 3 |
+
"_diffusers_version": "0.37.1",
|
| 4 |
+
"_name_or_path": "/tmp/opencode/nova_xl_lcm_pt_v2",
|
| 5 |
+
"feature_extractor": [
|
| 6 |
+
null,
|
| 7 |
+
null
|
| 8 |
+
],
|
| 9 |
+
"force_zeros_for_empty_prompt": true,
|
| 10 |
+
"image_encoder": [
|
| 11 |
+
null,
|
| 12 |
+
null
|
| 13 |
+
],
|
| 14 |
+
"scheduler": [
|
| 15 |
+
"diffusers",
|
| 16 |
+
"LCMScheduler"
|
| 17 |
+
],
|
| 18 |
+
"text_encoder": [
|
| 19 |
+
"transformers",
|
| 20 |
+
"CLIPTextModel"
|
| 21 |
+
],
|
| 22 |
+
"text_encoder_2": [
|
| 23 |
+
"transformers",
|
| 24 |
+
"CLIPTextModelWithProjection"
|
| 25 |
+
],
|
| 26 |
+
"tokenizer": [
|
| 27 |
+
"transformers",
|
| 28 |
+
"CLIPTokenizer"
|
| 29 |
+
],
|
| 30 |
+
"tokenizer_2": [
|
| 31 |
+
"transformers",
|
| 32 |
+
"CLIPTokenizer"
|
| 33 |
+
],
|
| 34 |
+
"unet": [
|
| 35 |
+
"diffusers",
|
| 36 |
+
"UNet2DConditionModel"
|
| 37 |
+
],
|
| 38 |
+
"vae": [
|
| 39 |
+
"diffusers",
|
| 40 |
+
"AutoencoderKL"
|
| 41 |
+
]
|
| 42 |
+
}
|
openvino_config.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"dtype": "int4_int4_int4",
|
| 3 |
+
"input_info": null,
|
| 4 |
+
"optimum_version": "2.3.0",
|
| 5 |
+
"output_attentions": false,
|
| 6 |
+
"quantization_config": {
|
| 7 |
+
"_dataset_kwargs": {},
|
| 8 |
+
"dataset": null,
|
| 9 |
+
"default_config": {
|
| 10 |
+
"quant_method": "default"
|
| 11 |
+
},
|
| 12 |
+
"ignored_scope": null,
|
| 13 |
+
"num_samples": null,
|
| 14 |
+
"processor": null,
|
| 15 |
+
"quantization_configs": {
|
| 16 |
+
"text_encoder": {
|
| 17 |
+
"_dataset_kwargs": {},
|
| 18 |
+
"all_layers": null,
|
| 19 |
+
"backup_precision": null,
|
| 20 |
+
"bits": 4,
|
| 21 |
+
"dataset": null,
|
| 22 |
+
"dq_group_size": null,
|
| 23 |
+
"dtype": "int4",
|
| 24 |
+
"gptq": null,
|
| 25 |
+
"group_size": 128,
|
| 26 |
+
"group_size_fallback": "adjust",
|
| 27 |
+
"ignored_scope": null,
|
| 28 |
+
"lora_correction": null,
|
| 29 |
+
"num_samples": null,
|
| 30 |
+
"processor": null,
|
| 31 |
+
"quant_method": "default",
|
| 32 |
+
"ratio": 1.0,
|
| 33 |
+
"scale_estimation": null,
|
| 34 |
+
"sensitivity_metric": null,
|
| 35 |
+
"statistics_path": null,
|
| 36 |
+
"sym": false,
|
| 37 |
+
"tokenizer": null
|
| 38 |
+
},
|
| 39 |
+
"text_encoder_2": {
|
| 40 |
+
"_dataset_kwargs": {},
|
| 41 |
+
"all_layers": null,
|
| 42 |
+
"backup_precision": null,
|
| 43 |
+
"bits": 4,
|
| 44 |
+
"dataset": null,
|
| 45 |
+
"dq_group_size": null,
|
| 46 |
+
"dtype": "int4",
|
| 47 |
+
"gptq": null,
|
| 48 |
+
"group_size": 128,
|
| 49 |
+
"group_size_fallback": "adjust",
|
| 50 |
+
"ignored_scope": null,
|
| 51 |
+
"lora_correction": null,
|
| 52 |
+
"num_samples": null,
|
| 53 |
+
"processor": null,
|
| 54 |
+
"quant_method": "default",
|
| 55 |
+
"ratio": 1.0,
|
| 56 |
+
"scale_estimation": null,
|
| 57 |
+
"sensitivity_metric": null,
|
| 58 |
+
"statistics_path": null,
|
| 59 |
+
"sym": false,
|
| 60 |
+
"tokenizer": null
|
| 61 |
+
},
|
| 62 |
+
"unet": {
|
| 63 |
+
"_dataset_kwargs": {},
|
| 64 |
+
"all_layers": null,
|
| 65 |
+
"backup_precision": null,
|
| 66 |
+
"bits": 4,
|
| 67 |
+
"dataset": null,
|
| 68 |
+
"dq_group_size": null,
|
| 69 |
+
"dtype": "int4",
|
| 70 |
+
"gptq": null,
|
| 71 |
+
"group_size": 128,
|
| 72 |
+
"group_size_fallback": "adjust",
|
| 73 |
+
"ignored_scope": null,
|
| 74 |
+
"lora_correction": null,
|
| 75 |
+
"num_samples": null,
|
| 76 |
+
"processor": null,
|
| 77 |
+
"quant_method": "default",
|
| 78 |
+
"ratio": 1.0,
|
| 79 |
+
"scale_estimation": null,
|
| 80 |
+
"sensitivity_metric": null,
|
| 81 |
+
"statistics_path": null,
|
| 82 |
+
"sym": false,
|
| 83 |
+
"tokenizer": null
|
| 84 |
+
}
|
| 85 |
+
},
|
| 86 |
+
"tokenizer": null
|
| 87 |
+
},
|
| 88 |
+
"save_onnx_model": false,
|
| 89 |
+
"transformers_version": "4.57.6"
|
| 90 |
+
}
|
quantize_int4.py
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Quantize Nova XL LCM OV FP16 -> INT4 using optimum (NNCF weight-only).
|
| 2 |
+
Source: sca255/nova_xl_lcm (SDXL LCM anime, example: 8 steps, guidance 1.5)
|
| 3 |
+
FP16 export: optimum-cli export openvino -m sca255/nova_xl_lcm --task text-to-image --library diffusers --weight-format fp16 ./nova_xl_lcm-ov-fp16
|
| 4 |
+
INT4: unet + text_encoder + text_encoder_2 -> OVWeightQuantizationConfig(bits=4,sym=False,group_size=128,group_size_fallback="adjust",ratio=1.0), rest default INT8.
|
| 5 |
+
"""
|
| 6 |
+
from optimum.intel import OVStableDiffusionPipeline, OVQuantizer
|
| 7 |
+
from optimum.intel.openvino.configuration import (
|
| 8 |
+
OVConfig, OVWeightQuantizationConfig, OVPipelineQuantizationConfig,
|
| 9 |
+
)
|
| 10 |
+
|
| 11 |
+
fp16_dir = "/tmp/opencode/nova_xl_lcm-ov-fp16-cli"
|
| 12 |
+
int4_dir = "/tmp/opencode/nova_xl_lcm-ov-int4"
|
| 13 |
+
|
| 14 |
+
int4_config = OVWeightQuantizationConfig(
|
| 15 |
+
bits=4, sym=False, group_size=128, group_size_fallback="adjust", ratio=1.0,
|
| 16 |
+
)
|
| 17 |
+
|
| 18 |
+
pipeline_config = OVPipelineQuantizationConfig(
|
| 19 |
+
quantization_configs={
|
| 20 |
+
"unet": int4_config,
|
| 21 |
+
"text_encoder": int4_config,
|
| 22 |
+
"text_encoder_2": int4_config,
|
| 23 |
+
},
|
| 24 |
+
default_config=OVWeightQuantizationConfig(bits=8, sym=True),
|
| 25 |
+
)
|
| 26 |
+
|
| 27 |
+
print(f"Loading FP16 OV pipeline from {fp16_dir} ...")
|
| 28 |
+
pipe = OVStableDiffusionPipeline.from_pretrained(fp16_dir)
|
| 29 |
+
print(f"Components: {list(pipe.components.keys())}")
|
| 30 |
+
|
| 31 |
+
quantizer = OVQuantizer.from_pretrained(pipe)
|
| 32 |
+
ov_config = OVConfig(quantization_config=pipeline_config)
|
| 33 |
+
print("Quantizing unet+text_encoder+text_encoder_2 to INT4 (NNCF, optimum)...")
|
| 34 |
+
quantizer.quantize(save_directory=int4_dir, ov_config=ov_config)
|
| 35 |
+
print(f"Saved INT4 model to {int4_dir}")
|
scheduler/scheduler_config.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_class_name": "LCMScheduler",
|
| 3 |
+
"_diffusers_version": "0.37.1",
|
| 4 |
+
"beta_end": 0.012,
|
| 5 |
+
"beta_schedule": "scaled_linear",
|
| 6 |
+
"beta_start": 0.00085,
|
| 7 |
+
"clip_sample": false,
|
| 8 |
+
"clip_sample_range": 1.0,
|
| 9 |
+
"dynamic_thresholding_ratio": 0.995,
|
| 10 |
+
"interpolation_type": "linear",
|
| 11 |
+
"num_train_timesteps": 1000,
|
| 12 |
+
"original_inference_steps": 50,
|
| 13 |
+
"prediction_type": "epsilon",
|
| 14 |
+
"rescale_betas_zero_snr": false,
|
| 15 |
+
"sample_max_value": 1.0,
|
| 16 |
+
"set_alpha_to_one": false,
|
| 17 |
+
"skip_prk_steps": true,
|
| 18 |
+
"steps_offset": 1,
|
| 19 |
+
"thresholding": false,
|
| 20 |
+
"timestep_scaling": 10.0,
|
| 21 |
+
"timestep_spacing": "leading",
|
| 22 |
+
"trained_betas": null,
|
| 23 |
+
"use_karras_sigmas": false
|
| 24 |
+
}
|
text_encoder/config.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"CLIPTextModel"
|
| 4 |
+
],
|
| 5 |
+
"attention_dropout": 0.0,
|
| 6 |
+
"bos_token_id": 0,
|
| 7 |
+
"dropout": 0.0,
|
| 8 |
+
"dtype": "float16",
|
| 9 |
+
"eos_token_id": 2,
|
| 10 |
+
"export_model_type": "clip-text",
|
| 11 |
+
"hidden_act": "quick_gelu",
|
| 12 |
+
"hidden_size": 768,
|
| 13 |
+
"initializer_factor": 1.0,
|
| 14 |
+
"initializer_range": 0.02,
|
| 15 |
+
"intermediate_size": 3072,
|
| 16 |
+
"layer_norm_eps": 1e-05,
|
| 17 |
+
"max_position_embeddings": 77,
|
| 18 |
+
"model_type": "clip_text_model",
|
| 19 |
+
"num_attention_heads": 12,
|
| 20 |
+
"num_hidden_layers": 12,
|
| 21 |
+
"output_hidden_states": true,
|
| 22 |
+
"pad_token_id": 1,
|
| 23 |
+
"projection_dim": 768,
|
| 24 |
+
"transformers_version": "4.57.6",
|
| 25 |
+
"vocab_size": 49408
|
| 26 |
+
}
|
text_encoder/openvino_model.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a8ec241cbaf82a6d20c4917ba4861584ab3bf6b6813adcc0cd5df76bcc66fdef
|
| 3 |
+
size 83658537
|
text_encoder/openvino_model.xml
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
text_encoder_2/config.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"CLIPTextModelWithProjection"
|
| 4 |
+
],
|
| 5 |
+
"attention_dropout": 0.0,
|
| 6 |
+
"bos_token_id": 0,
|
| 7 |
+
"dropout": 0.0,
|
| 8 |
+
"dtype": "float16",
|
| 9 |
+
"eos_token_id": 2,
|
| 10 |
+
"export_model_type": "clip-text-with-projection",
|
| 11 |
+
"hidden_act": "gelu",
|
| 12 |
+
"hidden_size": 1280,
|
| 13 |
+
"initializer_factor": 1.0,
|
| 14 |
+
"initializer_range": 0.02,
|
| 15 |
+
"intermediate_size": 5120,
|
| 16 |
+
"layer_norm_eps": 1e-05,
|
| 17 |
+
"max_position_embeddings": 77,
|
| 18 |
+
"model_type": "clip_text_model",
|
| 19 |
+
"num_attention_heads": 20,
|
| 20 |
+
"num_hidden_layers": 32,
|
| 21 |
+
"output_hidden_states": true,
|
| 22 |
+
"pad_token_id": 1,
|
| 23 |
+
"projection_dim": 1280,
|
| 24 |
+
"transformers_version": "4.57.6",
|
| 25 |
+
"vocab_size": 49408
|
| 26 |
+
}
|
text_encoder_2/openvino_model.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b8fba9fc1a9cab644d659e84c1a9253c6d1e202b37f89f027ec3d25ce430bd2d
|
| 3 |
+
size 393063207
|
text_encoder_2/openvino_model.xml
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
tokenizer/merges.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
tokenizer/special_tokens_map.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"bos_token": {
|
| 3 |
+
"content": "<|startoftext|>",
|
| 4 |
+
"lstrip": false,
|
| 5 |
+
"normalized": true,
|
| 6 |
+
"rstrip": false,
|
| 7 |
+
"single_word": false
|
| 8 |
+
},
|
| 9 |
+
"eos_token": {
|
| 10 |
+
"content": "<|endoftext|>",
|
| 11 |
+
"lstrip": false,
|
| 12 |
+
"normalized": true,
|
| 13 |
+
"rstrip": false,
|
| 14 |
+
"single_word": false
|
| 15 |
+
},
|
| 16 |
+
"pad_token": {
|
| 17 |
+
"content": "<|endoftext|>",
|
| 18 |
+
"lstrip": false,
|
| 19 |
+
"normalized": true,
|
| 20 |
+
"rstrip": false,
|
| 21 |
+
"single_word": false
|
| 22 |
+
},
|
| 23 |
+
"unk_token": {
|
| 24 |
+
"content": "<|endoftext|>",
|
| 25 |
+
"lstrip": false,
|
| 26 |
+
"normalized": true,
|
| 27 |
+
"rstrip": false,
|
| 28 |
+
"single_word": false
|
| 29 |
+
}
|
| 30 |
+
}
|
tokenizer/tokenizer_config.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_prefix_space": false,
|
| 3 |
+
"added_tokens_decoder": {
|
| 4 |
+
"49406": {
|
| 5 |
+
"content": "<|startoftext|>",
|
| 6 |
+
"lstrip": false,
|
| 7 |
+
"normalized": true,
|
| 8 |
+
"rstrip": false,
|
| 9 |
+
"single_word": false,
|
| 10 |
+
"special": true
|
| 11 |
+
},
|
| 12 |
+
"49407": {
|
| 13 |
+
"content": "<|endoftext|>",
|
| 14 |
+
"lstrip": false,
|
| 15 |
+
"normalized": true,
|
| 16 |
+
"rstrip": false,
|
| 17 |
+
"single_word": false,
|
| 18 |
+
"special": true
|
| 19 |
+
}
|
| 20 |
+
},
|
| 21 |
+
"bos_token": "<|startoftext|>",
|
| 22 |
+
"clean_up_tokenization_spaces": true,
|
| 23 |
+
"do_lower_case": true,
|
| 24 |
+
"eos_token": "<|endoftext|>",
|
| 25 |
+
"errors": "replace",
|
| 26 |
+
"extra_special_tokens": {},
|
| 27 |
+
"model_max_length": 77,
|
| 28 |
+
"pad_token": "<|endoftext|>",
|
| 29 |
+
"tokenizer_class": "CLIPTokenizer",
|
| 30 |
+
"unk_token": "<|endoftext|>"
|
| 31 |
+
}
|
tokenizer/vocab.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
tokenizer_2/merges.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
tokenizer_2/special_tokens_map.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"bos_token": {
|
| 3 |
+
"content": "<|startoftext|>",
|
| 4 |
+
"lstrip": false,
|
| 5 |
+
"normalized": true,
|
| 6 |
+
"rstrip": false,
|
| 7 |
+
"single_word": false
|
| 8 |
+
},
|
| 9 |
+
"eos_token": {
|
| 10 |
+
"content": "<|endoftext|>",
|
| 11 |
+
"lstrip": false,
|
| 12 |
+
"normalized": true,
|
| 13 |
+
"rstrip": false,
|
| 14 |
+
"single_word": false
|
| 15 |
+
},
|
| 16 |
+
"pad_token": {
|
| 17 |
+
"content": "!",
|
| 18 |
+
"lstrip": false,
|
| 19 |
+
"normalized": false,
|
| 20 |
+
"rstrip": false,
|
| 21 |
+
"single_word": false
|
| 22 |
+
},
|
| 23 |
+
"unk_token": {
|
| 24 |
+
"content": "<|endoftext|>",
|
| 25 |
+
"lstrip": false,
|
| 26 |
+
"normalized": true,
|
| 27 |
+
"rstrip": false,
|
| 28 |
+
"single_word": false
|
| 29 |
+
}
|
| 30 |
+
}
|
tokenizer_2/tokenizer_config.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_prefix_space": false,
|
| 3 |
+
"added_tokens_decoder": {
|
| 4 |
+
"0": {
|
| 5 |
+
"content": "!",
|
| 6 |
+
"lstrip": false,
|
| 7 |
+
"normalized": false,
|
| 8 |
+
"rstrip": false,
|
| 9 |
+
"single_word": false,
|
| 10 |
+
"special": true
|
| 11 |
+
},
|
| 12 |
+
"49406": {
|
| 13 |
+
"content": "<|startoftext|>",
|
| 14 |
+
"lstrip": false,
|
| 15 |
+
"normalized": true,
|
| 16 |
+
"rstrip": false,
|
| 17 |
+
"single_word": false,
|
| 18 |
+
"special": true
|
| 19 |
+
},
|
| 20 |
+
"49407": {
|
| 21 |
+
"content": "<|endoftext|>",
|
| 22 |
+
"lstrip": false,
|
| 23 |
+
"normalized": true,
|
| 24 |
+
"rstrip": false,
|
| 25 |
+
"single_word": false,
|
| 26 |
+
"special": true
|
| 27 |
+
}
|
| 28 |
+
},
|
| 29 |
+
"bos_token": "<|startoftext|>",
|
| 30 |
+
"clean_up_tokenization_spaces": true,
|
| 31 |
+
"do_lower_case": true,
|
| 32 |
+
"eos_token": "<|endoftext|>",
|
| 33 |
+
"errors": "replace",
|
| 34 |
+
"extra_special_tokens": {},
|
| 35 |
+
"model_max_length": 77,
|
| 36 |
+
"pad_token": "!",
|
| 37 |
+
"tokenizer_class": "CLIPTokenizer",
|
| 38 |
+
"unk_token": "<|endoftext|>"
|
| 39 |
+
}
|
tokenizer_2/vocab.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
unet/config.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_class_name": "UNet2DConditionModel",
|
| 3 |
+
"_diffusers_version": "0.37.1",
|
| 4 |
+
"_name_or_path": "/tmp/opencode/nova_xl_lcm_pt_v2/unet",
|
| 5 |
+
"act_fn": "silu",
|
| 6 |
+
"addition_embed_type": "text_time",
|
| 7 |
+
"addition_embed_type_num_heads": 64,
|
| 8 |
+
"addition_time_embed_dim": 256,
|
| 9 |
+
"attention_head_dim": [
|
| 10 |
+
5,
|
| 11 |
+
10,
|
| 12 |
+
20
|
| 13 |
+
],
|
| 14 |
+
"attention_type": "default",
|
| 15 |
+
"block_out_channels": [
|
| 16 |
+
320,
|
| 17 |
+
640,
|
| 18 |
+
1280
|
| 19 |
+
],
|
| 20 |
+
"center_input_sample": false,
|
| 21 |
+
"class_embed_type": null,
|
| 22 |
+
"class_embeddings_concat": false,
|
| 23 |
+
"conv_in_kernel": 3,
|
| 24 |
+
"conv_out_kernel": 3,
|
| 25 |
+
"cross_attention_dim": 2048,
|
| 26 |
+
"cross_attention_norm": null,
|
| 27 |
+
"down_block_types": [
|
| 28 |
+
"DownBlock2D",
|
| 29 |
+
"CrossAttnDownBlock2D",
|
| 30 |
+
"CrossAttnDownBlock2D"
|
| 31 |
+
],
|
| 32 |
+
"downsample_padding": 1,
|
| 33 |
+
"dropout": 0.0,
|
| 34 |
+
"dual_cross_attention": false,
|
| 35 |
+
"encoder_hid_dim": null,
|
| 36 |
+
"encoder_hid_dim_type": null,
|
| 37 |
+
"flip_sin_to_cos": true,
|
| 38 |
+
"freq_shift": 0,
|
| 39 |
+
"in_channels": 4,
|
| 40 |
+
"layers_per_block": 2,
|
| 41 |
+
"mid_block_only_cross_attention": null,
|
| 42 |
+
"mid_block_scale_factor": 1,
|
| 43 |
+
"mid_block_type": "UNetMidBlock2DCrossAttn",
|
| 44 |
+
"norm_eps": 1e-05,
|
| 45 |
+
"norm_num_groups": 32,
|
| 46 |
+
"num_attention_heads": null,
|
| 47 |
+
"num_class_embeds": null,
|
| 48 |
+
"only_cross_attention": false,
|
| 49 |
+
"out_channels": 4,
|
| 50 |
+
"projection_class_embeddings_input_dim": 2816,
|
| 51 |
+
"resnet_out_scale_factor": 1.0,
|
| 52 |
+
"resnet_skip_time_act": false,
|
| 53 |
+
"resnet_time_scale_shift": "default",
|
| 54 |
+
"reverse_transformer_layers_per_block": null,
|
| 55 |
+
"sample_size": 128,
|
| 56 |
+
"time_cond_proj_dim": null,
|
| 57 |
+
"time_embedding_act_fn": null,
|
| 58 |
+
"time_embedding_dim": null,
|
| 59 |
+
"time_embedding_type": "positional",
|
| 60 |
+
"timestep_post_act": null,
|
| 61 |
+
"transformer_layers_per_block": [
|
| 62 |
+
1,
|
| 63 |
+
2,
|
| 64 |
+
10
|
| 65 |
+
],
|
| 66 |
+
"up_block_types": [
|
| 67 |
+
"CrossAttnUpBlock2D",
|
| 68 |
+
"CrossAttnUpBlock2D",
|
| 69 |
+
"UpBlock2D"
|
| 70 |
+
],
|
| 71 |
+
"upcast_attention": null,
|
| 72 |
+
"use_linear_projection": true
|
| 73 |
+
}
|
unet/openvino_model.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2d07de1da677a4170b71d0151e541127b759557c34a8bbe3ef297be90615b593
|
| 3 |
+
size 1496655568
|
unet/openvino_model.xml
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
vae_decoder/config.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_class_name": "AutoencoderKL",
|
| 3 |
+
"_diffusers_version": "0.37.1",
|
| 4 |
+
"_name_or_path": "/tmp/opencode/nova_xl_lcm_pt_v2/vae",
|
| 5 |
+
"act_fn": "silu",
|
| 6 |
+
"block_out_channels": [
|
| 7 |
+
128,
|
| 8 |
+
256,
|
| 9 |
+
512,
|
| 10 |
+
512
|
| 11 |
+
],
|
| 12 |
+
"down_block_types": [
|
| 13 |
+
"DownEncoderBlock2D",
|
| 14 |
+
"DownEncoderBlock2D",
|
| 15 |
+
"DownEncoderBlock2D",
|
| 16 |
+
"DownEncoderBlock2D"
|
| 17 |
+
],
|
| 18 |
+
"force_upcast": true,
|
| 19 |
+
"in_channels": 3,
|
| 20 |
+
"latent_channels": 4,
|
| 21 |
+
"latents_mean": null,
|
| 22 |
+
"latents_std": null,
|
| 23 |
+
"layers_per_block": 2,
|
| 24 |
+
"mid_block_add_attention": true,
|
| 25 |
+
"norm_num_groups": 32,
|
| 26 |
+
"out_channels": 3,
|
| 27 |
+
"sample_size": 1024,
|
| 28 |
+
"scaling_factor": 0.13025,
|
| 29 |
+
"shift_factor": null,
|
| 30 |
+
"up_block_types": [
|
| 31 |
+
"UpDecoderBlock2D",
|
| 32 |
+
"UpDecoderBlock2D",
|
| 33 |
+
"UpDecoderBlock2D",
|
| 34 |
+
"UpDecoderBlock2D"
|
| 35 |
+
],
|
| 36 |
+
"use_post_quant_conv": true,
|
| 37 |
+
"use_quant_conv": true
|
| 38 |
+
}
|
vae_decoder/openvino_model.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c6f4aba6e05627958aaa16f584953395d3fd3c327abc7ce4fca4c62e1b12e7cb
|
| 3 |
+
size 49557592
|