Limbicnation/dual-stream-image-prompts
Dual-Stream Image Prompts Multi-dialect image-prompt SFT dataset for training an LLM to route prompts to the right diffusion model at inference time. Given a concept and a target_model, the model learns to emit the correct prompt dialect (FLUX T5-XXL prose, SDXL dual-clip tokens, a compact caption, or steering modifiers). Routing lives in the instruction prefix, not in a nested output object — keeping the LoRA's task simple and maximizing structural diversity for generalization.… See the full description on the dataset page: https://huggingface.co/datasets/Limbicnation/dual-stream-image-prompts.
Dual-Stream Image Prompts
Multi-dialect image-prompt SFT dataset for training an LLM to route prompts to the right diffusion model at inference time. Given a concept and a target_model, the model learns to emit the correct prompt dialect (FLUX T5-XXL prose, SDXL dual-clip tokens, a compact caption, or steering modifiers).
Routing lives in the instruction prefix, not in a nested output object — keeping the LoRA's task simple and maximizing structural diversity for generalization.
Dataset at a glance
- 22,878 rows (20,590 train / 2,288 validation, 90/10 split, seed 42)
- 4 prompt dialects (
target_model) - Derived from `Limbicnation/images-diffusion-prompt-style-v2` (6,722 human-judge-validated prompts, mean judge score 4.875/5)
- Generated with
gemini-2.5-flash-lite, rule-gated per dialect
Schema
Dialects
How it was built
A transform-assisted pipeline (scripts/generate_dual_stream_dataset.py in prompt-lora-trainer):
- Each vetted v2
responseis reused directly as theflux_t5dialect (already FLUX-T5-shaped: median 81w, 90.6% within 40–120w). - One LLM call per concept derives the other three dialects (compress → SDXL, synthesize → caption, expand axis → modifiers).
- Each dialect is gated independently (partial salvage — a failed dialect does not discard the others). ~15% per-row attrition; 22,878 of 26,816 candidates passed.
Quality gates (calibrated against the v2 source)
The camera-term check is intentionally soft: only 53.5% of the source's 4.8★ prompts contain one, so a hard gate would have discarded ~47% of high-quality content.
Usage
from datasets import load_dataset
ds = load_dataset("Limbicnation/dual-stream-image-prompts")
# Train on the chat-rendered `text` field directly (Qwen2.5 template)
print(ds["train"][0]["text"])
# Or filter to a single dialect
flux = ds["train"].filter(lambda r: r["target_model"] == "flux_t5")At inference, prompt the fine-tuned model with the dialect prefix, e.g. "Generate an SDXL image prompt for: <your concept>".
Limitations
- Synthetic (Gemini-generated); dialect splits are uneven (
steering_modifiersis the smallest at 4,751 rows due to stricter tag-count gating). flux_t5rows are lightly-processed copies of the source dataset's prompts.- English only. Concepts inherit the source dataset's style/subject distribution.
Source & license
Derived from Limbicnation/images-diffusion-prompt-style-v2. Released under Apache-2.0.
