Spaces:
Running on Zero
Running on Zero
Experiment with Huihui Qwen3-VL text encoder
Browse files
app.py
CHANGED
|
@@ -13,6 +13,7 @@ import gradio as gr
|
|
| 13 |
import spaces
|
| 14 |
import torch
|
| 15 |
from huggingface_hub import hf_hub_download
|
|
|
|
| 16 |
|
| 17 |
from diffusers import Ideogram4Pipeline
|
| 18 |
from diffusers.quantizers.bitsandbytes.bnb_quantizer import BnB4BitDiffusersQuantizer
|
|
@@ -30,6 +31,7 @@ BnB4BitDiffusersQuantizer.check_quantized_param_shape = _check_quantized_param_s
|
|
| 30 |
|
| 31 |
MODEL_ID = "ideogram-ai/ideogram-4-nf4"
|
| 32 |
AOTI_REPO = "multimodalart/i4-block-aoti"
|
|
|
|
| 33 |
MAX_SEED = 2**31 - 1
|
| 34 |
HF_TOKEN = os.environ.get("HF_TOKEN")
|
| 35 |
|
|
@@ -96,7 +98,23 @@ def normalize_caption(raw_caption):
|
|
| 96 |
|
| 97 |
|
| 98 |
t = time.perf_counter()
|
| 99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
pipe.transformer.dequantize()
|
| 101 |
pipe.unconditional_transformer.dequantize()
|
| 102 |
pipe.to("cuda")
|
|
@@ -180,7 +198,8 @@ textarea { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace
|
|
| 180 |
with gr.Blocks(theme=gr.themes.Citrus(), title="Ideogram 4 JSON Lab", css=CSS) as demo:
|
| 181 |
gr.Markdown(
|
| 182 |
"# Ideogram 4 JSON Lab\n"
|
| 183 |
-
"Direct structured JSON caption input for Ideogram 4. No remote magic prompt, no local Qwen prompt upsampling."
|
|
|
|
| 184 |
)
|
| 185 |
|
| 186 |
with gr.Row():
|
|
|
|
| 13 |
import spaces
|
| 14 |
import torch
|
| 15 |
from huggingface_hub import hf_hub_download
|
| 16 |
+
from transformers import AutoModel
|
| 17 |
|
| 18 |
from diffusers import Ideogram4Pipeline
|
| 19 |
from diffusers.quantizers.bitsandbytes.bnb_quantizer import BnB4BitDiffusersQuantizer
|
|
|
|
| 31 |
|
| 32 |
MODEL_ID = "ideogram-ai/ideogram-4-nf4"
|
| 33 |
AOTI_REPO = "multimodalart/i4-block-aoti"
|
| 34 |
+
TEXT_ENCODER_ID = os.environ.get("TEXT_ENCODER_ID", "huihui-ai/Huihui-Qwen3-VL-8B-Instruct-abliterated")
|
| 35 |
MAX_SEED = 2**31 - 1
|
| 36 |
HF_TOKEN = os.environ.get("HF_TOKEN")
|
| 37 |
|
|
|
|
| 98 |
|
| 99 |
|
| 100 |
t = time.perf_counter()
|
| 101 |
+
if TEXT_ENCODER_ID:
|
| 102 |
+
text_encoder = AutoModel.from_pretrained(
|
| 103 |
+
TEXT_ENCODER_ID,
|
| 104 |
+
torch_dtype=torch.bfloat16,
|
| 105 |
+
token=HF_TOKEN,
|
| 106 |
+
low_cpu_mem_usage=True,
|
| 107 |
+
)
|
| 108 |
+
print(f"[model] using alternate text encoder: {TEXT_ENCODER_ID}", flush=True)
|
| 109 |
+
else:
|
| 110 |
+
text_encoder = None
|
| 111 |
+
|
| 112 |
+
pipe = Ideogram4Pipeline.from_pretrained(
|
| 113 |
+
MODEL_ID,
|
| 114 |
+
text_encoder=text_encoder,
|
| 115 |
+
torch_dtype=torch.bfloat16,
|
| 116 |
+
token=HF_TOKEN,
|
| 117 |
+
)
|
| 118 |
pipe.transformer.dequantize()
|
| 119 |
pipe.unconditional_transformer.dequantize()
|
| 120 |
pipe.to("cuda")
|
|
|
|
| 198 |
with gr.Blocks(theme=gr.themes.Citrus(), title="Ideogram 4 JSON Lab", css=CSS) as demo:
|
| 199 |
gr.Markdown(
|
| 200 |
"# Ideogram 4 JSON Lab\n"
|
| 201 |
+
"Direct structured JSON caption input for Ideogram 4. No remote magic prompt, no local Qwen prompt upsampling.\n\n"
|
| 202 |
+
f"Text encoder: `{TEXT_ENCODER_ID or 'ideogram-ai/ideogram-4-nf4 bundled Qwen3-VL'}`"
|
| 203 |
)
|
| 204 |
|
| 205 |
with gr.Row():
|