Instructions to use KBlueLeaf/TIPOv2-1B-A200M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use KBlueLeaf/TIPOv2-1B-A200M with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="KBlueLeaf/TIPOv2-1B-A200M")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("KBlueLeaf/TIPOv2-1B-A200M", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use KBlueLeaf/TIPOv2-1B-A200M with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf KBlueLeaf/TIPOv2-1B-A200M:F16 # Run inference directly in the terminal: llama cli -hf KBlueLeaf/TIPOv2-1B-A200M:F16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf KBlueLeaf/TIPOv2-1B-A200M:F16 # Run inference directly in the terminal: llama cli -hf KBlueLeaf/TIPOv2-1B-A200M:F16
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf KBlueLeaf/TIPOv2-1B-A200M:F16 # Run inference directly in the terminal: ./llama-cli -hf KBlueLeaf/TIPOv2-1B-A200M:F16
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf KBlueLeaf/TIPOv2-1B-A200M:F16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf KBlueLeaf/TIPOv2-1B-A200M:F16
Use Docker
docker model run hf.co/KBlueLeaf/TIPOv2-1B-A200M:F16
- LM Studio
- Jan
- vLLM
How to use KBlueLeaf/TIPOv2-1B-A200M with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "KBlueLeaf/TIPOv2-1B-A200M" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "KBlueLeaf/TIPOv2-1B-A200M", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/KBlueLeaf/TIPOv2-1B-A200M:F16
- SGLang
How to use KBlueLeaf/TIPOv2-1B-A200M with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "KBlueLeaf/TIPOv2-1B-A200M" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "KBlueLeaf/TIPOv2-1B-A200M", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "KBlueLeaf/TIPOv2-1B-A200M" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "KBlueLeaf/TIPOv2-1B-A200M", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Ollama
How to use KBlueLeaf/TIPOv2-1B-A200M with Ollama:
ollama run hf.co/KBlueLeaf/TIPOv2-1B-A200M:F16
- Unsloth Studio
How to use KBlueLeaf/TIPOv2-1B-A200M with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for KBlueLeaf/TIPOv2-1B-A200M to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for KBlueLeaf/TIPOv2-1B-A200M to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for KBlueLeaf/TIPOv2-1B-A200M to start chatting
- Docker Model Runner
How to use KBlueLeaf/TIPOv2-1B-A200M with Docker Model Runner:
docker model run hf.co/KBlueLeaf/TIPOv2-1B-A200M:F16
- Lemonade
How to use KBlueLeaf/TIPOv2-1B-A200M with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull KBlueLeaf/TIPOv2-1B-A200M:F16
Run and chat with the model
lemonade run user.TIPOv2-1B-A200M-F16
List all available models
lemonade list
- Atomic Chat
Install from WinGet (Windows)
winget install llama.cpp
# Start a local OpenAI-compatible server with a web UI:
llama serve -hf KBlueLeaf/TIPOv2-1B-A200M:F16# Run inference directly in the terminal:
llama cli -hf KBlueLeaf/TIPOv2-1B-A200M:F16Use pre-built binary
# Download pre-built binary from:
# https://github.com/ggerganov/llama.cpp/releases# Start a local OpenAI-compatible server with a web UI:
./llama-server -hf KBlueLeaf/TIPOv2-1B-A200M:F16# Run inference directly in the terminal:
./llama-cli -hf KBlueLeaf/TIPOv2-1B-A200M:F16Build from source code
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
cmake -B build
cmake --build build -j --target llama-server llama-cli# Start a local OpenAI-compatible server with a web UI:
./build/bin/llama-server -hf KBlueLeaf/TIPOv2-1B-A200M:F16# Run inference directly in the terminal:
./build/bin/llama-cli -hf KBlueLeaf/TIPOv2-1B-A200M:F16Use Docker
docker model run hf.co/KBlueLeaf/TIPOv2-1B-A200M:F16TIPOv2-1B-A200M: Next generation of T2I prompt optimization model.
TIPOv2-1B-A200M is a 1B-A200M sparse model. 991M total parameters, ~200M active per token, plus a ~50M embedding table. The second generation of TIPO, rebuilt from the dataset up on the KohakUwU MoE architecture.
Introduction
TIPO is a framework for improving Text-to-Image generation by text presampling: a small language model expands a short user prompt into a detailed one before the diffusion model ever sees it. Pre-sampling a smaller distribution by narrow the range indicate by a brief prompt to a more specifici description which match the original prompt, allow diffusion model to have more information to work while persist overall diversity and fidelity. Instead of asking the user to write 200 tokens of booru tags and natural language, TIPO samples that expansion from a distribution learned over real caption data.
This is v2. It is not a fine-tune of TIPO-500M. The dataset, the captioner and the architecture are all different.
What makes it v2
1. Fully upgraded dataset
| v1 (TIPO-500M) | v2 (TIPOv2-1B-A200M) | |
|---|---|---|
| sources | GBC10M, Danbooru, CoyoHD-11M | latest Danbooru, Nozomi, CC12M, CoyoHD-11M, LAION-COCO-13M |
| breadth | 3 sources | 5 sources, both anime-domain and general-photography |
The v1 mix leaned heavily on one general-caption source. v2 adds Nozomi and LAION-COCO-13M alongside a refreshed Danbooru, which broadens both the tag vocabulary and the image domains the model has seen. Danbooru is weighted x3 and the dedicated tagger view x2, so booru-style tag structure stays dominant while the general sources supply natural-language variety.
2. Better natural-language captions
Every natural-language caption in v2 is regenerated with Qwen3.5-2B. In v1 the
caption quality varied by source, because each dataset shipped whatever captions
its authors produced. Regenerating them under a single captioner means caption
style is constant across sources, and the only thing that varies between
coyo11m and laion_coco is the image distribution, not the writing. That
makes the source weighting a choice about visual domain rather than an accidental
choice about prose quality.
3. Fully upgraded architecture: KohakUwU MoE
v1 was a 500M dense LLaMA-like arch. v2 uses the KohakUwU MoE architecture, a DeepSeekMoE-style sparse decoder from KohakUwULLM.
KohakUwU is a series of projects for pretraining infrastructure. KohakUwULLM is the general-purpose LLM training project within that series, and it is where this architecture, the training framework and the kernels described below come from. None of it is part of TIPO, and none of it was built for TIPO. TIPOv2 is one model trained with it.
The configuration used here:
| Configuration | |
|---|---|
| total params | 990.8M |
| active params / token | 193.1M (excludes the embedding lookup) |
| input embedding | 50.3M (a gather, not a matmul, so not counted as active) |
| output head | 50.3M |
| routed experts | 854.1M total, 106.8M active at top-8 |
| attention + shared expert + dense layer + router + norms | 36.1M, all active |
| layers | 16 (layer 0 dense, 15 MoE) |
| hidden size | 768 |
| attention | 12 heads, 2 KV heads (GQA), head dim 64, QK-norm |
| routed experts | 64, top-8 per token |
| shared experts | 1 (always on) |
| expert hidden | 384 |
| dense MLP hidden | 2048 |
| router | sigmoid scoring, aux-loss-free bias balancing |
| position | RoPE, theta 100000, 4096 context |
| norm | RMSNorm, eps 1e-6 |
| vocab | 65536 |
Only 193M of 991M parameters do work on any given token. The 854M of routed experts contribute just 107M at top-8, and the 50M embedding is a lookup rather than a matmul. So v2 carries roughly 2x v1's parameters while activating fewer of them per token than v1's dense 500M. Context is 4096, up from v1's 1024.
Training recipe
Trained on 4x RTX 5090 (32 GB, sm_120) with KohakUwULLM.
| steps | 150,000 |
| tokens per step | 262,144 (16384 x 16 microbatches) |
| context | 2048 packed |
| parallelism | 4-stage pipeline, 1F1B schedule |
| parameter dtype | full fp16 (with dynamic loss scaling) |
| autocast | fp16 |
| MXFP8 | q/k/v/o projections and MLP up/down (w_in/w_out), including the shared expert. 111 modules. |
| routed experts | fused MXFP8 expert path |
| optimizer | Muon on hidden matrices, AdamW on the rest |
| LR | 5e-4 (muon_lr 2e-3, embed_lr 2e-3) |
| schedule | inverse-sqrt power (s0 2500, b -0.5), then cosine to 1% |
| warmup | 2% of run (3000 steps) |
| grad clip | 1.0 |
| aux loss / router z-loss | 0.0 / 0.0, since balancing is aux-loss-free |
Notes on the choices that are not obvious. All of these are KohakUwULLM facilities, not TIPO-specific work:
- Packed varlen, not padded. Every sequence is concatenated onto one flat
token axis with
cu_seqlenscarrying document boundaries. For TIPO-shaped data (50 to 600 tokens against a 2048 context) a padded batch would be ~80% padding. - fp16 parameters, not bf16. fp16 carries 10 mantissa bits against bf16's 7. It needs loss scaling to keep its narrower exponent range in bounds, which the trainer supplies; the run reports zero overflows at scale 65536.
- Aux-loss-free balancing. Expert load is balanced by a selection-only bias updated outside the gradient, not by an auxiliary loss term. A router z-loss was measured at 1.59x end-to-end cost and left off.
- MXFP8 on the dense projections. Block-scaled fp8 (E4M3 with a shared
power-of-two scale per 32 elements) on q/k/v/o and up/down. The routed experts
use a fused MXFP8 path whose epilogues never materialize the
(tokens x top_k, hidden)intermediates.
Tokenizer
The tokenizer is the DeepSeek-V4 tokenizer, pruned to 64000 ordinary BPE tokens, plus a 1536-slot block reserved for special tokens. Total vocabulary is 65536.
| id range | count | contents |
|---|---|---|
| 0 to 63999 | 64000 | ordinary BPE tokens, kept in DeepSeek-V4 merge order |
| 64000 to 64016 | 17 | named specials: <|bos|>, <|eos|>, <|pad|>, <|unk|>, and the 13 TIPO control tokens |
| 64017 to 65535 | 1519 | <|reserved_N|> placeholders |
Two reasons the layout looks like this:
- 65536 is a power of two. The output head is a GEMM whose N dimension is the vocabulary, and a power-of-two N keeps that GEMM tile-aligned. An awkward vocab size costs throughput on every token generated.
- The reserved block is deliberate headroom. Adding a control token later is an id assignment inside the existing embedding table, not a resize and re-embed. 1519 slots are still free in this release.
Prompt format
quality: masterpiece
rating: general
target: <|long|> <|tag_to_long|>
tag: 1girl, cherry blossoms, outdoors
Control tokens
Length targets, which set how long the generated result should be:
<|empty|> <|very_short|> <|short|> <|long|> <|very_long|>
Task selectors, which set what to generate from what:
| token | meaning |
|---|---|
<|tag_to_long|> |
tags to long natural-language caption |
<|long_to_tag|> |
long caption to tags |
<|short_to_tag|> |
short caption to tags |
<|short_to_long|> |
short caption to long caption |
<|tag_to_short_to_long|> |
tags, then short, then long |
<|short_to_tag_to_long|> |
short, then tags, then long |
<|short_to_long_to_tag|> |
short, then long, then tags |
<|gen_meta|> |
also predict the metadata fields |
Metadata lines the model understands, all optional: quality, rating, artist,
characters, copyrights, meta, aspect ratio.
Usage
from transformers import AutoTokenizer, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"KBlueLeaf/TIPOv2-1B-A200M", trust_remote_code=True, dtype="float16"
).cuda().eval()
tokenizer = AutoTokenizer.from_pretrained("KBlueLeaf/TIPOv2-1B-A200M")
prompt = (
"quality: masterpiece\n"
"rating: general\n"
"target: <|long|> <|tag_to_long|>\n"
"tag: 1girl, cherry blossoms, outdoors\n"
)
ids = tokenizer(prompt, return_tensors="pt").input_ids.cuda()
out = model.generate(ids, max_new_tokens=256, temperature=1.0, min_p=0.1, do_sample=True)
print(tokenizer.decode(out[0], skip_special_tokens=False))
trust_remote_code=True is required, because the KohakUwU MoE architecture
ships as modeling_kohaku.py beside the weights.
Files
| file | size | use |
|---|---|---|
hf/model.safetensors |
1.98 GB | transformers, fp16 |
gguf/TIPOv2-1B-A200M-f16.gguf |
2.02 GB | llama.cpp, fp16 |
gguf/TIPOv2-1B-A200M-Q8_0.gguf |
1.07 GB | llama.cpp, 8-bit |
LICENSE
Released under Kohaku License 1.0.
Citation
TIPO:
@misc{yeh2024tipotextimagetext,
title={TIPO: Text to Image with Text Presampling for Prompt Optimization},
author={Yeh, Shih-Ying and Park, Sang-Hyun and Oh, Giyeong and Song, Min and Yu, Youngjae},
year={2024},
eprint={2411.08127},
archivePrefix={arXiv}
}
The architecture, training framework and kernels:
@software{kohakuwullm,
title={KohakUwULLM: an extensible decoder-only LLM training framework},
author={Yeh, Shih-Ying},
url={https://github.com/KohakuBlueleaf/KohakUwULLM},
year={2026}
}
- Downloads last month
- -
8-bit
16-bit

Install (macOS, Linux)
# Start a local OpenAI-compatible server with a web UI: llama serve -hf KBlueLeaf/TIPOv2-1B-A200M:F16# Run inference directly in the terminal: llama cli -hf KBlueLeaf/TIPOv2-1B-A200M:F16