<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[lizard-native: the whole inference stack, running locally]]></title><description><![CDATA[<p dir="auto">If Lizard is an inference provider, the fair question is which parts of the stack it actually owns. Here is the answer, top to bottom.</p>
<p dir="auto"><img src="https://lizard-llm.qendryx.com/diagrams/lizard-native-stack.png" alt="lizard-native inference stack" class=" img-fluid img-markdown" /></p>
<p dir="auto"><strong>The API layer</strong> speaks the OpenAI Chat Completions format. This is deliberate: it means the client libraries you already use work by changing a base URL, and it means you are not locked in — anything you build against Lizard runs against a hosted provider too, and vice versa.</p>
<p dir="auto"><strong>Scheduling and batching</strong> is where a lot of local runtimes lose time. The naive approach submits work to the GPU many times per token, and each submission costs you. lizard-native compiles the decoder graph into coalesced spans ahead of time and gets that down to roughly one submission per generated token.</p>
<p dir="auto"><strong>The KV cache</strong> is resident and its precision is yours to pick — <code>f16</code>, <code>q8_0</code>, <code>q4_0</code>. This is the setting nobody exposes and everybody should: it is a direct trade between context length and memory. A hosted provider makes that choice for you and you never see it.</p>
<p dir="auto"><strong>The kernels</strong> are where the model's weights get multiplied. These are quantization-aware — Q4_K, Q5_K, Q6_K — with the elementwise work fused into the matrix multiply so a token costs fewer passes over memory.</p>
<p dir="auto"><strong>The device layer</strong> is Direct3D 12, and the important word is <em>resident</em>: the weights are uploaded once and stay in GPU memory. Loading is the expensive part; after the first time, the shaders are cached on disk too, so a load is seconds rather than a minute.</p>
<p dir="auto">Why this matters for a developer: every one of those layers is a decision that determines your tokens per second, and on a hosted API all of them are made somewhere you cannot see or change. Locally, they are yours — the KV cache precision and the quantization level are literally settings in the app.</p>
<p dir="auto">The practical ceiling is memory bandwidth, not arithmetic. Generating a token means reading the whole model out of memory, so on most machines the model's size divided by your memory bandwidth is the speed limit. That is also why a smaller quantization is often <em>faster</em>, not just smaller.</p>
]]></description><link>https://community.lizard-llm.qendryx.com/topic/24/lizard-native-the-whole-inference-stack-running-locally</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 03:19:08 GMT</lastBuildDate><atom:link href="https://community.lizard-llm.qendryx.com/topic/24.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Jul 2026 11:52:00 GMT</pubDate><ttl>60</ttl></channel></rss>