<?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 one 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 one 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 one 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 one 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 one 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 one 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 one 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 one NVIDIA L4. It&amp;rsquo;s the smallest recipe, with one
&lt;code&gt;Standalone&lt;/code&gt; engine, no cache, and 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/565b345696b9814e72660fe86f579e83acb3288a/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 https://docs.modelplane.ai/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 https://docs.modelplane.ai/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 https://docs.modelplane.ai/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=$(MODELPLANE_SERVED_MODEL_NAME)&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 https://docs.modelplane.ai/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 as one model a caller can name. Modelplane&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;# labels each composed ModelEndpoint with the deployment name, so this selector&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;# reaches every replica. Name the model,&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;# ml-team/qwen3-8b, in a request to an InferenceGateway that serves it.&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;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;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 doesn&amp;rsquo;t need a
draft model or a 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 one 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 has 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 plan availability varies by Vultr region, 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 &lt;code&gt;Standalone&lt;/code&gt; vLLM engine on one H100 node on Nebius.
Because the NVFP4 checkpoint (~20 GiB) fits one GPU with headroom for the KV
and Mamba caches, the engine doesn&amp;rsquo;t need tensor parallelism, a gang, or
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), validated in two deployments. 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 &lt;code&gt;Standalone&lt;/code&gt; engine on SGLang with no
cache.&lt;/p&gt;
&lt;p&gt;Both deployments 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. Edit the EC2 capacity reservation placeholder in
the &lt;code&gt;InferenceCluster&lt;/code&gt; before applying it.&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 one A100 40 GB. Because Modelplane treats llama.cpp like any other
OpenAI-compatible container, 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. Edit the EC2 capacity reservation placeholder in the &lt;code&gt;InferenceCluster&lt;/code&gt;
before applying it.&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
&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 and doesn&amp;rsquo;t need a gang or
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 one 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
covers an A100 on AKS and an H100 on Nebius, and the ML side is the same
manifest for both. The deployment has two replicas and no
&lt;code&gt;clusterSelector&lt;/code&gt;. Each pool has 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 one NVIDIA L4. It&amp;rsquo;s the entry recipe, with one
&lt;code&gt;Standalone&lt;/code&gt; engine, no cache, and public weights from a Hugging Face mirror.
The deployment has 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. Edit the
GCP project placeholder in the GKE &lt;code&gt;InferenceCluster&lt;/code&gt; before applying it.&lt;/p&gt;</description></item></channel></rss>