<?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[Keln]]></title><description><![CDATA[Benchmarks of open-source models across inference providers, engineering notes and product updates from Keln.]]></description><link>https://keln.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6aee68cdc19f8ae3aea4d909/348bc910-f6f8-4394-a7bc-bd2bb7f25f4e.png</url><title>Keln</title><link>https://keln.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 12 Nov 2026 07:14:05 GMT</lastBuildDate><atom:link href="https://keln.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[AI Inference Platforms Benchmark 2026: Fireworks, Together, Baseten, Modal, DeepInfra, Z.ai and Keln]]></title><description><![CDATA[We replayed real agent sessions on DeepSeek V4.1 Flash and GLM-5.3 Flash and compared speed, reliability, prompt caching and cost.]]></description><link>https://keln.hashnode.dev/ai-inference-platforms-benchmark-2026</link><guid isPermaLink="true">https://keln.hashnode.dev/ai-inference-platforms-benchmark-2026</guid><category><![CDATA[AI]]></category><category><![CDATA[open-weight-models]]></category><category><![CDATA[ai inference]]></category><category><![CDATA[AI inference optimization]]></category><category><![CDATA[Deepseek]]></category><dc:creator><![CDATA[Kris Holy]]></dc:creator><pubDate>Mon, 09 Nov 2026 21:11:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/8cbef9e5-0a14-4659-8c97-5391d414a8bf.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We tested seven platforms across two open models, DeepSeek V4.1 Flash and GLM-5.3 Flash, using real Claude Code agent sessions. We measured decode speed, completed requests, prompt caching, reasoning output, and cost.</p>
<p>The differences were interesting. One provider rejected nearly half the requests on DeepSeek. Another had to process previously cached prompts again 165 times. And the fastest option wasn’t always the cheapest.</p>
<p>Here’s what we found.</p>
<h2>How we tested providers</h2>
<p>Instead of sending short, isolated prompts, we replayed real agent conversations from the public armand0e Claude Code dataset on Hugging Face.</p>
<p>These were long conversations with tool calls, tool results, and growing context windows. The median request contained approximately 40,000 tokens, making the workload more representative of agents working through complex tasks than a typical single-prompt benchmark.</p>
<p>We used eight recorded sessions, replaying assistant turns with their original tool results. Each provider received the same conversations and pauses.</p>
<p>We tested two models:</p>
<ul>
<li><strong>DeepSeek V4.1 Flash:</strong> November 3, 2026, with 8,640 turns across six inference setups.</li>
<li><strong>GLM-5.3 Flash:</strong> November 4, 2026. We replayed the 8 sessions 3 times over 14 hours and report the third run, 1,440 turns in total.</li>
</ul>
<p>The goal wasn’t to find the highest possible speed under ideal conditions. We wanted to see how providers behaved over extended agent workloads.</p>
<h2>1. Reliability: most providers completed the workload, but not all</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/bb89f9a7-5f0f-4eeb-967b-93f506158ebb.png" alt="Bar charts of turns answered by inference provider on DeepSeek V4.1 Flash and GLM-5.3 Flash, comparing Baseten, DeepInfra, Fireworks, Keln, Modal, Together AI and Z.ai in an AI inference benchmark" style="display:block;margin:0 auto" />

<p>The first thing we measured was straightforward: how many turns received a complete response?</p>
<p>Most providers answered everything we sent on both models.</p>
<p>Baseten was the notable exception. On DeepSeek, it rejected approximately half the turns with rate-limit errors.</p>
<p>The requests were large, often containing tens of thousands of input tokens. Even with only two concurrent sessions, we exceeded the limits available to our account.</p>
<p>This doesn’t necessarily mean Baseten’s infrastructure couldn’t handle the workload. It means our account couldn’t run it at the tested rate without additional capacity or different limits.</p>
<p>On GLM-5.3 Flash, Baseten rejected fewer requests because the longer pauses reduced the load.</p>
<p>Modal had a different issue. One DeepSeek response ended before the stream completed. An application using that endpoint directly would need to detect the interruption and retry the request.</p>
<p>A single interrupted stream isn’t enough to establish a general reliability pattern, but it illustrates something worth testing: how applications recover when inference doesn’t complete normally.</p>
<p><strong>Why it matters:</strong> For an agent, a failed request can interrupt a workflow involving many previous tool calls and accumulated context. Recovery behavior matters alongside the speed of successful responses.</p>
<h2>2. Prompt caching: the differences were larger than expected</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/a1cde94f-02d1-4386-8f44-9eeb76100649.png" alt="Bar charts of prompt cache hit rate by inference provider. DeepSeek V4.1 Flash: Baseten 89.9%, DeepInfra 95.0%, Fireworks 85.6%, Keln 94.3%, Modal 93.2%, Together AI 94.7%. GLM-5.3 Flash: Baseten 80.4%, DeepInfra 88.7%, Fireworks 87.1%, Keln 90.5%, Modal 78.8%, Z.ai 85.9%" style="display:block;margin:0 auto" />

