CoolFace
Modelpublic

Michael-Kozu/Deimos-A4

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
3likes38downloads
Model Card

<!-- Kozu AI · Deimos A4 · Hugging Face-safe inline icons --> <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-main { width: 100%; min-width: 0; } .kz-thesis { margin: 0 40px; padding: 30px 0 28px; border-bottom: 1px solid var(--border-strong); display: flex; align-items: baseline; justify-content: space-between; gap: 24px; } .kz-thesis strong { max-width: 32ch; font-family: var(--font-display); font-size: clamp(20px, 3vw, 28px); font-weight: 500; line-height: 1.2; color: var(--fg); } .kz-thesis span { flex-shrink: 0; font-family: var(--font-mono); font-size: 10px; color: var(--muted); letter-spacing: .1em; text-transform: uppercase; } / 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-thesis { margin: 0 20px; padding: 24px 0 22px; flex-direction: column; gap: 8px; } .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-main"><h1 class="kz-name">Deimos <span class="dim">A4</span></h1><span class="kz-base"><span class="dot"></span><span class="kz-class">Satellite Class</span> · 4.66B · 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>Concise reasoning</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-2zm-9 8h2v6h-2zm-4 2h2v4H7zm8-8h2v12h-2z"/></svg>Hard math</span><span class="kz-chip live">Public release</span></div></div></div></div>

<div class="kz-thesis"><strong>~60% fewer tokens. ~36% faster.</strong></div>

<!-- 01 OVERVIEW --> <!-- ═══════════════════════════════════════════════════════════════ --> <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"> A 4B reasoning specialist with internal <span class="o">terse, concise</span> chain-of-thought. <strong>~60% fewer tokens · ~36% faster · +40 pt avg accuracy on hard math</strong> vs the Qwen3.5-4B base model — at recommended-config head-to-head. </p> <p> Built on <strong>Qwen/Qwen3.5-4B</strong>. Internally the model emits compact, fragment-style reasoning inside <code>&lt;think&gt;...&lt;/think&gt;</code> blocks, then expands to a clean, professional response. The user-facing output never contains the compact internal style — compression lives entirely inside the <code>&lt;think&gt;</code> trace. </p> <p> Trained via length-biased rejection sampling: 4,338 verified <em>shortest-correct</em> traces curated from a self-distill of the native concise-reasoning predecessor (Deimos-A1). The "shortest correct" filter teaches the model to drop fillers while preserving logical structure. </p> <p> <strong>Where this model is for you:</strong> hard math (AIME, MATH-hard, MATH-500), multi-step proofs, long algebraic chains — anywhere base hits its 4096-token reasoning ceiling. <br> <strong>Skip and use base when:</strong> general knowledge recall (MMLU), strict instruction-following format rules, casual chat. </p> </div> </div>

<!-- ═══════════════════════════════════════════════════════════════ --> <!-- 02 SPECIFICATIONS --> <!-- ═══════════════════════════════════════════════════════════════ --> <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">Architecture</div> <div class="kz-row"><span class="kz-key">Type</span><span class="kz-val">Causal LM</span></div> <div class="kz-row"><span class="kz-key">Params</span><span class="kz-val">4.66B</span></div> <div class="kz-row"><span class="kz-key">Base</span><span class="kz-val">Qwen3.5-4B</span></div> <div class="kz-row"><span class="kz-key">Context</span><span class="kz-val">32,768</span></div> <div class="kz-row"><span class="kz-key">Format</span><span class="kz-val">Safetensors BF16</span></div> </div> <div class="kz-card"> <div class="kz-card-head">Training</div> <div class="kz-row"><span class="kz-key">Method</span><span class="kz-val">LoRA SFT + Merge</span></div> <div class="kz-row"><span class="kz-key">Examples</span><span class="kz-val">4,338 <span class="o">shortest-correct</span></span></div> <div class="kz-row"><span class="kz-key">Framework</span><span class="kz-val">Unsloth + TRL</span></div> <div class="kz-row"><span class="kz-key">Final loss</span><span class="kz-val">0.392 / <span class="b">eval 0.418</span></span></div> </div> </div> </div> </div>

