Text Generation
Transformers
Safetensors
English
qwen3_5
image-text-to-text
kozu
reasoning
trace-inversion
synthetic-reasoning
chain-of-thought
conversational
Instructions to use Michael-Kozu/Kuiper-R1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Michael-Kozu/Kuiper-R1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Michael-Kozu/Kuiper-R1") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("Michael-Kozu/Kuiper-R1") model = AutoModelForMultimodalLM.from_pretrained("Michael-Kozu/Kuiper-R1") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Michael-Kozu/Kuiper-R1 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Michael-Kozu/Kuiper-R1" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Michael-Kozu/Kuiper-R1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Michael-Kozu/Kuiper-R1
- SGLang
How to use Michael-Kozu/Kuiper-R1 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 "Michael-Kozu/Kuiper-R1" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Michael-Kozu/Kuiper-R1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "Michael-Kozu/Kuiper-R1" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Michael-Kozu/Kuiper-R1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Michael-Kozu/Kuiper-R1 with Docker Model Runner:
docker model run hf.co/Michael-Kozu/Kuiper-R1
| license: apache-2.0 | |
| library_name: transformers | |
| pipeline_tag: text-generation | |
| language: | |
| - en | |
| tags: | |
| - kozu | |
| - reasoning | |
| - trace-inversion | |
| - synthetic-reasoning | |
| - chain-of-thought | |
| datasets: | |
| - open-thoughts/OpenThoughts3-1.2M | |
| <!-- ═══════════════════════════════════════════════════════════════ --> | |
| <!-- Kozu AI · Kuiper-R1 Model Card --> | |
| <!-- Visual direction: useghost.sh-inspired editorial minimalism --> | |
| <!-- Type: Geist Pixel Square (display) + Geist Sans/Mono --> | |
| <!-- --> | |
| <!-- Model Classes (set in .kz-base eyebrow via <span class="o">): --> | |
| <!-- · Satellite Class — smallest / distilled --> | |
| <!-- · Planetary Class — mid-tier --> | |
| <!-- · Stellar Class — frontier / large --> | |
| <!-- --> | |
| <!-- The class name and model name remain neutral and high-contrast. --> | |
| <!-- ═══════════════════════════════════════════════════════════════ --> | |
| <style> | |
| /* Geist is licensed under the SIL Open Font License 1.1. */ | |
| @font-face { font-family: 'Geist Sans'; src: url('https://raw.githubusercontent.com/vercel/geist-font/v1.7.2/fonts/Geist/webfonts/Geist%5Bwght%5D.woff2') format('woff2'); font-weight: 100 900; font-display: swap; } | |
| @font-face { font-family: 'Geist Mono'; src: url('https://raw.githubusercontent.com/vercel/geist-font/v1.7.2/fonts/GeistMono/webfonts/GeistMono%5Bwght%5D.woff2') format('woff2'); font-weight: 100 900; font-display: swap; } | |
| @font-face { font-family: 'Geist Pixel Square'; src: url('https://raw.githubusercontent.com/vercel/geist-font/v1.7.2/fonts/GeistPixel/webfonts/GeistPixel-Square.woff2') format('woff2'); font-weight: 500; font-display: swap; } | |
| .kz { | |
| --bg: #FFFFFF; | |
| --bg-2: #FAFAFA; | |
| --surface: #FFFFFF; | |
| --surface-2: #F5F5F5; | |
| --surface-3: #EBEBEB; | |
| --border: #E5E5E5; | |
| --border-strong:#D4D4D4; | |
| --border-accent:#A3A3A3; | |
| --fg: #0A0A0A; | |
| --fg-dim: #404040; | |
| --muted: #737373; | |
| --muted-2: #A3A3A3; | |
| --orange: #171717; | |
| --orange-dim: #525252; | |
| --blue: #2563EB; | |
| --green: #009767; | |
| --grid: rgba(10,10,10,0.035); | |
| --font-display: 'Geist Pixel Square', 'Geist Mono', ui-monospace, monospace; | |
| --font-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, monospace; | |
| --font-sans: 'Geist Sans', ui-sans-serif, system-ui, sans-serif; | |
| font-family: var(--font-sans); | |
| color: var(--fg); | |
| background: var(--bg); | |
| max-width: 960px; | |
| margin: 0 auto; | |
| padding: 0 0 72px; | |
| line-height: 1.6; | |
| font-size: 15px; | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| @media (prefers-color-scheme: dark) { | |
| .kz { | |
| --bg: #0A0A0A; | |
| --bg-2: #111111; | |
| --surface: #171717; | |
| --surface-2: #262626; | |
| --surface-3: #303030; | |
| --border: rgba(255,255,255,0.10); | |
| --border-strong:#404040; | |
| --border-accent:#737373; | |
| --fg: #FAFAFA; | |
| --fg-dim: #D4D4D4; | |
| --muted: #A3A3A3; | |
| --muted-2: #737373; | |
| --orange: #E5E5E5; | |
| --orange-dim: #A3A3A3; | |
| --blue: #60A5FA; | |
| --green: #00D294; | |
| --grid: rgba(255,255,255,0.03); | |
| } | |
| } | |
| /* ── Hero ── */ | |
| .kz-hero { | |
| position: relative; | |
| overflow: hidden; | |
| min-height: 280px; | |
| margin-bottom: 0; | |
| background: var(--bg); | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .kz-hero img { | |
| display: block; width: 100%; height: auto; | |
| } | |
| .kz-hero--plain { | |
| min-height: 240px; | |
| display: flex; | |
| align-items: flex-end; | |
| } | |
| .kz-ident { | |
| position: absolute; bottom: 0; left: 0; right: 0; | |
| padding: 120px 40px 36px; | |
| background: linear-gradient( | |
| to top, | |
| var(--bg) 0%, | |
| color-mix(in oklab, var(--bg) 92%, transparent) 35%, | |
| color-mix(in oklab, var(--bg) 55%, transparent) 65%, | |
| transparent 100% | |
| ); | |
| } | |
| .kz-hero--plain .kz-ident { | |
| position: relative; | |
| width: 100%; | |
| padding: 64px 40px 40px; | |
| background: none; | |
| } | |
| .kz-hero-grid { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1.65fr) minmax(190px, .65fr); | |
| gap: clamp(32px, 7vw, 72px); | |
| align-items: end; | |
| } | |
| .kz-hero-main { min-width: 0; } | |
| .kz-hero-side { | |
| min-height: 136px; | |
| padding-left: 24px; | |
| border-left: 1px solid var(--border); | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: space-between; | |
| gap: 18px; | |
| } | |
| .kz-signal-label { | |
| font-family: var(--font-mono); | |
| font-size: 9px; | |
| letter-spacing: .16em; | |
| text-transform: uppercase; | |
| color: var(--muted); | |
| } | |
| .kz-signal-value { | |
| font-family: var(--font-display); | |
| font-size: 20px; | |
| line-height: 1.2; | |
| color: var(--fg); | |
| } | |
| .kz-signal-line { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-family: var(--font-mono); | |
| font-size: 10px; | |
| color: var(--muted); | |
| } | |
| .kz-signal-line .dot { width: 6px; height: 6px; background: var(--green); } | |
| /* Model name: may use .o for last-word / key-word emphasis */ | |
| .kz-name { | |
| font-family: var(--font-display); | |
| font-size: clamp(42px, 6vw, 64px); | |
| font-weight: 500; | |
| color: var(--fg); | |
| letter-spacing: -0.025em; | |
| line-height: 1.0; | |
| margin: 0 0 12px; | |
| } | |
| .kz-name .o { color: var(--fg); } | |
| .kz-name .dim { color: var(--muted); } | |
| /* Class label in eyebrow: wrap class name in <span class="kz-class"> */ | |
| /* Satellite Class / Planetary Class / Stellar Class */ | |
| .kz-base { | |
| font-family: var(--font-mono); | |
| font-size: 11px; | |
| font-weight: 500; | |
| color: var(--fg-dim); | |
| letter-spacing: 0.14em; | |
| text-transform: uppercase; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .kz-base .dot { | |
| display: inline-block; | |
| width: 6px; height: 6px; border-radius: 50%; | |
| background: var(--orange); | |
| } | |
| /* Model class uses the same restrained monochrome emphasis. */ | |
| .kz-base .kz-class { color: var(--orange); } | |
| .kz-icon { width: 16px; height: 16px; flex: 0 0 16px; color: currentColor; } | |
| .kz-chip-cloud { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; } | |
| /* ── Sections ── */ | |
| .kz-section { padding: 64px 40px 0; } | |
| .kz-shead { | |
| display: flex; align-items: center; justify-content: space-between; | |
| gap: 24px; padding-bottom: 16px; margin-bottom: 28px; | |
| border-bottom: 1px solid var(--border-strong); | |
| } | |
| .kz-shead-left { display: flex; align-items: center; gap: 12px; } | |
| .kz-sglyph { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; color: var(--fg); flex-shrink: 0; } | |
| .kz-sglyph .kz-icon { width: 18px; height: 18px; flex-basis: 18px; } | |
| .kz-stitle { | |
| font-family: var(--font-display); font-size: 14px; font-weight: 500; | |
| letter-spacing: 0.14em; text-transform: uppercase; color: var(--fg); margin: 0; | |
| } | |
| /* Bumped from --muted-2 for legibility in dark mode */ | |
| .kz-snum { | |
| font-family: var(--font-mono); font-size: 11px; font-weight: 400; | |
| color: var(--muted); letter-spacing: 0.12em; | |
| } | |
| .kz-sbody { color: var(--fg-dim); font-family: var(--font-sans); } | |
| .kz-sbody p { margin: 0 0 14px; font-size: 15px; line-height: 1.65; max-width: 64ch; } | |
| .kz-sbody p:last-child { margin-bottom: 0; } | |
| .kz-sbody p strong { color: var(--fg); font-weight: 600; } | |
| .kz-sbody p .o { color: var(--orange); font-weight: 500; } | |
| .kz-lead { font-size: 18px !important; line-height: 1.6 !important; color: var(--fg-dim); max-width: 60ch; } | |
| /* ── Cards / Facts ── */ | |
| .kz-stack { | |
| display: grid; grid-template-columns: 1fr 1fr; gap: 16px; | |
| border: 0; background: transparent; align-items: stretch; | |
| } | |
| .kz-stack > .kz-card { border: 1px solid var(--border); } | |
| .kz-stack > .kz-card:last-child { border-right: 1px solid var(--border); } | |
| .kz-stack--asym { grid-template-columns: minmax(0, 1.3fr) minmax(240px, .7fr); align-items: stretch; } | |
| .kz-stack--asym > .kz-card:last-child { margin-top: 0; } | |
| @media (max-width: 720px) { | |
| .kz-stack { grid-template-columns: 1fr; } | |
| .kz-stack > .kz-card { border: 1px solid var(--border); } | |
| .kz-stack > .kz-card:last-child { border: 1px solid var(--border); } | |
| .kz-stack--asym > .kz-card:last-child { margin-top: 0; } | |
| } | |
| .kz-card { min-width: 0; background: var(--surface); padding: 24px 28px; border-radius: 8px; transition: background 0.15s ease, border-color 0.15s ease; } | |
| .kz-card:hover { background: var(--surface-2); border-color: var(--border-strong); } | |
| .kz-card-head { | |
| font-family: var(--font-display); font-size: 13px; font-weight: 500; | |
| letter-spacing: 0.14em; text-transform: uppercase; | |
| color: var(--fg); | |
| padding-bottom: 14px; margin-bottom: 14px; | |
| border-bottom: 1px solid var(--border-strong); | |
| min-height: 34px; display: flex; align-items: center; gap: 10px; | |
| } | |
| .kz-row { | |
| display: grid; grid-template-columns: minmax(96px, 12ch) minmax(0, 1fr); | |
| align-items: baseline; column-gap: 12px; padding: 8px 0; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .kz-row:last-child { border-bottom: none; } | |
| .kz-key { | |
| font-family: var(--font-mono); font-size: 10.5px; font-weight: 400; | |
| color: var(--muted); letter-spacing: 0.08em; text-transform: uppercase; | |
| } | |
| .kz-val { font-family: var(--font-mono); font-size: 13px; font-weight: 500; color: var(--fg); } | |
| .kz-val .o { color: var(--orange); } | |
| .kz-val .b { color: var(--blue); } | |
| .kz-val .g { color: var(--green); } | |
| /* ── Quantization grid ── */ | |
| .kz-qgrid { | |
| display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); | |
| gap: 12px; border: 0; | |
| } | |
| .kz-qcell { | |
| background: var(--surface-2); border: 1px solid var(--border); | |
| border-radius: 8px; padding: 18px 20px; | |
| display: flex; flex-direction: column; gap: 8px; transition: background 0.15s ease; | |
| } | |
| .kz-qcell:hover { background: var(--surface-3); border-color: var(--border-strong); } | |
| .kz-qhead { display: flex; align-items: center; justify-content: space-between; } | |
| .kz-qtype { | |
| font-family: var(--font-mono); font-size: 10.5px; font-weight: 500; | |
| letter-spacing: 0.12em; text-transform: uppercase; color: var(--fg); | |
| } | |
| .kz-qsize { | |
| font-family: var(--font-mono); font-size: 10px; | |
| letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); | |
| } | |
| .kz-qcell a { | |
| font-family: var(--font-mono); font-size: 14px; font-weight: 500; | |
| color: var(--fg); text-decoration: none; border-bottom: none; | |
| } | |
| .kz-qcell a:hover { color: var(--orange); } | |
| /* ── Status / Chips ── */ | |
| .kz-status { | |
| display: inline-flex; align-items: center; gap: 8px; | |
| font-family: var(--font-mono); font-size: 10.5px; font-weight: 400; | |
| letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); | |
| } | |
| .kz-status .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--muted); } | |
| .kz-status.live { color: var(--green); } | |
| .kz-status.live .dot { background: var(--green); } | |
| .kz-status.soon { color: var(--orange); } | |
| .kz-status.soon .dot { background: var(--orange); } | |
| .kz-status.planned { color: var(--blue); } | |
| .kz-status.planned .dot { background: var(--blue); } | |
| .kz-chip { | |
| min-height: 32px; display: inline-flex; align-items: center; padding: 6px 10px; border-radius: 999px; | |
| background: var(--surface-2); border: 1px solid var(--border); | |
| font-family: var(--font-mono); font-size: 9.5px; font-weight: 400; | |
| letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); | |
| line-height: 1; white-space: nowrap; gap: 6px; transition: transform .18s cubic-bezier(.16,1,.3,1), background .18s, color .18s; | |
| } | |
| .kz-chip:hover { transform: translateY(-2px); background: var(--fg); color: var(--bg); } | |
| .kz-chip.soon { color: var(--orange); border-color: color-mix(in oklab, var(--orange) 50%, var(--border-strong)); } | |
| .kz-chip.planned { color: var(--blue); border-color: color-mix(in oklab, var(--blue) 50%, var(--border-strong)); } | |
| .kz-chip.live { color: var(--green); border-color: color-mix(in oklab, var(--green) 50%, var(--border-strong)); } | |
| /* ── Links ── */ | |
| .kz a { | |
| color: var(--fg-dim); text-decoration: none; | |
| border-bottom: 1px solid var(--border-strong); font-weight: 500; | |
| transition: color 0.15s, border-color 0.15s; | |
| } | |
| .kz a:hover { color: var(--orange); border-bottom-color: var(--orange); } | |
| /* ── Details ── */ | |
| .kz details { | |
| background: var(--surface); border: 1px solid var(--border-strong); | |
| margin-top: 24px; overflow: hidden; | |
| } | |
| .kz summary { | |
| list-style: none; padding: 14px 20px; cursor: pointer; | |
| font-family: var(--font-mono); font-size: 10.5px; font-weight: 500; | |
| letter-spacing: 0.14em; text-transform: uppercase; | |
| color: var(--fg-dim); /* bumped from --muted */ | |
| user-select: none; display: flex; align-items: center; gap: 10px; | |
| } | |
| .kz summary::-webkit-details-marker { display: none; } | |
| .kz summary::before { content: '+'; color: var(--orange); font-family: var(--font-mono); font-size: 14px; line-height: 1; } | |
| .kz details[open] summary::before { content: '−'; } | |
| .kz summary:hover { color: var(--fg); } | |
| .kz-detail-body { padding: 20px 24px; border-top: 1px solid var(--border); background: var(--bg-2); } | |
| .kz-cfg-title { | |
| font-family: var(--font-mono); font-size: 10.5px; font-weight: 400; | |
| letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); margin: 0 0 12px; | |
| } | |
| /* ── Code ── */ | |
| .kz pre { | |
| background: var(--bg-2); border: 1px solid var(--border-strong); | |
| border-left: 2px solid var(--orange); padding: 16px 18px; overflow-x: auto; | |
| font-family: var(--font-mono); font-size: 13px; line-height: 1.6; | |
| color: var(--fg-dim); margin: 0 0 20px; border-radius: 0; | |
| } | |
| .kz pre:last-child { margin-bottom: 0; } | |
| .kz pre code { background: none; color: inherit; padding: 0; font-size: inherit; } | |
| .kz code { | |
| font-family: var(--font-mono); font-size: 0.88em; color: var(--orange); | |
| background: color-mix(in oklab, var(--orange) 12%, transparent); padding: 1px 5px; border-radius: 2px; | |
| } | |
| .kz-img { display: block; width: 100%; height: auto; border: 1px solid var(--border-strong); margin: 16px auto 20px; } | |
| /* ── Lists ── */ | |
| .kz ul { list-style: none; padding: 0; margin: 0 0 16px; } | |
| .kz ul li { | |
| position: relative; padding-left: 24px; margin-bottom: 8px; | |
| font-size: 15px; line-height: 1.6; color: var(--fg-dim); max-width: 64ch; | |
| } | |
| .kz ul li::before { | |
| content: '▸'; position: absolute; left: 4px; top: 0; | |
| color: var(--orange); font-family: var(--font-mono); font-size: 11px; line-height: 1.6; | |
| } | |
| .kz ul li strong { color: var(--fg); font-weight: 600; } | |
| /* ── Table ── */ | |
| .kz table { width: 100%; border-collapse: collapse; background: var(--surface); border: 1px solid var(--border-strong); margin-bottom: 20px; } | |
| .kz thead { background: var(--bg-2); } | |
| .kz th { font-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; color: var(--fg-dim); text-align: left; padding: 10px 16px; border-bottom: 2px solid var(--orange); } | |
| .kz td { padding: 10px 16px; border-bottom: 1px solid var(--border); font-size: 14px; color: var(--fg-dim); } | |
| .kz td:first-child { color: var(--fg); font-family: var(--font-mono); font-size: 13px; font-weight: 500; } | |
| .kz tbody tr:last-child td { border-bottom: none; } | |
| .kz tbody tr:hover { background: color-mix(in oklab, var(--orange) 5%, transparent); } | |
| .kz td.num { font-family: var(--font-mono); font-size: 13px; text-align: right; color: var(--fg); } | |
| .kz td.hi { color: var(--orange); font-family: var(--font-mono); font-weight: 600; } | |
| /* ── Charts ── */ | |
| .kz-metrics { | |
| display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 16px; margin: 24px 0 28px; | |
| } | |
| .kz-metric { min-width: 0; padding: 16px 0 0; border-top: 1px solid var(--border-strong); } | |
| .kz-metric-value { display: block; font-family: var(--font-display); font-size: 26px; line-height: 1.1; color: var(--fg); } | |
| .kz-metric-label { display: block; margin-top: 7px; font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); } | |
| .kz-viz-grid { display: grid; grid-template-columns: minmax(180px, .7fr) minmax(0, 1.3fr); gap: 24px; align-items: center; margin: 24px 0 28px; } | |
| .kz-donut { --value: 72%; width: 128px; aspect-ratio: 1; border-radius: 50%; background: conic-gradient(var(--fg) var(--value), var(--surface-3) 0); display: grid; place-items: center; } | |
| .kz-donut-core { width: 86px; aspect-ratio: 1; border-radius: 50%; background: var(--bg); display: grid; place-items: center; text-align: center; color: var(--fg); } | |
| .kz-donut-core strong { display: block; font-family: var(--font-display); font-size: 23px; line-height: 1; } | |
| .kz-donut-core span { display: block; margin-top: 5px; font-family: var(--font-mono); font-size: 8px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); } | |
| .kz-meter-list { display: grid; gap: 14px; } | |
| .kz-meter-row { display: grid; grid-template-columns: minmax(92px, auto) minmax(80px, 1fr) 48px; gap: 12px; align-items: center; } | |
| .kz-meter-label, .kz-meter-value { font-family: var(--font-mono); font-size: 10px; color: var(--fg-dim); } | |
| .kz-meter-value { text-align: right; color: var(--fg); } | |
| .kz-meter-track { height: 6px; background: var(--surface-3); overflow: hidden; } | |
| .kz-meter-fill { width: var(--value, 0%); height: 100%; background: var(--fg); } | |
| .kz-timeline { display: grid; grid-template-columns: repeat(4, 1fr); margin: 28px 0; border-top: 1px solid var(--border-strong); } | |
| .kz-step { position: relative; min-width: 0; padding: 18px 16px 0 0; } | |
| .kz-step::before { content: ''; position: absolute; width: 7px; height: 7px; top: -4px; left: 0; background: var(--fg); } | |
| .kz-step-num { font-family: var(--font-mono); font-size: 9px; color: var(--muted); } | |
| .kz-step strong { display: block; margin-top: 7px; font-size: 13px; color: var(--fg); } | |
| .kz-step span:last-child { display: block; margin-top: 4px; font-size: 11px; line-height: 1.45; color: var(--muted); } | |
| .kz-chart { margin: 20px 0 28px; } | |
| .kz-chart-title { font-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); margin: 0 0 14px; } | |
| .kz-bar-row { display: grid; grid-template-columns: 110px 1fr 52px; align-items: center; gap: 12px; margin-bottom: 8px; } | |
| .kz-bar-label { font-family: var(--font-mono); font-size: 11px; color: var(--fg-dim); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } | |
| .kz-bar-track { height: 5px; background: var(--border-strong); position: relative; overflow: hidden; } | |
| .kz-bar-fill { position: absolute; left: 0; top: 0; height: 100%; width: var(--pct, 0%); background: var(--orange); } | |
| .kz-bar-fill.dim { background: color-mix(in oklab, var(--orange) 40%, var(--border-strong)); } | |
| .kz-bar-val { font-family: var(--font-mono); font-size: 11px; color: var(--fg); } | |
| .kz-dist { display: flex; height: 24px; overflow: hidden; border: 1px solid var(--border-strong); margin: 14px 0 10px; } | |
| .kz-dist-seg { height: 100%; display: flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-size: 9.5px; color: var(--bg); white-space: nowrap; overflow: hidden; } | |
| .kz-dist-seg.a { background: var(--orange); } | |
| .kz-dist-seg.b { background: color-mix(in oklab, var(--orange) 55%, var(--border-strong)); } | |
| .kz-dist-seg.c { background: color-mix(in oklab, var(--orange) 30%, var(--border-strong)); } | |
| .kz-dist-legend { display: flex; gap: 20px; margin-top: 2px; } | |
| .kz-dist-item { display: flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-size: 10px; color: var(--fg-dim); } | |
| .kz-dist-dot { width: 8px; height: 8px; flex-shrink: 0; } | |
| .kz-dist-dot.a { background: var(--orange); } | |
| .kz-dist-dot.b { background: color-mix(in oklab, var(--orange) 55%, var(--border-strong)); } | |
| .kz-dist-dot.c { background: color-mix(in oklab, var(--orange) 30%, var(--border-strong)); } | |
| .kz-spark { display: block; width: 100%; height: 72px; margin: 16px 0; overflow: visible; } | |
| /* ── Footer ── */ | |
| .kz-foot { | |
| margin-top: 72px; padding: 28px 40px 0; border-top: 1px solid var(--border); | |
| display: flex; justify-content: space-between; align-items: center; | |
| font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.14em; | |
| text-transform: uppercase; | |
| color: var(--muted); /* bumped from --muted-2 */ | |
| } | |
| .kz-foot .o { color: var(--orange); } | |
| @media (max-width: 640px) { | |
| .kz-section { padding: 48px 20px 0; } | |
| .kz-ident { padding: 80px 20px 24px; } | |
| .kz-foot { padding: 24px 20px 0; flex-direction: column; gap: 8px; align-items: flex-start; } | |
| .kz-hero-grid { grid-template-columns: 1fr; gap: 32px; } | |
| .kz-hero-side { min-height: 0; padding: 22px 0 0; border-left: 0; border-top: 1px solid var(--border); } | |
| .kz-metrics { grid-template-columns: 1fr; gap: 12px; } | |
| .kz-viz-grid { grid-template-columns: 1fr; } | |
| .kz-timeline { grid-template-columns: 1fr 1fr; row-gap: 24px; } | |
| .kz-row { grid-template-columns: minmax(82px, 10ch) minmax(0, 1fr); } | |
| } | |
| </style> | |
| <div class="kz"> | |
| <div class="kz-hero kz-hero--plain"> | |
| <div class="kz-ident"> | |
| <div class="kz-hero-grid"> | |
| <div class="kz-hero-main"> | |
| <h1 class="kz-name">Kuiper <span class="dim">R1</span></h1> | |
| <span class="kz-base"><span class="dot"></span><span class="kz-class">Specialist Class</span> · 9.41B · Apache 2.0</span> | |
| <div class="kz-chip-cloud"> | |
| <span class="kz-chip"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M5 3h14v2H5zm0 16h14v2H5zM3 5h2v14H3zm16 0h2v14h-2zM9 7h6v2H9zm0 8h6v2H9zM7 9h2v6H7zm8 0h2v6h-2zm-4-8h2v2h-2zm0 20h2v2h-2zM1 11h2v2H1zm20 0h2v2h-2zm0-4h2v2h-2zm0 8h2v2h-2zM1 15h2v2H1zm0-8h2v2H1zm6-6h2v2H7zm8 0h2v2h-2zm0 20h2v2h-2zm-8 0h2v2H7z"/></svg>Trace inversion</span> | |
| <span class="kz-chip"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 2h16v2H4zm0 18h16v2H4zM2 4h2v16H2zm18 0h2v16h-2zM6 16h2v2H6zm2-2h2v2H8zm-2-2h2v2H6z"/></svg>Synthetic reasoning</span> | |
| <span class="kz-chip"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M10 20h4v2h-4zm0-16h4V2h-4zm0 6h4v2h-4zm4 8h4v2h-4zm0-12h4V4h-4zm0 2h4v2h-4zm4 8h4v2h-4zm0-8h4V6h-4zM6 18h4v2H6zM6 6h4V4H6zm0 2h4v2H6zm-4 8h4v2H2zm0-8h4V6H2zM2 6h2v12H2zm18 0h2v12h-2zm-8 6h2v8h-2zm-2-6h4v2h-4z"/></svg>Safetensors</span> | |
| <span class="kz-chip live">Public release</span> | |
| </div> | |
| </div> | |
| <div class="kz-hero-side"> | |
| <span class="kz-signal-label">Release signal</span> | |
| <strong class="kz-signal-value">Expand the trace.<br>Preserve the answer.</strong> | |
| <span class="kz-signal-line"><span class="dot"></span>Weights available</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="kz-section"> | |
| <div class="kz-shead"> | |
| <div class="kz-shead-left"> | |
| <span class="kz-sglyph"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 2h16v2H4zm0 18h16v2H4zM2 4h2v16H2zm18 0h2v16h-2zm-9 5h2V7h-2zm0 8h2v-6h-2z"/></svg></span> | |
| <h2 class="kz-stitle">Overview</h2> | |
| </div> | |
| <span class="kz-snum">01</span> | |
| </div> | |
| <div class="kz-sbody"> | |
| <p class="kz-lead">Kuiper-R1 reconstructs full, readable reasoning from a problem, its final answer, and compressed reasoning bubbles.</p> | |
| <p>Each result follows a three-tag contract: <code><synthetic_trace></code>, <code><verification_note></code>, and <code><final></code>. The final answer is preserved byte-for-byte, while the reconstructed trace is explicitly labeled synthetic.</p> | |
| <p>Use Kuiper-R1 for reasoning-dataset augmentation, interpretability review, and research into reasoning compression and expansion. Do not present its synthetic traces as another model's hidden chain-of-thought.</p> | |
| </div> | |
| </div> | |
| <div class="kz-section"> | |
| <div class="kz-shead"> | |
| <div class="kz-shead-left"> | |
| <span class="kz-sglyph"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M5 3h14v2H5zm0 16h14v2H5zM3 5h2v14H3zm16 0h2v14h-2zM9 7h6v2H9zm0 8h6v2H9zM7 9h2v6H7zm8 0h2v6h-2zm-4-8h2v2h-2zm0 20h2v2h-2zM1 11h2v2H1zm20 0h2v2h-2zm0-4h2v2h-2zm0 8h2v2h-2zM1 15h2v2H1zm0-8h2v2H1zm6-6h2v2H7zm8 0h2v2h-2zm0 20h2v2h-2zm-8 0h2v2H7z"/></svg></span> | |
| <h2 class="kz-stitle">Specifications</h2> | |
| </div> | |
| <span class="kz-snum">02</span> | |
| </div> | |
| <div class="kz-sbody"> | |
| <div class="kz-stack kz-stack--asym"> | |
| <div class="kz-card"> | |
| <div class="kz-card-head"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M5 3h14v2H5zm0 16h14v2H5zM3 5h2v14H3zm16 0h2v14h-2zM9 7h6v2H9zm0 8h6v2H9zM7 9h2v6H7zm8 0h2v6h-2zm-4-8h2v2h-2zm0 20h2v2h-2zM1 11h2v2H1zm20 0h2v2h-2zm0-4h2v2h-2zm0 8h2v2h-2zM1 15h2v2H1zm0-8h2v2H1zm6-6h2v2H7zm8 0h2v2h-2zm0 20h2v2h-2zm-8 0h2v2H7z"/></svg>Architecture</div> | |
| <div class="kz-row"><span class="kz-key">Type</span><span class="kz-val">Qwen3.5 conditional generation</span></div> | |
| <div class="kz-row"><span class="kz-key">Params</span><span class="kz-val">9.41B</span></div> | |
| <div class="kz-row"><span class="kz-key">Context</span><span class="kz-val">262,144 tokens</span></div> | |
| <div class="kz-row"><span class="kz-key">Artifact</span><span class="kz-val">BF16 safetensors</span></div> | |
| </div> | |
| <div class="kz-card"> | |
| <div class="kz-card-head"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 14h2v6H4zm6 0h2v6h-2zm-4-2h4v2H6zm0 8h4v2H6zm-4-4h2v2H2zm20-8h-4V6h4zM10 16h12v2H10zm4-8H2V6h12zm6-4v2h-2V4zm0 6V8h-2v2zm-6-8h4v2h-4zm0 10h4v-2h-4zm-2-8h2v2h-2zm0 6h2V8h-2z"/></svg>Training</div> | |
| <div class="kz-row"><span class="kz-key">Method</span><span class="kz-val">QLoRA SFT → ORPO → merge</span></div> | |
| <div class="kz-row"><span class="kz-key">SFT rows</span><span class="kz-val">3,000</span></div> | |
| <div class="kz-row"><span class="kz-key">Preference</span><span class="kz-val">87 scored pairs</span></div> | |
| <div class="kz-row"><span class="kz-key">Data</span><span class="kz-val">OpenThoughts3-1.2M</span></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="kz-section"> | |
| <div class="kz-shead"> | |
| <div class="kz-shead-left"> | |
| <span class="kz-sglyph"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 2h16v2H4zm0 18h16v2H4zM2 4h2v16H2zm18 0h2v16h-2zM6 16h2v2H6zm2-2h2v2H8zm-2-2h2v2H6z"/></svg></span> | |
| <h2 class="kz-stitle">Usage</h2> | |
| </div> | |
| <span class="kz-snum">03</span> | |
| </div> | |
| <div class="kz-sbody"> | |
| <p>Serve with <code>vLLM</code>. Disable the default thinking pass so the requested three-tag contract can use the full output budget.</p> | |
| <div class="kz-stack" style="grid-template-columns: 1fr;"> | |
| <div class="kz-card"> | |
| <div class="kz-card-head"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 14h2v6H4zm6 0h2v6h-2zm-4-2h4v2H6zm0 8h4v2H6zm-4-4h2v2H2zm20-8h-4V6h4zM10 16h12v2H10zm4-8H2V6h12zm6-4v2h-2V4zm0 6V8h-2v2zm-6-8h4v2h-4zm0 10h4v-2h-4zm-2-8h2v2h-2zm0 6h2V8h-2z"/></svg>Recommended Samplers</div> | |
| <div class="kz-row"><span class="kz-key">Temperature</span><span class="kz-val">0.4</span></div> | |
| <div class="kz-row"><span class="kz-key">Repetition</span><span class="kz-val">1.1</span></div> | |
| <div class="kz-row"><span class="kz-key">Thinking</span><span class="kz-val">Disabled</span></div> | |
| <div class="kz-row"><span class="kz-key">Model len</span><span class="kz-val">8,192 served</span></div> | |
| </div> | |
| </div> | |
| <p style="margin-top: 24px;">Start the private checkpoint:</p> | |
| <pre><code>vllm serve Michael-Kozu/Kuiper-R1 \ | |
| --served-model-name kuiper-r1 \ | |
| --max-model-len 8192 \ | |
| --gpu-memory-utilization 0.85 \ | |
| --skip-mm-profiling \ | |
| --trust-remote-code</code></pre> | |
| <p>Send an OpenAI-compatible request:</p> | |
| <pre><code>{ | |
| "model": "kuiper-r1", | |
| "messages": [ | |
| { | |
| "role": "system", | |
| "content": "You are Kuiper, a reasoning-trace inversion model." | |
| }, | |
| { | |
| "role": "user", | |
| "content": "Problem:\n[problem text]\n\nAnswer:\n[exact final answer]\n\nReasoning Bubbles:\n- [bubble one]\n- [bubble two]\n\nReconstruct the full reasoning trace." | |
| } | |
| ], | |
| "temperature": 0.4, | |
| "repetition_penalty": 1.1, | |
| "chat_template_kwargs": {"enable_thinking": false} | |
| }</code></pre> | |
| </div> | |
| </div> | |
| <div class="kz-section"> | |
| <div class="kz-shead"> | |
| <div class="kz-shead-left"> | |
| <span class="kz-sglyph"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 14h2v6H4zm6 0h2v6h-2zm-4-2h4v2H6zm0 8h4v2H6zm-4-4h2v2H2zm20-8h-4V6h4zM10 16h12v2H10zm4-8H2V6h12zm6-4v2h-2V4zm0 6V8h-2v2zm-6-8h4v2h-4zm0 10h4v-2h-4zm-2-8h2v2h-2zm0 6h2V8h-2z"/></svg></span> | |
| <h2 class="kz-stitle">Training Details</h2> | |
| </div> | |
| <span class="kz-snum">04</span> | |
| </div> | |
| <div class="kz-sbody"> | |
| <p>Training uses domain-balanced science, math, and code rows from <a href="https://huggingface.co/datasets/open-thoughts/OpenThoughts3-1.2M">OpenThoughts3-1.2M</a>. Reasoning traces are compressed into extractive bubbles deterministically, without an additional model call.</p> | |
| <div class="kz-metrics"> | |
| <div class="kz-metric"><span class="kz-metric-value">3,000</span><span class="kz-metric-label">SFT examples</span></div> | |
| <div class="kz-metric"><span class="kz-metric-value">1</span><span class="kz-metric-label">SFT epoch</span></div> | |
| <div class="kz-metric"><span class="kz-metric-value">87</span><span class="kz-metric-label">ORPO pairs</span></div> | |
| </div> | |
| <ul> | |
| <li>Training split: 1,531 science, 1,001 math, and 468 code examples.</li> | |
| <li>Compression is extractive at a target ratio of 0.28 with 3–24 bubbles.</li> | |
| <li>The held-out DeepSeek-V4 benchmark lineage is disjoint from the QwQ-32B training lineage.</li> | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="kz-section"> | |
| <div class="kz-shead"> | |
| <div class="kz-shead-left"> | |
| <span class="kz-sglyph"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 2h16v2H4zm0 18h16v2H4zM2 4h2v16H2zm18 0h2v16h-2zm-9 8h2v6h-2zm-4 2h2v4H7zm8-8h2v12h-2z"/></svg></span> | |
| <h2 class="kz-stitle">Benchmarks</h2> | |
| </div> | |
| <span class="kz-snum">05</span> | |
| </div> | |
| <div class="kz-sbody"> | |
| <div class="kz-chart"> | |
| <div class="kz-chart-title">Kuiper-R1 release · held-out n=200</div> | |
| <div class="kz-bar-row"> | |
| <span class="kz-bar-label">Answer exact</span> | |
| <div class="kz-bar-track"><div class="kz-bar-fill" style="--pct:82%"></div></div> | |
| <span class="kz-bar-val">0.820</span> | |
| </div> | |
| <div class="kz-bar-row"> | |
| <span class="kz-bar-label">Format valid</span> | |
| <div class="kz-bar-track"><div class="kz-bar-fill" style="--pct:88%"></div></div> | |
| <span class="kz-bar-val">0.880</span> | |
| </div> | |
| <div class="kz-bar-row"> | |
| <span class="kz-bar-label">Expansion</span> | |
| <div class="kz-bar-track"><div class="kz-bar-fill" style="--pct:76.9%"></div></div> | |
| <span class="kz-bar-val">0.769</span> | |
| </div> | |
| <div class="kz-bar-row"> | |
| <span class="kz-bar-label">Overall</span> | |
| <div class="kz-bar-track"><div class="kz-bar-fill" style="--pct:50.4%"></div></div> | |
| <span class="kz-bar-val">0.504</span> | |
| </div> | |
| </div> | |
| <table> | |
| <thead><tr><th>Metric</th><th>Base</th><th>Kuiper-R1</th></tr></thead> | |
| <tbody> | |
| <tr><td>Final answer preserved · exact</td><td class="num">0.155</td><td class="num hi">0.820</td></tr> | |
| <tr><td>Format valid · 3-tag contract</td><td class="num hi">0.980</td><td class="num">0.880</td></tr> | |
| <tr><td>Expansion quality</td><td class="num hi">0.791</td><td class="num">0.769</td></tr> | |
| <tr><td>Semantic consistency</td><td class="num hi">0.708</td><td class="num">0.535</td></tr> | |
| <tr><td>No invented tool outputs</td><td class="num">1.000</td><td class="num">1.000</td></tr> | |
| <tr><td>Overall</td><td class="num">0.329</td><td class="num hi">0.504</td></tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </div> | |
| <div class="kz-section"> | |
| <div class="kz-shead"> | |
| <div class="kz-shead-left"> | |
| <span class="kz-sglyph"><svg class="kz-icon" viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M4 2h16v2H4zM2 4h2v10H2zm18 0h2v10h-2zM4 14h2v2H4zm2 2h2v2H6zm4 4h4v2h-4zm10-6h-2v2h2zm-2 2h-2v2h2zm-2 2h-2v2h2zm-6 0H8v2h2z"/></svg></span> | |
| <h2 class="kz-stitle">Limitations & License</h2> | |
| </div> | |
| <span class="kz-snum">06</span> | |
| </div> | |
| <div class="kz-sbody"> | |
| <ul> | |
| <li>Bubble informativeness bounds trace quality; terse inputs provide little evidence to expand.</li> | |
| <li>The verification note is a construction-time consistency statement, not an external verifier.</li> | |
| <li>The release improves exact answer preservation but trails the untouched base on raw format validity and semantic consistency.</li> | |
| </ul> | |
| <p>The checkpoint is released under the <strong>Apache License 2.0</strong>.</p> | |
| </div> | |
| </div> | |
| <div class="kz-foot"> | |
| <span>Kozu AI</span> | |
| <span>Turning the laws of reality into unparalleled creation.</span> | |
| </div> | |
| </div> | |