<p>Prompt caching can make a significant difference to the cost and latency of long conversations.</p>
<p>When an agent sends its next request, much of the prompt may be identical to the previous one. If the provider retains those tokens in its cache, it doesn’t need to process them from scratch.</p>
<p>But caching becomes more complicated when inference runs across multiple providers or when a conversation sits idle.</p>
<p>On DeepSeek, the best direct provider reached a 95% cache hit rate.</p>
<p>Keln reached 94.3%, switching providers on just one of 1,440 turns. That’s notable because moving a conversation between providers can cause previously cached context to be lost.</p>
<p>Fireworks showed a different pattern. It had 165 cold turns, the most in the DeepSeek run.</p>
<p>A cold turn meant that much of the prompt had to be processed again rather than read from cache.</p>
<p>That affects cost even if the underlying model’s published input price looks competitive.</p>
<p>On GLM-5.3 Flash, Keln reached a 90.5% cache hit rate, the highest among the six tested setups.</p>
<p>These results show why comparing inference providers solely by published token prices can be misleading. The proportion of tokens actually served from cache changes what you pay.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/1cbc62f1-971e-4721-b144-07af0ebcf17b.png" alt="Table of prompt cache hit rate and cold turns by inference provider for DeepSeek V4.1 Flash and GLM-5.3 Flash; Fireworks had 165 cold turns on DeepSeek, Keln 11" style="display:block;margin:0 auto" />

<h2>3. What happens to caching when an agent goes idle?</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/4aeacac3-dff7-40eb-b42a-7bf0263cd84a.png" alt="Bar chart of prompt still in cache after a 15 to 20 minute break on GLM-5.3 Flash: Keln 63.0%, DeepInfra 38.4%, Z.ai 16.5%, Baseten, Fireworks and Modal 0%" style="display:block;margin:0 auto" />

<p>Most benchmarks send requests continuously. Real agents don’t always work that way.</p>
<p>An agent might wait for a tool to finish, pause for user input, or sit idle before continuing the same conversation.</p>
<p>We wanted to understand how much cached context survives those breaks.</p>
<p>For GLM-5.3 Flash, we added pauses of 1–20 minutes to 15% of turns. Every provider received the same pauses at the same points in the conversations.</p>
<p>After a 15–20 minute break, the results differed considerably:</p>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/eaca14f6-2d4b-4c88-a031-c6ca1aee3d2c.png" alt="Table of prompt tokens still cached after a 15 to 20 minute break by inference platform: Baseten 0%, DeepInfra 38.4%, Fireworks 0%, Keln 63.0%, Modal 0%, Z.ai 16.5%" style="display:block;margin:0 auto" />

<p>For agents with long context windows, this can become expensive.</p>
<p>Imagine an agent that spends several minutes running a tool and then returns to a conversation containing tens of thousands of tokens. If its cache has expired, those tokens may need to be processed again.</p>
<p>The impact depends on the model, pricing, and frequency of pauses. But cache retention is worth measuring if your workload involves long-running conversations.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/200ffcb7-2418-4a9c-9d15-fbedf21ba77a.png" alt="Table of GLM-5.3 Flash prompt cache hit rate after breaks of 1 to 5, 5 to 10, 10 to 15 and 15 to 20 minutes, by inference provider" style="display:block;margin:0 auto" />

<h2>4. Decode speed: two providers stood out</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/c92c72f8-6eaf-40b3-b7c2-b1e4626192cf.png" alt="Bar charts of median decode speed in tokens per second by inference provider on DeepSeek V4.1 Flash and GLM-5.3 Flash; Keln 432 tokens per second on GLM-5.3 Flash, Together AI 437 and Keln 432 on DeepSeek" style="display:block;margin:0 auto" />

<p>Decode speed measures how quickly a model generates output tokens once generation begins.</p>
<p>For GLM-5.3 Flash, Keln had the highest median decode speed at 432 tokens per second.</p>
<p>The next fastest was Baseten at 247 tokens per second.</p>
<p>On DeepSeek V4.1 Flash, Together AI and Keln were nearly tied at 437 and 432 tokens per second, both well ahead of the other tested providers.</p>
<p>These results are useful, but decode speed isn’t the same as total request latency.</p>
<p>For example, an agent sending a very large prompt may spend considerable time waiting before the first token arrives. Network overhead, queueing, and prompt processing also contribute to the total time.</p>
<p>And speed alone doesn’t tell you whether a provider can sustain the same performance as traffic increases.</p>
<p>For production systems, it’s worth measuring time to first token, decode speed, error rates, and performance under your expected concurrency.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/1d1d84fc-f581-4253-bded-fbb6543ade6a.png" alt="Table of median decode speed in tokens per second by inference provider for DeepSeek V4.1 Flash and GLM-5.3 Flash" style="display:block;margin:0 auto" />