<!-- ═══════════════════════════════════════════════════════════════ --> <!-- 03 USAGE --> <!-- ═══════════════════════════════════════════════════════════════ --> <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>For best results, use the locked config below — derived via coordinate-descent sweep on minervamath500 (mathverify metric). The chat template auto-prepends <code>&lt;think&gt;</code>; the model emits compact reasoning then <code>&lt;/think&gt;</code> followed by the formal answer.</p> <div class="kz-stack kz-stack--asym" style="grid-template-columns: 1fr;"> <div class="kz-card"> <div class="kz-card-head">Recommended Samplers (locked)</div> <div class="kz-row"><span class="kz-key">Temperature</span><span class="kz-val">0.0 <span class="o">greedy</span></span></div> <div class="kz-row"><span class="kz-key">Top-P</span><span class="kz-val">0.95</span></div> <div class="kz-row"><span class="kz-key">Top-K</span><span class="kz-val">20</span></div> <div class="kz-row"><span class="kz-key">Min-P</span><span class="kz-val">0.0</span></div> <div class="kz-row"><span class="kz-key">Repetition penalty</span><span class="kz-val">1.10</span></div> <div class="kz-row"><span class="kz-key">Presence penalty</span><span class="kz-val">1.5</span></div> <div class="kz-row"><span class="kz-key">Max tokens</span><span class="kz-val">8192</span></div> </div> </div> <h3 style="margin-top: 32px;">Thinking Mode — Per-Task Routing</h3> <p>The chat template supports a runtime toggle <code>enablethinking</code> that controls whether the model emits a <code>&lt;think&gt;</code> reasoning trace before its formal answer. Sweep results at the locked config (limit=50 each):</p> <table> <thead><tr><th>Task</th><th>Thinking ON</th><th>Thinking OFF</th><th>Recommended</th></tr></thead> <tbody> <tr><td>Hard math (mathhard, math500, AIME)</td><td class="num">+0.40 avg vs base</td><td class="num">—</td><td><strong>ON</strong> (default)</td></tr> <tr><td>gsm8k flex (elementary math)</td><td class="num">0.86</td><td class="num">0.80</td><td><strong>ON</strong> (+6pt)</td></tr> <tr><td>gsm8k strict</td><td class="num">0.30</td><td class="num">0.30</td><td>either</td></tr> <tr><td>IFEval promptstrict</td><td class="num">0.40</td><td class="num">0.44</td><td><strong>OFF</strong> (+4pt)</td></tr> <tr><td>IFEval promptloose</td><td class="num">0.52</td><td class="num">0.56</td><td><strong>OFF</strong> (+4pt)</td></tr> <tr><td>IFEval inststrict</td><td class="num">0.54</td><td class="num">0.58</td><td><strong>OFF</strong> (+4pt)</td></tr> <tr><td>IFEval instloose</td><td class="num">0.63</td><td class="num">0.67</td><td><strong>OFF</strong> (+4pt)</td></tr> <tr><td>MMLU-Pro (knowledge MCQ)</td><td class="num">0.54</td><td class="num">0.54</td><td>either</td></tr> </tbody> </table> <p><strong>Routing rule:</strong> default to thinking <strong>ON</strong> for math, code, and open-ended reasoning. Switch to thinking <strong>OFF</strong> for strict-format instruction-following (length constraints, no-comma rules, exact-letter casing, etc.) — the model's compact reasoning style fights those rules when the trace counts toward output formatting.</p>

<p style="margin-top: 24px;">Quick start with <code>transformers</code> — math/reasoning (thinking ON, default):</p> <pre><code>from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.frompretrained( "Michael-Kozu/Deimos-A4", torchdtype="auto", devicemap="auto" ) tok = AutoTokenizer.frompretrained("Michael-Kozu/Deimos-A4")

msgs = [{"role": "user", "content": "A train leaves at 3pm at 60mph. Another leaves at 4pm at 80mph. When does the second catch the first?" }] inputs = tok.applychattemplate( msgs, tokenize=True, returntensors="pt", addgeneration_prompt=True ).to(model.device)

Locked recommended config (math/reasoning):

