<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recipes on Modelplane Docs</title><link>/recipes/</link><description>Recent content in Recipes on Modelplane Docs</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="/recipes/index.xml" rel="self" type="application/rss+xml"/><item><title>All recipes</title><link>/recipes/all/</link><pubDate/><guid>/recipes/all/</guid><description>&lt;p&gt;Every validated recipe in one table: model, size, architecture, precision, and
the verified hardware. Select a row for the full recipe.&lt;/p&gt;
&lt;div class="mp-table-wrap"&gt;
&lt;table class="mp-recipe-table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Arch&lt;/th&gt;
&lt;th&gt;Precision&lt;/th&gt;
&lt;th&gt;Verified on&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="mp-t-model"&gt;
&lt;a class="mp-t-model-link" href="/recipes/qwen3-8b/"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--sm"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-qwen"/&gt;&lt;/svg&gt;&lt;/span&gt;
&lt;span class="mp-t-model-text"&gt;
&lt;span class="mp-row-name"&gt;Qwen3-8B&lt;/span&gt;
&lt;span class="mp-row-size"&gt;qwen&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;8B&lt;/td&gt;
&lt;td&gt;Dense&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;BF16&lt;/td&gt;
&lt;td class="mp-t-chips"&gt;
&lt;span class="mp-vchip"&gt;EKS&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;L4&lt;/strong&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;td class="mp-t-notes"&gt;An 8.2B dense chat model on a single NVIDIA L4.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mp-t-model"&gt;
&lt;a class="mp-t-model-link" href="/recipes/qwen2.5-7b/"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--sm"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-qwen"/&gt;&lt;/svg&gt;&lt;/span&gt;
&lt;span class="mp-t-model-text"&gt;
&lt;span class="mp-row-name"&gt;Qwen2.5-7B&lt;/span&gt;
&lt;span class="mp-row-size"&gt;qwen&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;7B&lt;/td&gt;
&lt;td&gt;Dense&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;AWQ INT4&lt;/td&gt;
&lt;td class="mp-t-chips"&gt;
&lt;span class="mp-vchip"&gt;Vultr&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;A16&lt;/strong&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;td class="mp-t-notes"&gt;A 7B dense chat model (AWQ INT4) on a single NVIDIA A16 on Vultr.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mp-t-model"&gt;
&lt;a class="mp-t-model-link" href="/recipes/qwen3-coder/"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--sm"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-qwen"/&gt;&lt;/svg&gt;&lt;/span&gt;
&lt;span class="mp-t-model-text"&gt;
&lt;span class="mp-row-name"&gt;Qwen3-Coder-480B&lt;/span&gt;
&lt;span class="mp-row-size"&gt;qwen&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;480B A35B&lt;/td&gt;
&lt;td&gt;MoE&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;BF16 / FP8&lt;/td&gt;
&lt;td class="mp-t-chips"&gt;
&lt;span class="mp-vchip"&gt;EKS&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;H200&lt;/strong&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;td class="mp-t-notes"&gt;A 480B code MoE, multi-node BF16 over EFA or single-node FP8 on SGLang.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mp-t-model"&gt;
&lt;a class="mp-t-model-link" href="/recipes/qwen2.5-72b/"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--sm"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-qwen"/&gt;&lt;/svg&gt;&lt;/span&gt;
&lt;span class="mp-t-model-text"&gt;
&lt;span class="mp-row-name"&gt;Qwen2.5-72B&lt;/span&gt;
&lt;span class="mp-row-size"&gt;qwen&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;72B&lt;/td&gt;
&lt;td&gt;Dense&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;AWQ INT4&lt;/td&gt;
&lt;td class="mp-t-chips"&gt;
&lt;span class="mp-vchip"&gt;AKS&lt;/span&gt;&lt;span class="mp-vchip"&gt;Nebius&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;A100&lt;/strong&gt;&lt;/span&gt;&lt;span class="mp-vchip"&gt;&lt;strong&gt;H100&lt;/strong&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;td class="mp-t-notes"&gt;A 72B dense chat model (AWQ INT4) on a single 80 GB GPU, on AKS and Nebius.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mp-t-model"&gt;
&lt;a class="mp-t-model-link" href="/recipes/kimi-k2/"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--sm"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-moonshotai"/&gt;&lt;/svg&gt;&lt;/span&gt;
&lt;span class="mp-t-model-text"&gt;
&lt;span class="mp-row-name"&gt;Kimi-K2&lt;/span&gt;
&lt;span class="mp-row-size"&gt;moonshotai&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;1T A32B&lt;/td&gt;
&lt;td&gt;MoE&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;INT4&lt;/td&gt;
&lt;td class="mp-t-chips"&gt;
&lt;span class="mp-vchip"&gt;EKS&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;H200&lt;/strong&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;td class="mp-t-notes"&gt;A 1T MoE served prefill/decode disaggregated across two H200 nodes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mp-t-model"&gt;
&lt;a class="mp-t-model-link" href="/recipes/llama-3.1-8b/"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--sm"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-meta"/&gt;&lt;/svg&gt;&lt;/span&gt;
&lt;span class="mp-t-model-text"&gt;
&lt;span class="mp-row-name"&gt;Llama-3.1-8B&lt;/span&gt;
&lt;span class="mp-row-size"&gt;meta-llama&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;8B&lt;/td&gt;
&lt;td&gt;Dense&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;BF16&lt;/td&gt;
&lt;td class="mp-t-chips"&gt;
&lt;span class="mp-vchip"&gt;EKS&lt;/span&gt;&lt;span class="mp-vchip"&gt;GKE&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;L4&lt;/strong&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;td class="mp-t-notes"&gt;An 8B dense chat model on a single NVIDIA L4.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mp-t-model"&gt;
&lt;a class="mp-t-model-link" href="/recipes/glm-4.5-air/"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--sm"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-zai"/&gt;&lt;/svg&gt;&lt;/span&gt;
&lt;span class="mp-t-model-text"&gt;
&lt;span class="mp-row-name"&gt;GLM-4.5-Air&lt;/span&gt;
&lt;span class="mp-row-size"&gt;zai-org&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;106B A12B&lt;/td&gt;
&lt;td&gt;MoE&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;GGUF IQ4_XS&lt;/td&gt;
&lt;td class="mp-t-chips"&gt;
&lt;span class="mp-vchip"&gt;GKE&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;A100&lt;/strong&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;td class="mp-t-notes"&gt;A 106B MoE served from a GGUF checkpoint via llama.cpp on a single A100.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mp-t-model"&gt;
&lt;a class="mp-t-model-link" href="/recipes/nemotron-3.5-lightning/"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--sm"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-nvidia"/&gt;&lt;/svg&gt;&lt;/span&gt;
&lt;span class="mp-t-model-text"&gt;
&lt;span class="mp-row-name"&gt;Nemotron-3.5-Lightning&lt;/span&gt;
&lt;span class="mp-row-size"&gt;nvidia&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;30B A3B&lt;/td&gt;
&lt;td&gt;MoE&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;NVFP4&lt;/td&gt;
&lt;td class="mp-t-chips"&gt;
&lt;span class="mp-vchip"&gt;Nebius&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;H100&lt;/strong&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;td class="mp-t-notes"&gt;An open 30B MoE with 3B active parameters served NVFP4 on a single H100 on Nebius.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mp-t-model"&gt;
&lt;a class="mp-t-model-link" href="/recipes/laguna/"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--sm"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-poolside"/&gt;&lt;/svg&gt;&lt;/span&gt;
&lt;span class="mp-t-model-text"&gt;
&lt;span class="mp-row-name"&gt;Laguna-S-2.1&lt;/span&gt;
&lt;span class="mp-row-size"&gt;poolside&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;118B A8B&lt;/td&gt;
&lt;td&gt;MoE&lt;/td&gt;
&lt;td class="mp-t-mono"&gt;FP8&lt;/td&gt;
&lt;td class="mp-t-chips"&gt;
&lt;span class="mp-vchip"&gt;Nebius&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;H100&lt;/strong&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;td class="mp-t-notes"&gt;A 118B code MoE served FP8 on a single 8x H100 node on Nebius.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description></item><item><title>Qwen3-8B</title><link>/recipes/qwen3-8b/</link><pubDate/><guid>/recipes/qwen3-8b/</guid><description>&lt;!-- vale write-good.Passive = NO --&gt;
&lt;p&gt;An 8.2B dense chat model on a single NVIDIA L4. The smallest recipe: one
&lt;code&gt;Standalone&lt;/code&gt; engine, no cache, weights pulled straight from Hugging Face.&lt;/p&gt;
&lt;p&gt;This recipe was run end to end; the &lt;code&gt;InferenceClass&lt;/code&gt; and &lt;code&gt;ModelDeployment&lt;/code&gt; are
the exact manifests from that run. Apply the platform side first, then the ML
side.&lt;/p&gt;
&lt;h2 id="validated-deployments"&gt;Validated deployments &lt;a class="anchor-link" id="validated-deployments" href="#validated-deployments" aria-label="Link to this section: Validated deployments"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="mp-recipe-tags"&gt;
&lt;span class="mp-vchip is-on"&gt;Dense&lt;/span&gt;
&lt;span class="mp-vchip is-on"&gt;8B&lt;/span&gt;
&lt;span class="mp-vchip is-on"&gt;16,384 ctx&lt;/span&gt;
&lt;span class="mp-vchip is-on"&gt;vLLM&lt;/span&gt;
&lt;/div&gt;
&lt;div class="mp-spec"&gt;
&lt;div class="mp-spec-row"&gt;
&lt;div class="mp-spec-label"&gt;Cloud&lt;/div&gt;
&lt;div class="mp-spec-val"&gt;
&lt;button type="button" class="mp-vchip mp-vchip--btn is-on" onclick="mpShowTab('EKS')" title="Show the EKS manifests"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--xs"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-aws"/&gt;&lt;/svg&gt;&lt;/span&gt;
AWS&lt;/button&gt;
&lt;span class="mp-vchip"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--xs"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-googlecloud"/&gt;&lt;/svg&gt;&lt;/span&gt;
Google Cloud&lt;/span&gt;
&lt;span class="mp-vchip"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--xs"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-azure"/&gt;&lt;/svg&gt;&lt;/span&gt;
Azure&lt;/span&gt;
&lt;span class="mp-vchip"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--xs"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-nebius"/&gt;&lt;/svg&gt;&lt;/span&gt;
Nebius&lt;/span&gt;
&lt;span class="mp-vchip"&gt;
&lt;span class="mp-brand-tile mp-brand-tile--xs"&gt;&lt;svg class="mp-brand-icon" role="img" aria-hidden="true"&gt;&lt;use xlink:href="#brand-vultr"/&gt;&lt;/svg&gt;&lt;/span&gt;
Vultr&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="mp-spec-row"&gt;
&lt;div class="mp-spec-label"&gt;GPU&lt;/div&gt;
&lt;div class="mp-spec-val"&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;A16&lt;/strong&gt;&amp;nbsp;16G&lt;/span&gt;
&lt;span class="mp-vchip is-on"&gt;&lt;strong&gt;L4&lt;/strong&gt;&amp;nbsp;24G&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;A100&lt;/strong&gt;&amp;nbsp;40/80G&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;H100&lt;/strong&gt;&amp;nbsp;80G&lt;/span&gt;
&lt;span class="mp-vchip"&gt;&lt;strong&gt;H200&lt;/strong&gt;&amp;nbsp;141G&lt;/span&gt;
&lt;span class="mp-spec-note"&gt;1× per node&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="mp-spec-row"&gt;
&lt;div class="mp-spec-label"&gt;Serving mode&lt;/div&gt;
&lt;div class="mp-spec-val"&gt;
&lt;span class="mp-vchip is-on"&gt;Standalone&lt;/span&gt;
&lt;span class="mp-vchip"&gt;LeaderWorker&lt;/span&gt;
&lt;span class="mp-vchip"&gt;PrefillDecode&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="mp-spec-row"&gt;
&lt;div class="mp-spec-label"&gt;Precision&lt;/div&gt;
&lt;div class="mp-spec-val"&gt;
&lt;button type="button" class="mp-vchip mp-vchip--btn is-on" onclick="mpShowTab('BF16')"&gt;BF16&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="mp-spec-row"&gt;
&lt;div class="mp-spec-label"&gt;Engine&lt;/div&gt;
&lt;div class="mp-spec-val"&gt;
&lt;span class="mp-vchip is-on"&gt;vLLM&lt;/span&gt;
&lt;span class="mp-vchip"&gt;SGLang&lt;/span&gt;
&lt;span class="mp-vchip"&gt;llama.cpp&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="mp-spec-row"&gt;
&lt;div class="mp-spec-label"&gt;Image&lt;/div&gt;
&lt;div class="mp-spec-val"&gt;
&lt;span class="mp-vchip mp-vchip--code is-on"&gt;vllm/vllm-openai:v0.23.0&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="mp-spec-row"&gt;
&lt;div class="mp-spec-label"&gt;Features&lt;/div&gt;
&lt;div class="mp-spec-val"&gt;
&lt;a class="mp-vchip is-on" href="#speculative-decoding"&gt;Speculative decoding&lt;/a&gt;
&lt;span class="mp-spec-note"&gt;for low latency and small batch sizes&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="mp-spec-row"&gt;
&lt;div class="mp-spec-label"&gt;Manifests&lt;/div&gt;
&lt;div class="mp-spec-val"&gt;
&lt;a class="mp-vchip mp-vchip--code is-on" href="https://github.com/modelplaneai/modelplane/tree/v0.3/docs/manifests/recipes/qwen3-8b"&gt;docs/manifests/recipes/qwen3-8b&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
function mpShowTab(name) {
var tabs = document.querySelectorAll('.nav-tabs .nav-link');
var match = null;
for (var i = 0; i &lt; tabs.length &amp;&amp; !match; i++) {
if (tabs[i].textContent.trim() === name) match = tabs[i];
}
for (var j = 0; j &lt; tabs.length &amp;&amp; !match; j++) {
if (tabs[j].textContent.indexOf(name) !== -1) match = tabs[j];
}
if (match) {
match.click();
match.scrollIntoView({ behavior: 'smooth', block: 'center' });
return;
}
var platform = document.getElementById('platform');
if (platform) platform.scrollIntoView({ behavior: 'smooth' });
}
&lt;/script&gt;
&lt;h2 id="platform"&gt;Platform &lt;a class="anchor-link" id="platform" href="#platform" aria-label="Link to this section: Platform"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="gdoc-manifest"&gt;
&lt;div class="code-card"&gt;
&lt;div class="code-card__header"&gt;
&lt;span class="code-card__name"&gt;inference-class.yaml&lt;/span&gt;
&lt;div class="code-card__actions"&gt;&lt;button class="code-card__btn code-card__apply" type="button" data-copy="kubectl apply -f /examples/recipes/qwen3-8b/inference-class.yaml" aria-label="Copy kubectl apply command" title="Copy kubectl apply command"&gt;
&lt;svg class="icon-main" width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true" focusable="false"&gt;
&lt;circle cx="12" cy="12" r="7.4"/&gt;
&lt;circle cx="12" cy="12" r="2.4"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(51.43 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(102.86 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(154.29 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(205.71 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(257.14 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(308.57 12 12)"/&gt;
&lt;/svg&gt;
&lt;svg class="icon-check" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M13.485 1.929a.75.75 0 0 1 .086 1.057l-7 8.5a.75.75 0 0 1-1.117.063l-3.5-3.5a.75.75 0 0 1 1.06-1.06l2.92 2.92 6.494-7.894a.75.75 0 0 1 1.057-.086z"/&gt;&lt;/svg&gt;
&lt;/button&gt;&lt;button class="code-card__btn code-card__copy" type="button" aria-label="Copy contents" title="Copy contents"&gt;
&lt;svg class="icon-main" width="15" height="15" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/&gt;&lt;path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/&gt;&lt;/svg&gt;
&lt;svg class="icon-check" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M13.485 1.929a.75.75 0 0 1 .086 1.057l-7 8.5a.75.75 0 0 1-1.117.063l-3.5-3.5a.75.75 0 0 1 1.06-1.06l2.92 2.92 6.494-7.894a.75.75 0 0 1 1.057-.086z"/&gt;&lt;/svg&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="code-card__body"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# InferenceClass for the L4 shape, validated serving Qwen3-8B on EKS.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# One NVIDIA L4 on an EKS g6.xlarge. The single GPU is a claim: DRA device;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# the scheduler matches a ModelDeployment&amp;#39;s nodeSelector against its declared&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# capacity and DRA binds it to the serving pod.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;modelplane.ai/v1alpha1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;InferenceClass&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;eks-l4-1x-g6&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;EKS g6.xlarge, 1x NVIDIA L4&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;provisioning&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;EKS&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;eks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;instanceType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;g6.xlarge&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;diskSizeGb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;accelerator&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nvidia-l4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;devices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;gpu&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;claim&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;DRA&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;gpu.nvidia.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;deviceClassName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;gpu.nvidia.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;attributes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;architecture&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Ada Lovelace }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;capacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# The L4&amp;#39;s real usable VRAM as the NVIDIA DRA driver reports it, not the&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# nominal 24GB.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;23034Mi&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;}&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="gdoc-manifest"&gt;
&lt;div class="code-card"&gt;
&lt;div class="code-card__header"&gt;
&lt;span class="code-card__name"&gt;inference-cluster.yaml&lt;/span&gt;
&lt;div class="code-card__actions"&gt;&lt;button class="code-card__btn code-card__apply" type="button" data-copy="kubectl apply -f /examples/recipes/qwen3-8b/inference-cluster.yaml" aria-label="Copy kubectl apply command" title="Copy kubectl apply command"&gt;
&lt;svg class="icon-main" width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true" focusable="false"&gt;
&lt;circle cx="12" cy="12" r="7.4"/&gt;
&lt;circle cx="12" cy="12" r="2.4"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(51.43 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(102.86 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(154.29 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(205.71 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(257.14 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(308.57 12 12)"/&gt;
&lt;/svg&gt;
&lt;svg class="icon-check" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M13.485 1.929a.75.75 0 0 1 .086 1.057l-7 8.5a.75.75 0 0 1-1.117.063l-3.5-3.5a.75.75 0 0 1 1.06-1.06l2.92 2.92 6.494-7.894a.75.75 0 0 1 1.057-.086z"/&gt;&lt;/svg&gt;
&lt;/button&gt;&lt;button class="code-card__btn code-card__copy" type="button" aria-label="Copy contents" title="Copy contents"&gt;
&lt;svg class="icon-main" width="15" height="15" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/&gt;&lt;path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/&gt;&lt;/svg&gt;
&lt;svg class="icon-check" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M13.485 1.929a.75.75 0 0 1 .086 1.057l-7 8.5a.75.75 0 0 1-1.117.063l-3.5-3.5a.75.75 0 0 1 1.06-1.06l2.92 2.92 6.494-7.894a.75.75 0 0 1 1.057-.086z"/&gt;&lt;/svg&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="code-card__body"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# An EKS InferenceCluster with one L4 node pool, labeled for the&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ModelDeployment&amp;#39;s clusterSelector to target.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;modelplane.ai/v1alpha1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;InferenceCluster&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;eks-l4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;modelplane.ai/region&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;us&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cluster&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;source&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;EKS&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;eks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;region&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;us-west-2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;nodePools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;gpu-l4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;className&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;eks-l4-1x-g6&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;nodeCount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;minNodeCount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;maxNodeCount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;zones&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;us-west-2a&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="deployment"&gt;Deployment &lt;a class="anchor-link" id="deployment" href="#deployment" aria-label="Link to this section: Deployment"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="gdoc-manifest"&gt;
&lt;div class="code-card"&gt;
&lt;div class="code-card__header"&gt;
&lt;span class="code-card__name"&gt;model-deployment.yaml&lt;/span&gt;
&lt;div class="code-card__actions"&gt;&lt;button class="code-card__btn code-card__apply" type="button" data-copy="kubectl apply -f /examples/recipes/qwen3-8b/model-deployment.yaml" aria-label="Copy kubectl apply command" title="Copy kubectl apply command"&gt;
&lt;svg class="icon-main" width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true" focusable="false"&gt;
&lt;circle cx="12" cy="12" r="7.4"/&gt;
&lt;circle cx="12" cy="12" r="2.4"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(51.43 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(102.86 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(154.29 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(205.71 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(257.14 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(308.57 12 12)"/&gt;
&lt;/svg&gt;
&lt;svg class="icon-check" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M13.485 1.929a.75.75 0 0 1 .086 1.057l-7 8.5a.75.75 0 0 1-1.117.063l-3.5-3.5a.75.75 0 0 1 1.06-1.06l2.92 2.92 6.494-7.894a.75.75 0 0 1 1.057-.086z"/&gt;&lt;/svg&gt;
&lt;/button&gt;&lt;button class="code-card__btn code-card__copy" type="button" aria-label="Copy contents" title="Copy contents"&gt;
&lt;svg class="icon-main" width="15" height="15" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/&gt;&lt;path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/&gt;&lt;/svg&gt;
&lt;svg class="icon-check" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M13.485 1.929a.75.75 0 0 1 .086 1.057l-7 8.5a.75.75 0 0 1-1.117.063l-3.5-3.5a.75.75 0 0 1 1.06-1.06l2.92 2.92 6.494-7.894a.75.75 0 0 1 1.057-.086z"/&gt;&lt;/svg&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="code-card__body"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Qwen3-8B served on a single NVIDIA L4, validated end to end on EKS.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# An 8.2B dense model is a single Standalone engine: one self-contained vLLM&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# pod, no ModelCache, weights pulled straight from Hugging Face. The flags carry&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# real meaning beyond fit:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# --tool-call-parser=hermes the parser for Qwen3 dense (qwen3_xml is&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# for Qwen3-Coder, not this model). Qwen3&amp;#39;s&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# tool-use template ships in the tokenizer,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# so no --chat-template is needed.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# --reasoning-parser=qwen3 with&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# --default-chat-template-kwargs turns thinking off. Qwen3 thinks by&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# default, burying a one-line answer under a&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# &amp;lt;think&amp;gt; block and forbidding greedy decode.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# --max-model-len / --gpu-memory-utilization L4 fit, not correctness.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# No --port or --host: Modelplane&amp;#39;s routing expects the engine on its default&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# :8000 with a /health probe, and passes args through verbatim.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;modelplane.ai/v1alpha1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ModelDeployment&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;qwen3-8b&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;namespace&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ml-team&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;replicas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;clusterSelector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;matchLabels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;modelplane.ai/region&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;us&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;engines&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;qwen3-8b&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;members&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Standalone&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;nodeSelector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;devices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;gpu&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;selectors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;cel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; device.capacity[&amp;#34;gpu.nvidia.com&amp;#34;].memory.compareTo(quantity(&amp;#34;20Gi&amp;#34;)) &amp;gt;= 0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;containers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;engine&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;vllm/vllm-openai:v0.23.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;args&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;--model=Qwen/Qwen3-8B&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;--served-model-name=qwen&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;--max-model-len=16384&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;--gpu-memory-utilization=0.92&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;--reasoning-parser=qwen3&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;&amp;#34;--default-chat-template-kwargs={\&amp;#34;enable_thinking\&amp;#34;: &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;}&lt;span class="s2"&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; - &amp;#34;&lt;/span&gt;--&lt;span class="l"&gt;enable-auto-tool-choice&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;--tool-call-parser=hermes&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="gdoc-manifest"&gt;
&lt;div class="code-card"&gt;
&lt;div class="code-card__header"&gt;
&lt;span class="code-card__name"&gt;model-service.yaml&lt;/span&gt;
&lt;div class="code-card__actions"&gt;&lt;button class="code-card__btn code-card__apply" type="button" data-copy="kubectl apply -f /examples/recipes/qwen3-8b/model-service.yaml" aria-label="Copy kubectl apply command" title="Copy kubectl apply command"&gt;
&lt;svg class="icon-main" width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true" focusable="false"&gt;
&lt;circle cx="12" cy="12" r="7.4"/&gt;
&lt;circle cx="12" cy="12" r="2.4"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(51.43 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(102.86 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(154.29 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(205.71 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(257.14 12 12)"/&gt;
&lt;line x1="12" y1="9.6" x2="12" y2="2.6" transform="rotate(308.57 12 12)"/&gt;
&lt;/svg&gt;
&lt;svg class="icon-check" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M13.485 1.929a.75.75 0 0 1 .086 1.057l-7 8.5a.75.75 0 0 1-1.117.063l-3.5-3.5a.75.75 0 0 1 1.06-1.06l2.92 2.92 6.494-7.894a.75.75 0 0 1 1.057-.086z"/&gt;&lt;/svg&gt;
&lt;/button&gt;&lt;button class="code-card__btn code-card__copy" type="button" aria-label="Copy contents" title="Copy contents"&gt;
&lt;svg class="icon-main" width="15" height="15" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/&gt;&lt;path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/&gt;&lt;/svg&gt;
&lt;svg class="icon-check" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;path d="M13.485 1.929a.75.75 0 0 1 .086 1.057l-7 8.5a.75.75 0 0 1-1.117.063l-3.5-3.5a.75.75 0 0 1 1.06-1.06l2.92 2.92 6.494-7.894a.75.75 0 0 1 1.057-.086z"/&gt;&lt;/svg&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="code-card__body"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Exposes the qwen3-8b deployment&amp;#39;s endpoints as a single OpenAI-compatible URL.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Modelplane labels each composed ModelEndpoint with the deployment name, so this&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# selector reaches every replica. Read the public address from status.address:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# kubectl get ms qwen3-8b -n ml-team -o jsonpath=&amp;#39;{.status.address}&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;modelplane.ai/v1alpha1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ModelService&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;qwen3-8b&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;namespace&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ml-team&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;endpoints&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;matchLabels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;modelplane.ai/deployment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;qwen3-8b&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="speculative-decoding"&gt;Speculative decoding &lt;a class="anchor-link" id="speculative-decoding" href="#speculative-decoding" aria-label="Link to this section: Speculative decoding"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The same model and platform also serve with n-gram (prompt-lookup) speculative
decoding, which proposes tokens by matching the prompt and so needs no draft
model or second set of weights. On copy-heavy output, editing a pasted code
block where most output tokens are copied from the prompt, it roughly doubles
decode throughput and halves the time per output token:&lt;/p&gt;</description></item><item><title>Qwen2.5-7B</title><link>/recipes/qwen2.5-7b/</link><pubDate/><guid>/recipes/qwen2.5-7b/</guid><description>&lt;!-- vale write-good.Passive = NO --&gt;
&lt;p&gt;A 7B dense chat model served from an AWQ INT4 quantization on a single NVIDIA
A16 on Vultr: one &lt;code&gt;Standalone&lt;/code&gt; engine, no cache, weights pulled straight from
Hugging Face. The A16 slice on the &lt;code&gt;vcg-a16-6c-64g-16vram&lt;/code&gt; plan carries 16 GiB
of VRAM, so the INT4 weights (~5 GiB) fit with headroom for KV cache;
&lt;code&gt;--gpu-memory-utilization=0.85&lt;/code&gt; and &lt;code&gt;--enforce-eager&lt;/code&gt; keep the engine inside
the small card.&lt;/p&gt;
&lt;p&gt;This recipe was run end to end on Vultr (&lt;code&gt;ewr&lt;/code&gt;); the &lt;code&gt;InferenceClass&lt;/code&gt;,
&lt;code&gt;InferenceCluster&lt;/code&gt;, and &lt;code&gt;ModelDeployment&lt;/code&gt; are the exact manifests from that
run. GPU plans are region-gated on Vultr, so check the plan is offered in your
region before applying. Apply the platform side first, then the ML side.&lt;/p&gt;</description></item><item><title>Nemotron-3.5-Lightning</title><link>/recipes/nemotron-3.5-lightning/</link><pubDate/><guid>/recipes/nemotron-3.5-lightning/</guid><description>&lt;!-- vale write-good.Passive = NO --&gt;
&lt;p&gt;NVIDIA&amp;rsquo;s Nemotron-3.5-Lightning, an open 30B mixture-of-experts model with 3B
active parameters built for the execution layer of long-running agents, served
NVFP4 as a single &lt;code&gt;Standalone&lt;/code&gt; vLLM engine on one H100 node on Nebius.
The NVFP4 checkpoint (~20 GiB) fits a single GPU with headroom for the KV and
Mamba caches, so the engine needs no tensor parallelism, no gang, and no
prefill/decode disaggregation. Weights stage once to a &lt;code&gt;ModelCache&lt;/code&gt; on a
Nebius shared filesystem and mount at &lt;code&gt;/mnt/models&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Qwen3-Coder-480B</title><link>/recipes/qwen3-coder/</link><pubDate/><guid>/recipes/qwen3-coder/</guid><description>&lt;!-- vale write-good.Passive = NO --&gt;
&lt;p&gt;A 480B code MoE (35B active). Two validated shapes: the BF16 weights span two
H200 nodes as a gang over EFA, served from a &lt;code&gt;ModelCache&lt;/code&gt;; the FP8 checkpoint
fits one node, so it runs as a single &lt;code&gt;Standalone&lt;/code&gt; engine on SGLang with no
cache.&lt;/p&gt;
&lt;p&gt;Both shapes were run end to end; the &lt;code&gt;InferenceClass&lt;/code&gt; and &lt;code&gt;ModelDeployment&lt;/code&gt; are
the exact manifests from those runs. Apply the platform side first, then the ML
side. The &lt;code&gt;InferenceCluster&lt;/code&gt; carries an EC2 capacity reservation placeholder to
edit before applying.&lt;/p&gt;</description></item><item><title>GLM-4.5-Air</title><link>/recipes/glm-4.5-air/</link><pubDate/><guid>/recipes/glm-4.5-air/</guid><description>&lt;!-- vale write-good.Passive = NO --&gt;
&lt;p&gt;A 106B MoE served from an Unsloth GGUF checkpoint via llama.cpp instead of
vLLM, on a single A100 40 GB. Modelplane treats the engine as any
OpenAI-compatible container, so the only changes from a vLLM deployment are
the image and args: the container is still named &lt;code&gt;engine&lt;/code&gt; and listens on
&lt;code&gt;:8000&lt;/code&gt;. vLLM can&amp;rsquo;t load this Unsloth quantization format. llama.cpp can, and
&lt;code&gt;-hf&lt;/code&gt; pulls the checkpoint straight from Hugging Face at startup, so a
one-time deployment needs no &lt;code&gt;ModelCache&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Kimi-K2</title><link>/recipes/kimi-k2/</link><pubDate/><guid>/recipes/kimi-k2/</guid><description>&lt;!-- vale write-good.Passive = NO --&gt;
&lt;p&gt;A 1T MoE (1 trillion parameters) served prefill/decode disaggregated across two
H200 nodes: two engines, one per phase, with Modelplane composing the llm-d
routing layer between them. This recipe serves an INT4 quantization of the
model; the native FP8 weights need four such nodes.&lt;/p&gt;
&lt;p&gt;This recipe was run end to end; the &lt;code&gt;InferenceClass&lt;/code&gt; and &lt;code&gt;ModelDeployment&lt;/code&gt; are
the exact manifests from that run. Apply the platform side first, then the ML
side. The &lt;code&gt;InferenceCluster&lt;/code&gt; carries an EC2 capacity reservation placeholder to
edit before applying.&lt;/p&gt;</description></item><item><title>Laguna-S-2.1</title><link>/recipes/laguna/</link><pubDate/><guid>/recipes/laguna/</guid><description>&lt;!-- vale write-good.Passive = NO --&gt;
&lt;p&gt;Poolside&amp;rsquo;s Laguna-S-2.1 (118B total, 8B active MoE) served FP8 as a single
&lt;code&gt;Standalone&lt;/code&gt; vLLM engine on one 8x H100 node on Nebius. The FP8 weights (~121 GiB)
fit one node with headroom for KV cache, so the engine is tensor-parallel across
the 8 GPUs over NVLink, with no gang and no prefill/decode disaggregation. Weights
stage once to a &lt;code&gt;ModelCache&lt;/code&gt; on a Nebius shared filesystem and mount at &lt;code&gt;/mnt/models&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Qwen2.5-72B</title><link>/recipes/qwen2.5-72b/</link><pubDate/><guid>/recipes/qwen2.5-72b/</guid><description>&lt;!-- vale write-good.Passive = NO --&gt;
&lt;p&gt;A 72B dense chat model served from an AWQ INT4 quantization on a single 80 GB
GPU per replica: one &lt;code&gt;Standalone&lt;/code&gt; engine fed by a &lt;code&gt;ModelCache&lt;/code&gt;. The platform
side comes in two shapes - an A100 on AKS and an H100 on Nebius - and the ML
side is the same manifest for both. The deployment carries no
&lt;code&gt;clusterSelector&lt;/code&gt; and two replicas, and each pool holds exactly one GPU, so
with both platforms applied one replica runs on each. The service then splits
traffic between the two GPUs by weight, which the last section uses to compare
them. To serve on just one platform, apply one tab and drop &lt;code&gt;replicas&lt;/code&gt; to 1.&lt;/p&gt;</description></item><item><title>Llama-3.1-8B</title><link>/recipes/llama-3.1-8b/</link><pubDate/><guid>/recipes/llama-3.1-8b/</guid><description>&lt;!-- vale write-good.Passive = NO --&gt;
&lt;p&gt;An 8B dense chat model on a single NVIDIA L4. The entry recipe: one &lt;code&gt;Standalone&lt;/code&gt;
engine, no cache, public weights from a Hugging Face mirror. It carries no
&lt;code&gt;clusterSelector&lt;/code&gt;, so device capacity alone matches it to any compatible L4 in
the fleet.&lt;/p&gt;
&lt;p&gt;This recipe was run end to end on GKE; the &lt;code&gt;InferenceClass&lt;/code&gt;, &lt;code&gt;InferenceCluster&lt;/code&gt;,
and &lt;code&gt;ModelDeployment&lt;/code&gt; are the exact manifests from that run. The EKS platform
shape is the standard single-L4 recipe. It passes server validation but was not
served in this run. Apply the platform side first, then the ML side. The GKE
&lt;code&gt;InferenceCluster&lt;/code&gt; carries a GCP project placeholder to edit before applying.&lt;/p&gt;</description></item></channel></rss>