<h2>5. Reasoning output was more consistent this time</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/3fd73dd0-bd3b-4f5a-b74f-31fe81b49059.png" alt="Table of mean reasoning tokens per turn at maximum reasoning effort by inference provider for DeepSeek V4.1 Flash and GLM-5.3 Flash" style="display:block;margin:0 auto" />

<p>Inference providers don’t always expose model reasoning in the same way.</p>
<p>Some support different reasoning settings, while others report reasoning tokens differently. This can make it difficult to compare outputs across platforms.</p>
<p>For this benchmark, we requested maximum reasoning effort on every turn, using the format supported by each API.</p>
<p>The providers returned broadly similar amounts of reasoning tokens.</p>
<p>That’s different from our previous benchmark, where two gateways returned less than half as many reasoning tokens for the same requests.</p>
<p>We didn’t observe that issue here.</p>
<p>There was one reporting limitation: Modal doesn’t report reasoning token counts for GLM-5.3 Flash, so we excluded it from that comparison.</p>
<p>Reasoning token counts aren’t a direct measure of answer quality, but large differences can be a useful signal when checking whether providers are applying the requested settings consistently.</p>
<h2>6. The cheapest token price didn’t always mean the lowest cost</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6aee68cdc19f8ae3aea4d909/48c38e8d-4fe4-491e-97fd-181550046f06.png" alt="Bar charts of cost per 1,000 agent turns by inference provider on DeepSeek V4.1 Flash and GLM-5.3 Flash" style="display:block;margin:0 auto" />

<p>Cost is where the results become especially interesting.</p>
<p>Inference providers typically publish prices per million input and output tokens, sometimes with separate rates for cached input.</p>
<p>But the actual cost of a conversation depends on how many tokens are cached, how many need to be processed again, and how the provider bills for them.</p>
<p>On DeepSeek, Fireworks was the most expensive option in our benchmark.</p>
<p>The main reason wasn’t simply its published price. Its 165 cold turns meant it processed substantially more uncached input tokens.</p>
<p>On GLM-5.3 Flash, Keln was among the more expensive options.</p>
<p>Its per-token price includes managing capacity, failover, and retries across multiple providers, while direct providers sell access to their own infrastructure.</p>
<p>Neither approach is automatically better.</p>
<p>If you have predictable traffic, can manage provider limits, and don’t need infrastructure redundancy, going directly to a provider may be more economical.</p>
<p>If you’re running agents that need consistent performance across varying workloads, the operational overhead of managing failures, capacity, and caching becomes part of the cost calculation.</p>
<p>The useful metric isn’t always the price per million tokens. Sometimes it’s the cost of completing the entire task.</p>
<h2>What we learned</h2>
<p>The most interesting finding wasn’t which provider generated tokens fastest.</p>
<p>It was how differently platforms behaved when we ran the same long conversations through them.</p>
<p>Some delivered excellent throughput but encountered rate limits. Others completed requests reliably but retained less cached context. And differences in caching had a measurable effect on total cost.</p>
<p>Three things stood out.</p>
<p><strong>First, test with your actual workload.</strong> A provider that performs well on short prompts may behave differently when requests contain 40,000 tokens and conversations continue for hours.</p>
<p><strong>Second, measure caching over time.</strong> Cache hit rates during continuous requests don’t tell the whole story. For agents that pause between steps, cache retention can matter just as much.</p>
<p><strong>Third, look beyond raw speed and token prices.</strong> Completed tasks, retries, rate limits, and cache misses all affect the experience and the final bill.</p>
<p>Direct inference providers can be an excellent choice, especially when you have the engineering resources to manage capacity and recovery yourself.</p>
<p>Managed inference platforms offer another approach by handling some of that complexity behind an API, usually with a different cost structure.</p>
<p>The right choice depends on your workload, concurrency requirements, and how much infrastructure you want to manage.</p>
<p>Hey 👋I’m Kris Holysheva, co-founder of Keln. We are publishing benchmarks on AI inference and open models. Follow me here to catch the next one, or read the full method in <a href="https://keln.ai/blog/ai-inference-provider-benchmark-2026">original post on keln.ai</a>.</p>
]]></content:encoded></item></channel></rss>