out = model.generate(inputs, maxnewtokens=8192, dosample=False, # greedy (temperature=0) repetitionpenalty=1.10) print(tok.decode(out[0][inputs.shape[-1]:], skipspecialtokens=True))</code></pre>

<p style="margin-top: 24px;">For strict instruction-following (thinking OFF):</p> <pre><code>inputs = tok.applychattemplate( msgs, tokenize=True, returntensors="pt", addgenerationprompt=True, chattemplatekwargs={"enablethinking": False} # routes around the &lt;think&gt; trace ).to(model.device)</code></pre>

<p style="margin-top: 24px;">vLLM serving — pass <code>chattemplatekwargs</code> per request via <code>extrabody</code>:</p> <pre><code>from openai import OpenAI client = OpenAI(baseurl="http://localhost:8000/v1", apikey="x") resp = client.chat.completions.create( model="a4", messages=[{"role":"user","content":"Answer in exactly 3 sentences..."}], temperature=0.0, maxtokens=8192, extrabody={"chattemplatekwargs": {"enablethinking": False}, "repetitionpenalty": 1.10, "presencepenalty": 1.5} )</code></pre> <p style="margin-top: 24px;"><strong>Example output</strong> — the model reasons in compact fragments, replies in full prose:</p> <pre><code>&lt;think&gt; Train1 departs 3pm, 60mph. Train2 departs 4pm, 80mph. Speed diff: 80 - 60 = 20mph. Head start: 1 hour * 60mph = 60 miles. Catch time: 60 miles / 20mph = 3 hours. 3pm + 3 hours = 6pm. &lt;/think&gt;

The second train catches the first at 6pm.

Step 1: Set up the scenario

  • —Train 1 departs at 3:00 PM at 60 mph
  • —Train 2 departs at 4:00 PM at 80 mph (1 hour later)

Step 2: Calculate the head start distance ...</code></pre> </div> </div>

<!-- ═══════════════════════════════════════════════════════════════ --> <!-- 04 QUANTIZATIONS --> <!-- ═══════════════════════════════════════════════════════════════ --> <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">Quantizations</h2> </div> <span class="kz-snum">04</span> </div> <div class="kz-sbody"> <p>BF16 weights ship in this repo (<strong>9.3 GB</strong>). GGUF and quantized formats are forthcoming.</p> <div class="kz-qgrid"> <div class="kz-qcell"> <div class="kz-qhead"><span class="kz-qtype">Safetensors</span><span class="kz-qsize">9.3 GB</span></div> <span>BF16 (this repo)</span> </div> <div class="kz-qcell"> <div class="kz-qhead"><span class="kz-qtype">GGUF</span><span class="kz-qsize">~ TBD</span></div> <span style="color: var(--muted)">Coming soon</span> </div> </div> </div> </div>

<!-- ═══════════════════════════════════════════════════════════════ --> <!-- 05 TRAINING DETAILS --> <!-- ═══════════════════════════════════════════════════════════════ --> <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">Training Details</h2> </div> <span class="kz-snum">05</span> </div> <div class="kz-sbody"> <p>A4 is built on the predecessor <strong>Deimos-A1</strong> — a 4B model that already produces native concise <code>&lt;think&gt;</code> traces (Quark v1 SFT of Qwen3.5-4B). A4 takes A1's compression style and tightens it via a length-biased rejection sampling pass.</p> <p><strong>Pipeline</strong></p> <ul> <li><strong>Prompts:</strong> 5,202 across math (gsm8k-style), MCQ (ARC-style science), IFEval-style instructions, code (humanevalplus + mbppplus)</li> <li><strong>Generation:</strong> A1 emits N=8 candidates per prompt via vLLM (temperature=1.0, top-p=0.95, top-k=20)</li> <li><strong>Filter (4-stage verification filter):</strong> <ol> <li>Structure: exactly one <code>&lt;/think&gt;</code> + non-empty post-think output</li> <li>Correctness: per-task grader (numeric for math, letter for MCQ, IFEval rule grader, subprocess test for code)</li> <li>Length-bias: among correct candidates, keep the <em>shortest think</em></li> <li>Result: <strong>4,338 verified gold examples</strong> (median think 103 chars for math/code)</li> </ol> </li> <li><strong>SFT:</strong> LoRA r=64 alpha=64, LR 3e-5, 1 epoch, batch=2 accum=8 (effective 16), packing=False (preserves <code>&lt;think&gt;</code> boundary)</li> </ul> <div class="kz-chart"><div class="kz-chart-title">Training Loss (1 epoch · 258 steps)</div><svg class="kz-spark" viewBox="0 0 400 72" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="sg" x1="0" x2="0" y1="0" y2="1"><stop offset="0%" stop-color="#FF6B2C" stop-opacity="0.2"/><stop offset="100%" stop-color="#FF6B2C" stop-opacity="0"/></linearGradient></defs><line x1="0" y1="18" x2="400" y2="18" stroke="#1E2229" stroke-width="1"/><line x1="0" y1="36" x2="400" y2="36" stroke="#1E2229" stroke-width="1"/><line x1="0" y1="54" x2="400" y2="54" stroke="#1E2229" stroke-width="1"/><path d="M0,12 L40,28 L80,38 L120,46 L160,50 L200,52 L240,54 L280,55 L320,55 L360,56 L400,56 L400,72 L0,72 Z" fill="url(#sg)"/><polyline points="0,12 40,28 80,38 120,46 160,50 200,52 240,54 280,55 320,55 360,56 400,56" fill="none" stroke="#FF6B2C" stroke-width="1.5"/></svg></div> <details> <summary>Training Config</summary> <div class="kz-detail-body"> <div class="kz-cfg-title">Unsloth + TRL SFTTrainer</div> <pre><code>basemodel: Deimos-A1 merged BF16 (Qwen3.5-4B + Quark v1 SFT) adapter: lora lorar: 64 loraalpha: 64 loradropout: 0.0 targetmodules: [qproj, kproj, vproj, oproj, gateproj, upproj, downproj] sequencelen: 4096 perdevicetrainbatchsize: 2 gradientaccumulationsteps: 8 numtrainepochs: 1 learningrate: 3e-5 lrscheduler: cosine warmupratio: 0.05 optim: adamwtorch weightdecay: 0.01 bf16: true packing: false # preserves &lt;think&gt; boundary in attention gradient_checkpointing: unsloth</code></pre> </div> </details> </div> </div>

<!-- ═══════════════════════════════════════════════════════════════ --> <!-- 06 BENCHMARKS --> <!-- ═══════════════════════════════════════════════════════════════ --> <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">06</span> </div> <div class="kz-sbody"> <p>Both models benched with <code>lm-eval-harness</code> + vLLM serving + limit=50. <strong>A4 uses its locked recommended config</strong> (temp=0.0, reppenalty=1.10, presencepenalty=1.5, maxtokens=8192). <strong>Base uses the standard production budget</strong> (temp=0.6, maxtokens=4096) — both apples-to-apples in real-world deployment terms. Alibaba does not publish AIME / leaderboardmathhard / minervamath500 numbers for Qwen3.5-4B; the base column is our reproduction with identical harness.</p> <p style="font-size: 13px; color: var(--muted);"><strong>Note on Qwen's max-effort settings:</strong> we attempted Qwen's official recommended config (temp=1.0, presence=1.5, maxtokens=32768) on the base model. The bench reached 94% completion in 5 hours before crashing on a server-disconnect timeout; even at the partial halfway point base trended toward similar accuracy at 2.5× wall-clock. We default to the standard 4K-budget comparison here, which is the more honest "ship config vs ship config" measurement for production deployments.</p> <h3>Token Efficiency &amp; Speed</h3> <p>Per-problem efficiency on the hard math suite (median across 50 problems per task):</p> <table> <thead><tr><th>Task</th><th>A4 chars</th><th>Base chars</th><th>Reduction</th></tr></thead> <tbody> <tr><td>aime24</td><td class="num">4,414</td><td class="num">9,366</td><td class="num">−53%</td></tr> <tr><td>aime25</td><td class="num">3,003</td><td class="num">8,928</td><td class="num">−66%</td></tr> <tr><td>algebrahard</td><td class="num">1,648</td><td class="num">3,508</td><td class="num">−53%</td></tr> <tr><td>countingandprobhard</td><td class="num">2,598</td><td class="num">7,984</td><td class="num">−67%</td></tr> <tr><td>geometryhard</td><td class="num">3,164</td><td class="num">9,135</td><td class="num">−65%</td></tr> <tr><td>intermediatealgebrahard</td><td class="num">5,014</td><td class="num">7,884</td><td class="num">−36%</td></tr> <tr><td>numtheoryhard</td><td class="num">1,872</td><td class="num">7,510</td><td class="num">−75%</td></tr> <tr><td>prealgebrahard</td><td class="num">1,668</td><td class="num">7,126</td><td class="num">−77%</td></tr> <tr><td>precalculushard</td><td class="num">4,244</td><td class="num">8,600</td><td class="num">−51%</td></tr> <tr><td>minervamath500</td><td class="num">1,410</td><td class="num">3,792</td><td class="num">−63%</td></tr> </tbody> </table> <p style="margin-top: 16px;">Wall-clock per problem (vLLM, 4 concurrent requests):</p> <table> <thead><tr><th>Batch</th><th>A4 avg time</th><th>Base avg time</th><th>Speedup</th></tr></thead> <tbody> <tr><td>math suite (350 reqs)</td><td class="num">~18 s</td><td class="num">~28 s</td><td class="num">−36%</td></tr> <tr><td>AIME (60 reqs)</td><td class="num">~16 s</td><td class="num">~30 s</td><td class="num">−47%</td></tr> </tbody> </table> <h3>Accuracy</h3> <div class="kz-chart"> <div class="kz-chart-title">Hard Math · Deimos-A4 (orange) vs Qwen3.5-4B base</div> <div class="kz-bar-row"> <span class="kz-bar-label">leaderboardmathhard (avg)</span> <div class="kz-bar-track"><div class="kz-bar-fill" style="--pct:66.0%"></div></div> <span class="kz-bar-val">0.660</span> </div> <div class="kz-bar-row"> <span class="kz-bar-label">↳ Qwen3.5-4B base</span> <div class="kz-bar-track"><div class="kz-bar-fill dim" style="--pct:26.3%"></div></div> <span class="kz-bar-val">0.263</span> </div> <div class="kz-bar-row"> <span class="kz-bar-label">minervamath500 (mathverify)</span> <div class="kz-bar-track"><div class="kz-bar-fill" style="--pct:90.0%"></div></div> <span class="kz-bar-val">0.900</span> </div> <div class="kz-bar-row"> <span class="kz-bar-label">↳ Qwen3.5-4B base</span> <div class="kz-bar-track"><div class="kz-bar-fill dim" style="--pct:38.0%"></div></div> <span class="kz-bar-val">0.380</span> </div> <div class="kz-bar-row"> <span class="kz-bar-label">AIME 2025</span> <div class="kz-bar-track"><div class="kz-bar-fill" style="--pct:6.7%"></div></div> <span class="kz-bar-val">0.067</span> </div> <div class="kz-bar-row"> <span class="kz-bar-label">↳ Qwen3.5-4B base</span> <div class="kz-bar-track"><div class="kz-bar-fill dim" style="--pct:0%"></div></div> <span class="kz-bar-val">0.000</span> </div> <div class="kz-bar-row"> <span class="kz-bar-label">AIME 2024</span> <div class="kz-bar-track"><div class="kz-bar-fill" style="--pct:3.3%"></div></div> <span class="kz-bar-val">0.033</span> </div> <div class="kz-bar-row"> <span class="kz-bar-label">↳ Qwen3.5-4B base</span> <div class="kz-bar-track"><div class="kz-bar-fill dim" style="--pct:0%"></div></div> <span class="kz-bar-val">0.000</span> </div> </div> <table> <thead><tr><th>Hard tier (depth-limited)</th><th>Qwen3.5-4B base</th><th>Deimos-A4 (locked)</th><th>Δ</th></tr></thead> <tbody> <tr><td>leaderboardmathhard avg</td><td class="num">0.263</td><td class="num hi">0.660</td><td class="num">+0.397</td></tr> <tr><td>↳ algebrahard</td><td class="num">0.46</td><td class="num hi">0.84</td><td class="num">+0.38</td></tr> <tr><td>↳ counting/probhard</td><td class="num">0.22</td><td class="num hi">0.68</td><td class="num">+0.46</td></tr> <tr><td>↳ geometryhard</td><td class="num">0.20</td><td class="num hi">0.48</td><td class="num">+0.28</td></tr> <tr><td>↳ intermediatealgebrahard</td><td class="num">0.12</td><td class="num hi">0.54</td><td class="num">+0.42</td></tr> <tr><td>↳ numtheoryhard</td><td class="num">0.40</td><td class="num hi">0.90</td><td class="num">+0.50</td></tr> <tr><td>↳ prealgebrahard</td><td class="num">0.36</td><td class="num hi">0.74</td><td class="num">+0.38</td></tr> <tr><td>↳ precalculushard</td><td class="num">0.08</td><td class="num hi">0.44</td><td class="num">+0.36</td></tr> <tr><td>minervamath500 (mathverify)</td><td class="num">0.380</td><td class="num hi">0.900</td><td class="num">+0.520</td></tr> <tr><td>AIME 2024</td><td class="num">0.000</td><td class="num hi">0.033</td><td class="num">+0.033</td></tr> <tr><td>AIME 2025</td><td class="num">0.000</td><td class="num hi">0.067</td><td class="num">+0.067</td></tr> </tbody> </table> <p style="margin-top: 16px; font-size: 13px; color: var(--muted);"><strong>Note on AIME scores:</strong> the <code>exactmatch</code> grader expects answers in <code>\boxed{}</code>; both A4 and base sometimes write the correct answer in prose without the box, scoring 0 by that metric. Spot-checks confirm base often <em>arrives</em> at the right answer but is graded down. The robust apples-to-apples comparisons here are <code>leaderboardmathhard</code> (uses extraction filter) and <code>minervamath500</code> with <code>mathverify</code> (sympy normalization).</p> <p style="margin-top: 24px;">Easy tier (knowledge-bound — A4 trades depth-compression for general recall):</p> <table> <thead><tr><th>Easy tier</th><th>Deimos-A4</th><th>Notes</th></tr></thead> <tbody> <tr><td>gsm8kcot strict</td><td class="num">0.60</td><td>elementary arithmetic — base &gt; A4 here</td></tr> <tr><td>gsm8kcot flex</td><td class="num">0.82</td><td></td></tr> <tr><td>mmlupro</td><td class="num">0.587</td><td>knowledge-bound — base &gt; A4</td></tr> <tr><td>ifeval promptloose</td><td class="num">0.58</td><td>format rules conflict with concise style</td></tr> <tr><td>ifeval prompt_strict</td><td class="num">0.50</td><td></td></tr> </tbody> </table> </div> </div>

<!-- ═══════════════════════════════════════════════════════════════ --> <!-- 07 LIMITATIONS & LICENSE --> <!-- ═══════════════════════════════════════════════════════════════ --> <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 &amp; License</h2> </div> <span class="kz-snum">07</span> </div> <div class="kz-sbody"> <p><strong>A4 is a specialist, not a base replacement.</strong> Known limitations:</p> <ul> <li><strong>Knowledge regression vs base.</strong> mmlupro and ifeval drop because compression doesn't help where the answer comes from pretraining recall or strict format rules. Use the base model for those.</li> <li><strong>Compact fragments must stay internal.</strong> The model is trained to put concise reasoning inside <code>&lt;think&gt;</code> only — final user-facing prose stays clean. If you strip the chat template or force generation outside the think block, results may regress.</li> <li><strong>Best on hard math.</strong> AIME 2024/25 scores are still low in absolute terms (3-7%), expected for a 4B; the proof here is the <em>relative</em> gain over base, consistent at +30-46pt across mathhard subjects.</li> <li><strong>4B pretraining ceiling.</strong> Cannot exceed Qwen3.5-4B's underlying knowledge — only its reasoning depth budget. For higher capability, see the upcoming <strong>Europa</strong> model line (9B base).</li> </ul> <p>This model is released under the <strong>Apache 2.0 License</strong>, inherited from the Qwen3.5-4B base.</p> </div> </div>

<div class="kz-foot"> <span>Kozu AI</span> <span>Turning the laws of reality into unparalleled creation.</span> </div>

</div>