<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: GPUYard</title>
    <description>The latest articles on DEV Community by GPUYard (gpuyard).</description>
    <link>https://dev.to/gpuyard</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F12368%2F912e1880-50ba-4ba6-b402-b804498ea8eb.png</url>
      <title>DEV Community: GPUYard</title>
      <link>https://dev.to/gpuyard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gpuyard"/>
    <language>en</language>
    <item>
      <title>Deploying SGLang with RadixAttention on Dedicated GPU Servers</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 24 Jul 2026 05:30:10 +0000</pubDate>
      <link>https://dev.to/gpuyard/deploying-sglang-with-radixattention-on-dedicated-gpu-servers-cd7</link>
      <guid>https://dev.to/gpuyard/deploying-sglang-with-radixattention-on-dedicated-gpu-servers-cd7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a summarized guide. You can read the full, comprehensive step-by-step tutorial (including the Python TTFT benchmarking script) on &lt;a href="https://www.gpuyard.com/tutorials/howto/deploy-sglang-gpu-server/" rel="noopener noreferrer"&gt;GPUYard's Official Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;If you want to deploy SGLang on a dedicated GPU server, the short answer is: install the NVIDIA Container Toolkit, pull the official SGLang Docker image, launch it with your model and GPU flags, and connect to it through its OpenAI-compatible API endpoint. &lt;/p&gt;

&lt;p&gt;But why choose SGLang over standard serving engines like vLLM? The answer is &lt;strong&gt;RadixAttention&lt;/strong&gt; — a KV cache reuse mechanism that can meaningfully cut Time-to-First-Token (TTFT) for RAG pipelines, agents, and any multi-turn workload with repeated context.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Mechanism: RadixAttention
&lt;/h2&gt;

&lt;p&gt;In a standard transformer serving setup, the key-value (KV) cache for a request is discarded once the response is generated. If the next request shares the same system prompt, the engine still has to recompute the attention states from scratch. That recomputation is pure waste.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RadixAttention&lt;/strong&gt; solves this by organizing all cached KV states across requests into a radix tree, where common prefixes are stored once and shared across branches. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shared system prompts&lt;/strong&gt; are computed once, not per-request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-turn conversations&lt;/strong&gt; reuse the KV cache from earlier turns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TTFT drops sharply&lt;/strong&gt; on any "warm" request.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hardware Requirements (VRAM Planning)
&lt;/h2&gt;

&lt;p&gt;Before you touch Docker, budget for the model weights first, then reserve additional VRAM for the KV cache.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model Size&lt;/th&gt;
&lt;th&gt;Minimum VRAM (approx.)&lt;/th&gt;
&lt;th&gt;Recommended GPU(s)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;8B&lt;/strong&gt; (Llama-3.1)&lt;/td&gt;
&lt;td&gt;16–24 GB&lt;/td&gt;
&lt;td&gt;RTX 4090, L4, A100 (40GB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;32B&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;48–64 GB&lt;/td&gt;
&lt;td&gt;A100 (80GB), H100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;70B&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;140+ GB&lt;/td&gt;
&lt;td&gt;2–4x A100/H100 (&lt;code&gt;--tp 4&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step-by-Step Docker Deployment
&lt;/h2&gt;

&lt;p&gt;Your dedicated GPU server needs Ubuntu, NVIDIA drivers, CUDA, and the NVIDIA Container Toolkit. Once those are ready, you can pull and run the official SGLang server image.&lt;/p&gt;

&lt;p&gt;Here is the launch command for a Llama-3.1-8B-Instruct model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;--gpus&lt;/span&gt; all &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--ipc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;host &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 30000:30000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/.cache/huggingface:/root/.cache/huggingface &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--env&lt;/span&gt; &lt;span class="s2"&gt;"HF_TOKEN=your_huggingface_token"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  lmsysorg/sglang:v0.5.12 &lt;span class="se"&gt;\&lt;/span&gt;
  python3 &lt;span class="nt"&gt;-m&lt;/span&gt; sglang.launch_server &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model-path&lt;/span&gt; meta-llama/Meta-Llama-3.1-8B-Instruct &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--host&lt;/span&gt; 0.0.0.0 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 30000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--mem-fraction-static&lt;/span&gt; 0.85
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ⚠️ A Crucial Production Gotcha
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Do not forget the &lt;code&gt;--ipc=host&lt;/code&gt; flag!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SGLang relies on shared memory for efficient inter-process communication (especially with multiple GPU workers). Docker's default IPC namespace is often too small — omitting this flag will cause silent crashes or hangs under heavy load.&lt;/p&gt;

&lt;p&gt;Also, &lt;code&gt;--mem-fraction-static 0.85&lt;/code&gt; controls what fraction of GPU memory SGLang reserves upfront for model weights and the static KV cache pool. If you hit a "CUDA Out of Memory" error, lower this to &lt;code&gt;0.80&lt;/code&gt; or &lt;code&gt;0.75&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  What's Next? (Benchmarking TTFT)
&lt;/h3&gt;

&lt;p&gt;Now that your server is running, the best way to prove RadixAttention works is to write a Python script that streams responses and compares the TTFT of a "Cold Cache" vs. a "Warm Cache" using the OpenAI SDK.&lt;/p&gt;

&lt;p&gt;I have included the full Python benchmarking script, plus advanced configurations for Multi-GPU Tensor Parallelism (&lt;code&gt;--tp&lt;/code&gt;) and Quantization (AWQ/FP8) in the original tutorial.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.gpuyard.com/tutorials/howto/deploy-sglang-gpu-server/" rel="noopener noreferrer"&gt;Read the Full Guide and Get the Benchmarking Script on GPUYard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>python</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Maximize GPU ROI: Multi-Instance GPU (MIG) Partitioning on A100 &amp; H100</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 17 Jul 2026 09:58:27 +0000</pubDate>
      <link>https://dev.to/gpuyard/maximize-gpu-roi-multi-instance-gpu-mig-partitioning-on-a100-h100-21gm</link>
      <guid>https://dev.to/gpuyard/maximize-gpu-roi-multi-instance-gpu-mig-partitioning-on-a100-h100-21gm</guid>
      <description>&lt;p&gt;Most AI teams provision GPUs the way they provision servers: one workload, one full device. But a 7B-parameter inference endpoint doesn't need 80GB of HBM3, and neither does a batch embedding job. &lt;/p&gt;

&lt;p&gt;When you run workloads like that on a full A100 or H100, most of the silicon sits idle while you pay for all of it.&lt;/p&gt;

&lt;p&gt;NVIDIA's &lt;strong&gt;Multi-Instance GPU (MIG)&lt;/strong&gt; technology solves this by physically dividing a single supported GPU into as many as seven independent, hardware-isolated instances. Each instance gets its own dedicated memory, cache, and compute cores. &lt;/p&gt;

&lt;p&gt;This guide walks through what MIG is, how it differs from other GPU-sharing methods, and the exact &lt;code&gt;nvidia-smi&lt;/code&gt; commands to partition an A100 or H100 and run multiple models on it today.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Multi-Instance GPU (MIG)?
&lt;/h2&gt;

&lt;p&gt;MIG is a hardware capability built into NVIDIA's Ampere, Hopper, and newer datacenter GPUs. It splits one physical GPU into multiple fully isolated GPU Instances, each behaving like its own standalone CUDA device.&lt;/p&gt;

&lt;p&gt;Every instance owns a dedicated fraction of the GPU's Streaming Multiprocessors (SMs), a fixed slice of high-bandwidth memory, and a portion of the L2 cache. A workload running on one instance cannot see, starve, or slow down a workload running on another.&lt;/p&gt;

&lt;h3&gt;
  
  
  MIG vs. Time-Slicing vs. a Full Dedicated GPU
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Resource Isolation&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Full dedicated GPU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Complete — one workload owns the whole device&lt;/td&gt;
&lt;td&gt;Large training runs, workloads that need every SM and every GB of VRAM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Time-slicing / CUDA MPS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None — processes take turns or share SMs cooperatively&lt;/td&gt;
&lt;td&gt;Bursty, cooperative workloads where strict isolation isn't required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MIG&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hardware-level — dedicated SMs, memory, and cache per instance&lt;/td&gt;
&lt;td&gt;Multiple concurrent inference endpoints, multi-tenant environments&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Without MIG, two inference jobs sharing a GPU compete for the same memory bandwidth. A memory-heavy request can delay a smaller one, breaking latency guarantees. MIG removes that contention.&lt;/p&gt;




&lt;h2&gt;
  
  
  MIG Profiles: A100 vs. H100
&lt;/h2&gt;

&lt;p&gt;NVIDIA ships a fixed set of "profiles" per GPU model. A profile defines how much compute and memory an instance gets. Profile names follow the pattern &lt;code&gt;&amp;lt;compute slices&amp;gt;g.&amp;lt;memory&amp;gt;gb&lt;/code&gt; (e.g., &lt;code&gt;3g.20gb&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  A100 40GB MIG Profiles
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Profile&lt;/th&gt;
&lt;th&gt;Memory&lt;/th&gt;
&lt;th&gt;Compute (SM fraction)&lt;/th&gt;
&lt;th&gt;Max Concurrent Instances&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1g.5gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5GB&lt;/td&gt;
&lt;td&gt;1/7&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1g.10gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10GB&lt;/td&gt;
&lt;td&gt;1/7&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2g.10gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10GB&lt;/td&gt;
&lt;td&gt;2/7&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3g.20gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20GB&lt;/td&gt;
&lt;td&gt;3/7&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4g.20gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20GB&lt;/td&gt;
&lt;td&gt;4/7&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;7g.40gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;40GB&lt;/td&gt;
&lt;td&gt;7/7&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;(On the A100 80GB variant, memory per instance is doubled — e.g., &lt;code&gt;1g.10gb&lt;/code&gt;, &lt;code&gt;7g.80gb&lt;/code&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  H100 80GB MIG Profiles
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Profile&lt;/th&gt;
&lt;th&gt;Memory&lt;/th&gt;
&lt;th&gt;Compute (SM fraction)&lt;/th&gt;
&lt;th&gt;Max Concurrent Instances&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1g.10gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10GB&lt;/td&gt;
&lt;td&gt;1/7&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1g.20gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20GB&lt;/td&gt;
&lt;td&gt;1/7&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2g.20gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20GB&lt;/td&gt;
&lt;td&gt;2/7&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3g.40gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;40GB&lt;/td&gt;
&lt;td&gt;3/7&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4g.40gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;40GB&lt;/td&gt;
&lt;td&gt;4/7&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;7g.80gb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;80GB&lt;/td&gt;
&lt;td&gt;7/7&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The Power of Mixed Geometry
&lt;/h3&gt;

&lt;p&gt;You don't have to cut the GPU into equal slices. &lt;strong&gt;Mixed geometry&lt;/strong&gt; allows you to combine different profile sizes. For example, on a single H100 80GB, you could carve out one &lt;code&gt;3g.40gb&lt;/code&gt; instance for a 13B model, and two &lt;code&gt;2g.20gb&lt;/code&gt; instances for embedding models. Three independent services, one GPU, no resource contention.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step-by-Step: Partitioning a GPU with MIG
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; Root access, supported GPU (A100, A30, H100, etc.), and the latest NVIDIA datacenter driver.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Enable MIG Mode
&lt;/h3&gt;

&lt;p&gt;First, check if MIG is enabled:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi &lt;span class="nt"&gt;-i&lt;/span&gt; 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enable MIG mode on GPU 0:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nvidia-smi &lt;span class="nt"&gt;-i&lt;/span&gt; 0 &lt;span class="nt"&gt;-mig&lt;/span&gt; 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Note: On Ampere GPUs, this resets the GPU and persists across reboots. On Hopper GPUs, no reset is required, but it does not persist across a driver reload.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 2: List Available Profiles
&lt;/h3&gt;

&lt;p&gt;Step 3: Create Instances&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi mig &lt;span class="nt"&gt;-lgip&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Create Instances
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;-cgi&lt;/code&gt; to create GPU Instances and &lt;code&gt;-C&lt;/code&gt; to auto-create matching Compute Instances.&lt;/p&gt;

&lt;p&gt;Example 1: Split one A100 into two equal &lt;code&gt;3g.20gb&lt;/code&gt; instances (using profile ID 9):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nvidia-smi mig &lt;span class="nt"&gt;-cgi&lt;/span&gt; 9,3g.20gb &lt;span class="nt"&gt;-C&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example 2: Mixed geometry on H100 (one large, two small):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nvidia-smi mig &lt;span class="nt"&gt;-cgi&lt;/span&gt; 5,14,19 &lt;span class="nt"&gt;-C&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Verify and Get UUIDs
&lt;/h3&gt;

&lt;p&gt;List your active MIG devices to get their UUIDs. You need these to assign workloads.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi &lt;span class="nt"&gt;-L&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(You will see output like &lt;code&gt;MIG-c7384736-a75d-5afc-978f-d2f1294409fd&lt;/code&gt;)&lt;/p&gt;

&lt;h4&gt;
  
  
  Running Multiple Models Concurrently
&lt;/h4&gt;

&lt;p&gt;Once your instances exist, pin each workload to its own MIG device using CUDA_VISIBLE_DEVICES.&lt;/p&gt;

&lt;p&gt;Bare Metal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;MIG-c7384736-a75d-5afc... python serve_model_a.py &amp;amp;
&lt;span class="nv"&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;MIG-a28ad590-3fda-56dd... python serve_model_b.py &amp;amp;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker / NVIDIA Container Toolkit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker run --gpus '"device=0:0"' \
  nvcr.io/nvidia/pytorch:24.xx-py3 \
  python /app/serve_model_a.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(The &lt;code&gt;device=0:0&lt;/code&gt; syntax targets GPU index 0, MIG device index 0. The container sees only that slice!)&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automate persistence:&lt;/strong&gt; MIG instances do not survive a server reboot by default. Use NVIDIA's &lt;code&gt;mig-parted&lt;/code&gt; tool to define and reapply geometries automatically via a systemd service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Downtime required for resizing:&lt;/strong&gt; You cannot resize a running instance. You must destroy it (&lt;code&gt;-dci&lt;/code&gt; and &lt;code&gt;-dgi&lt;/code&gt;) and recreate it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor correctly:&lt;/strong&gt; On A100/A30, standard &lt;code&gt;nvidia-smi&lt;/code&gt; utilization metrics show as N/A per MIG instance. Use NVIDIA DCGM v2.0.13+ for per-instance profiling.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Need MIG-Ready Infrastructure?
&lt;/h2&gt;

&lt;p&gt;MIG is a hardware feature, meaning any dedicated &lt;a href="https://www.gpuyard.com/products/nvidia/a100/" rel="noopener noreferrer"&gt;A100&lt;/a&gt; or &lt;a href="https://www.gpuyard.com/products/nvidia/h100/" rel="noopener noreferrer"&gt;H100&lt;/a&gt; is ready to partition out of the box. If you are looking to deploy fractional workloads alongside full-node training, &lt;a href="https://www.gpuyard.com/products/nvidia/" rel="noopener noreferrer"&gt;&lt;strong&gt;GPUYard's dedicated NVIDIA servers&lt;/strong&gt;&lt;/a&gt; provide the full root access you need to run every command in this guide.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>devops</category>
      <category>nvidia</category>
      <category>python</category>
    </item>
    <item>
      <title>Why Network Latency is Killing Your AI Inference (A European Architecture Guide)</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 10 Jul 2026 08:26:04 +0000</pubDate>
      <link>https://dev.to/gpuyard/why-network-latency-is-killing-your-ai-inference-a-european-architecture-guide-4262</link>
      <guid>https://dev.to/gpuyard/why-network-latency-is-killing-your-ai-inference-a-european-architecture-guide-4262</guid>
      <description>&lt;p&gt;Every millisecond between a user's request and your AI model's response is a design decision—whether you made it consciously or not. &lt;/p&gt;

&lt;p&gt;For AI inference specifically (think chatbots, recommendation engines, or real-time fraud-detection systems), network latency is often the difference between an application that feels magical and one that feels broken. This matters even more once you factor in where your GPU infrastructure physically sits.&lt;/p&gt;

&lt;p&gt;If your user base is in the UK or Europe, here is an architectural breakdown of why physical distance, network peering, and bare-metal hardware are core design concerns, not just afterthoughts.&lt;/p&gt;




&lt;h2&gt;
  
  
  Training Latency vs. Inference Latency: Not the Same Problem
&lt;/h2&gt;

&lt;p&gt;It is easy to lump "AI performance" into one bucket, but training and inference have completely different tolerances for delay. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Model Training&lt;/th&gt;
&lt;th&gt;Live Inference&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Execution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Asynchronous / Batch&lt;/td&gt;
&lt;td&gt;Synchronous / Real-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Latency Tolerance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (Minutes to Hours)&lt;/td&gt;
&lt;td&gt;Ultra-low (Milliseconds)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;User Impact&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None directly&lt;/td&gt;
&lt;td&gt;Degraded UX, timeouts, session abandonment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A training job running for 12 hours does not care if a data batch takes an extra 200 milliseconds to load. &lt;strong&gt;A live inference request absolutely does.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Once you add up model compute time, data retrieval, and network transit, there is very little room left to waste on an inefficient network path.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Actually Causes Latency in an Inference Pipeline
&lt;/h2&gt;

&lt;p&gt;Latency is not a single number. It is a stack of smaller delays. When debugging a slow AI response, you are usually fighting these four factors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Propagation delay:&lt;/strong&gt; The physical time for a signal to travel through fiber optics (scales directly with distance).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Network hops:&lt;/strong&gt; Processing time added by every router, switch, or intermediate network your packet passes through.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Peering path efficiency:&lt;/strong&gt; Whether your hosting provider connects directly to major networks or routes traffic through a messy chain of intermediary ISPs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Server-side processing:&lt;/strong&gt; Your GPU compute time, memory bandwidth, and model serving efficiency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Physical location and network peering address the first three. They are the easiest to control when choosing a hosting provider, but also the easiest to get wrong by default.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bare-Metal vs. Cloud Latency Gap
&lt;/h2&gt;

&lt;p&gt;Public cloud GPU instances are virtualized by design. Your workload shares physical hardware with other tenants, and traffic often routes through several layers of the provider's internal software-defined network (SDN) before it even reaches the public internet. &lt;/p&gt;

&lt;p&gt;Each of those layers adds latency and—more importantly—&lt;strong&gt;latency variance&lt;/strong&gt; (jitter). Unpredictable latency spikes are terrible for real-time inference.&lt;/p&gt;

&lt;p&gt;Bare-metal GPU hosting removes that layer entirely. There is no hypervisor scheduling your workload against someone else's, resulting in a shorter, highly predictable network path from request to response.&lt;/p&gt;




&lt;h2&gt;
  
  
  The UK's Network Advantage: Why LINX Matters
&lt;/h2&gt;

&lt;p&gt;If you are serving European traffic, the &lt;strong&gt;London Internet Exchange (LINX)&lt;/strong&gt; provides a massive architectural advantage. &lt;/p&gt;

&lt;p&gt;LINX is one of Europe's largest peering ecosystems. It connects networks from over 950 autonomous systems across more than 80 countries. &lt;/p&gt;

&lt;p&gt;In practical terms, an internet exchange is a physical meeting point where networks connect directly. A UK-hosted server peered at LINX can reach a massive share of European global networks over a short, direct path. It turns "the server is in London" into "the server is a highly optimized network path away from the rest of Europe."&lt;/p&gt;




&lt;h2&gt;
  
  
  A Practical Infrastructure Checklist for AI Inference
&lt;/h2&gt;

&lt;p&gt;Before committing to a hosting location for a latency-sensitive AI application, run through this checklist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Analyze your user geography:&lt;/strong&gt; UK/Europe-heavy traffic benefits exponentially from UK-based, LINX-peered infrastructure.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Audit for virtualization:&lt;/strong&gt; Are you using a hypervisor? If so, monitor for latency variance under real load, not just raw throughput.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Verify transit hops:&lt;/strong&gt; Ask your provider if they peer directly at a major exchange or if they route through multiple transit layers. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Match GPU to workload:&lt;/strong&gt; Do not use training-optimized hardware for live serving. NVIDIA Tensor Core GPUs like the L4, A30, and A100 are purpose-built for efficient, low-latency matrix operations.&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Looking for a zero-compromise hardware solution?&lt;/strong&gt;&lt;br&gt;
We built GPUYard UK specifically to solve this problem. We offer bare-metal access to Tensor Core GPUs (L4, A30, A100) hosted in London, Portsmouth, and Slough with direct LINX peering. No hypervisor overhead, full root access, and no hidden egress fees. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Looking for a zero-compromise hardware solution?&lt;/strong&gt;&lt;br&gt;
We built GPUYard UK specifically to solve this problem. We offer bare-metal access to Tensor Core GPUs (L4, A30, A100) hosted in London, Portsmouth, and Slough with direct LINX peering. No hypervisor overhead, full root access, and no hidden egress fees. &lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.gpuyard.com/blogs/ai-inference-latency-uk/" rel="noopener noreferrer"&gt;Explore UK GPU server configurations here&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>machinelearning</category>
      <category>devops</category>
    </item>
    <item>
      <title>NVIDIA just open-sourced a 32B Robotaxi VLA (Alpamayo 2 Super) – Here is the architecture breakdown</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 05 Jun 2026 06:33:09 +0000</pubDate>
      <link>https://dev.to/gpuyard/nvidia-just-open-sourced-a-32b-robotaxi-vla-alpamayo-2-super-here-is-the-architecture-breakdown-jpm</link>
      <guid>https://dev.to/gpuyard/nvidia-just-open-sourced-a-32b-robotaxi-vla-alpamayo-2-super-here-is-the-architecture-breakdown-jpm</guid>
      <description>&lt;p&gt;For years, the autonomous vehicle (AV) industry has operated on a simple premise: the more proprietary your AI stack, the bigger your competitive moat. &lt;/p&gt;

&lt;p&gt;NVIDIA just challenged that assumption head-on at GTC Taipei. &lt;/p&gt;

&lt;p&gt;With the launch of &lt;strong&gt;Alpamayo 2 Super&lt;/strong&gt;—a 32-billion-parameter open reasoning Vision-Language-Action (VLA) model—they are betting that an open-source ecosystem will accelerate Level 4 autonomy faster than any closed-loop approach. &lt;/p&gt;

&lt;p&gt;If you are an AI engineer evaluating foundation models, or an MLOps dev planning training compute, here is the technical breakdown of what actually changed, and what it takes to run it.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Model:&lt;/strong&gt; 32B parameters, built on Cosmos. It’s a VLA model outputting Meta-Actions and Chain-of-Causation (CoC) traces. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Tools:&lt;/strong&gt; AlpaGym (open-source closed-loop RL framework) + OmniDreams (generative photorealistic simulation).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Catch:&lt;/strong&gt; It requires massive VRAM and high-throughput GPU interconnects to train and run closed-loop RL. The AV moat is no longer the model; it's the bare-metal compute.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Under the Hood: The 5 Technical Pillars
&lt;/h2&gt;

&lt;p&gt;Alpamayo 2 Super is a "teacher model." It isn't designed to run on the vehicle's edge hardware directly. It runs in the data center to train, label, and distill knowledge into smaller student models (like those deployed on NVIDIA DRIVE AGX Thor). &lt;/p&gt;

&lt;p&gt;Here is what makes the 32B architecture fundamentally different from the previous 10B Nano iterations:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 3× Parameter Scale
&lt;/h3&gt;

&lt;p&gt;Jumping from 10B to 32B parameters delivers significantly better 3D spatial understanding and trajectory prediction, specifically for long-tail edge cases where smaller models hallucinate or fail.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Full-Surround 360° Perception
&lt;/h3&gt;

&lt;p&gt;Previous models were front-camera focused. Alpamayo 2 Super processes front, side, and rear views simultaneously. This is a structural requirement for safe lane changes and complex intersection navigation.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Meta-Action Outputs
&lt;/h3&gt;

&lt;p&gt;Instead of just outputting a raw trajectory array, the VLA outputs macro driving decisions—&lt;em&gt;yield, lane change, stop&lt;/em&gt;. Downstream planners receive a richer signal detailing the &lt;em&gt;intent&lt;/em&gt; behind the movement.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Reasoning Auto-Labeling (2D Grounding)
&lt;/h3&gt;

&lt;p&gt;This is an MLOps game-changer. The model automatically generates high-quality reasoning labels from raw driving clips. It compresses the data pipeline annotation cycles from months to days.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Chain-of-Causation (CoC) Traces
&lt;/h3&gt;

&lt;p&gt;The model explicitly documents the causal reasoning chain behind every decision. This solves the "black box" interpretability problem that plagues proprietary stacks (like Tesla FSD) and gives safety engineers an actual mechanism for auditing model behavior.&lt;/p&gt;




&lt;h2&gt;
  
  
  AlpaGym: Open-Loop vs. Closed-Loop Training
&lt;/h2&gt;

&lt;p&gt;Releasing the weights is nice, but training it to drive is another problem. &lt;/p&gt;

&lt;p&gt;NVIDIA is open-sourcing &lt;strong&gt;AlpaGym&lt;/strong&gt;, a high-throughput reinforcement learning (RL) framework for AVs. &lt;/p&gt;

&lt;p&gt;Most open-source models rely on &lt;strong&gt;open-loop evaluation&lt;/strong&gt; (scoring predictions against static, pre-recorded video). There are no consequences for bad predictions. &lt;/p&gt;

&lt;p&gt;AlpaGym introduces &lt;strong&gt;closed-loop training&lt;/strong&gt;. The model runs continuous decision/observation cycles inside the AlpaSim microservice stack. Every steering choice alters the environment. The model experiences the cascading downstream effects of its own errors, teaching it to recover from mistakes &lt;em&gt;before&lt;/em&gt; it touches a physical road.&lt;/p&gt;

&lt;p&gt;When combined with &lt;strong&gt;OmniDreams&lt;/strong&gt; (a generative world model that synthesizes photorealistic 1-in-a-million edge cases), developers now have a complete, end-to-end simulation pipeline.&lt;/p&gt;




&lt;h2&gt;
  
  
  The MLOps Reality: The Compute Bottleneck
&lt;/h2&gt;

&lt;p&gt;Here is the infrastructure reality check for AI teams.&lt;/p&gt;

&lt;p&gt;You have the open weights. You have the AlpaGym repo. But what does it actually take to run this?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fine-tuning 32B Params:&lt;/strong&gt; At 32B parameters in &lt;code&gt;bf16&lt;/code&gt;, the model weights alone occupy ~64GB of VRAM—and that's before optimizer states, activations, and batch data. You need multi-GPU nodes with massive aggregate memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Closed-Loop RL:&lt;/strong&gt; Continuous simulation loops rendering physics and model inference in parallel demand incredibly high-bandwidth GPU interconnects. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simulation Generation:&lt;/strong&gt; OmniDreams and Neural Reconstruction (NuRec) are compute-heavy batch workloads. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you attempt to run these pipelines on shared cloud instances, your training cycle time will throttle to a halt. The playing field shifted: &lt;strong&gt;Smaller players can now compete on model quality, but only if they have the raw compute to process the training cycles.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Need the Infrastructure?
&lt;/h3&gt;

&lt;p&gt;If your team is fine-tuning Alpamayo or running heavy RL/simulation workloads, you need unthrottled, bare-metal hardware. &lt;/p&gt;

&lt;p&gt;At &lt;strong&gt;GPUYard&lt;/strong&gt;, we provide high-performance, dedicated GPU servers—including &lt;strong&gt;H100 and H200 configurations&lt;/strong&gt;—purpose-built for large-scale AI training. No shared resources. No performance drops.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.gpuyard.com/gpu-servers/" rel="noopener noreferrer"&gt;Check out our dedicated GPU setups for AI workloads here&lt;/a&gt;&lt;/strong&gt; &lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://www.gpuyard.com/blogs/nvidia-alpamayo-2-super-robotaxi/" rel="noopener noreferrer"&gt;Read the full deep-dive on my main blog&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Are you planning to test Alpamayo 2 Super? Let's discuss the VRAM constraints and fine-tuning strategies in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>nvidia</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to Set Up Confidential Computing for Secure AI on NVIDIA Blackwell</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Thu, 21 May 2026 10:15:29 +0000</pubDate>
      <link>https://dev.to/gpuyard/how-to-set-up-confidential-computing-for-secure-ai-on-nvidia-blackwell-2m8k</link>
      <guid>https://dev.to/gpuyard/how-to-set-up-confidential-computing-for-secure-ai-on-nvidia-blackwell-2m8k</guid>
      <description>&lt;p&gt;Securing artificial intelligence workloads is no longer optional for enterprise infrastructure. When processing sensitive financial data, healthcare records, or proprietary foundational models, encrypting data at rest and in transit is insufficient. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NVIDIA Confidential Computing (CC)&lt;/strong&gt; on the Blackwell architecture protects "data in use." By leveraging hardware-based Trusted Execution Environments (TEEs), it ensures that neither the hypervisor, the host operating system, nor the infrastructure provider can access the unencrypted weights, datasets, or code running on the GPU.&lt;/p&gt;

&lt;p&gt;This guide provides a step-by-step infrastructure workflow for enabling and verifying Confidential Computing on NVIDIA Blackwell GPUs.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Quick Summary / TL;DR
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enable CPU TEE:&lt;/strong&gt; Activate AMD SEV-SNP or Intel TDX in the server BIOS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install OpenRM:&lt;/strong&gt; Deploy the NVIDIA Open Kernel Modules, which are strictly required for CC.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Toggle CC Mode:&lt;/strong&gt; Use &lt;code&gt;nvidia-smi&lt;/code&gt; to enforce Confidential Computing at the firmware level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attestation:&lt;/strong&gt; Verify the hardware cryptographic signatures using the NVIDIA Attestation SDK to guarantee a secure enclave.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🛠️ Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before modifying system configurations, ensure your hardware and software stack meet the following requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hardware:&lt;/strong&gt; NVIDIA Blackwell GPUs (e.g., B200) attached to a host CPU supporting TEE (AMD SEV-SNP or Intel Advanced Matrix Extensions/TDX).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OS:&lt;/strong&gt; Ubuntu 22.04 LTS or 24.04 LTS (with a CC-aware Linux kernel).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access:&lt;/strong&gt; Root (&lt;code&gt;sudo&lt;/code&gt;) privileges on the host server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firmware:&lt;/strong&gt; Updated system BIOS and GPU VBIOS supporting PCIe Integrity and Data Encryption (IDE).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step-by-Step Infrastructure Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Enable the Host CPU Trusted Execution Environment
&lt;/h3&gt;

&lt;p&gt;NVIDIA’s GPU enclave is securely tethered to the CPU's TEE. You must first enable this at the motherboard level.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reboot the server and enter the BIOS/UEFI settings.&lt;/li&gt;
&lt;li&gt;Navigate to the &lt;strong&gt;Security&lt;/strong&gt; or &lt;strong&gt;CPU Configuration&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;AMD SEV-SNP&lt;/strong&gt; or &lt;strong&gt;Intel TDX&lt;/strong&gt; (depending on your host architecture).&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;PCIe AER&lt;/strong&gt; (Advanced Error Reporting) and &lt;strong&gt;ACS&lt;/strong&gt; (Access Control Services) to ensure secure PCIe lane isolation.&lt;/li&gt;
&lt;li&gt;Save changes and reboot into the OS.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: Install NVIDIA Open Kernel Modules (OpenRM)
&lt;/h3&gt;

&lt;p&gt;NVIDIA Confidential Computing does not function with the legacy proprietary drivers. You must install the open-source GPU kernel modules.&lt;/p&gt;

&lt;p&gt;First, purge any existing NVIDIA drivers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get purge nvidia-&lt;span class="k"&gt;*&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get autoremove
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, install the specific OpenRM driver package. Replace &lt;code&gt;550&lt;/code&gt; with the latest Blackwell-supported driver branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;nvidia-driver-550-open
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Infrastructure Tip:&lt;/strong&gt; Configuring BIOS-level TEEs and PCIe IDE across a cluster can be highly complex and time-consuming. If you are building secure AI environments, &lt;strong&gt;GPUYard's GPU Dedicated Servers&lt;/strong&gt; provide pre-configured Bare Metal environments. With TEE-ready BIOS templates and optimized Blackwell hardware deployed out-of-the-box, you can bypass the hardware-level friction and immediately begin installing your driver stack.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 3: Enable Confidential Computing Mode on the GPU
&lt;/h3&gt;

&lt;p&gt;Once the OS loads with the OpenRM drivers, you must instruct the GPU firmware to initialize the secure enclave.&lt;/p&gt;

&lt;p&gt;Run the following command to enable CC mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nvidia-smi conf-compute &lt;span class="nt"&gt;-s&lt;/span&gt; 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;(Note: The &lt;code&gt;-s 1&lt;/code&gt; flag sets the state to "enabled".)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To apply the firmware changes, perform a GPU reset. Ensure no workloads are currently running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nvidia-smi &lt;span class="nt"&gt;-r&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Verify the Secure Enclave Status
&lt;/h3&gt;

&lt;p&gt;You must validate that the CC environment is active and that the PCIe link is securely encrypted. Query the CC status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi conf-compute &lt;span class="nt"&gt;-q&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Look for the following output to confirm success:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Confidential Computing
    Environment              : Execution
    CC Feature               : Enabled
    DevTools Mode            : Disabled
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5: Execute Remote Attestation
&lt;/h3&gt;

&lt;p&gt;Security is based on verification, not assumption. Use the NVIDIA Attestation SDK to cryptographically prove that the GPU is a genuine Blackwell unit running verified firmware.&lt;/p&gt;

&lt;p&gt;Install the NVIDIA Local GPU Attestation tool (NVTrust) and generate the cryptographic evidence report:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nv-local-attest &lt;span class="nt"&gt;--create-report&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The tool will cross-reference the GPU's hardware measurements against NVIDIA’s root of trust certificates. A &lt;strong&gt;Verification Successful&lt;/strong&gt; output confirms your AI workload is mathematically secure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Setting up Confidential Computing on NVIDIA Blackwell fundamentally shifts your AI security posture from perimeter defense to mathematical, hardware-level isolation. By enabling the CPU TEE, deploying the OpenRM drivers, and validating the hardware attestation, you guarantee that your proprietary AI models and datasets remain entirely encrypted during processing.&lt;/p&gt;

&lt;p&gt;Deploying secure infrastructure requires reliable, high-performance hardware. When you are ready to scale your confidential AI workloads, explore &lt;a href="https://www.gpuyard.com/gpu-servers/" rel="noopener noreferrer"&gt;GPUYard’s Bare Metal solutions&lt;/a&gt; to provision isolated, high-availability Blackwell infrastructure tailored for absolute security.&lt;/p&gt;

</description>
      <category>nvidia</category>
      <category>mlops</category>
      <category>security</category>
      <category>devops</category>
    </item>
    <item>
      <title>How to Configure Bare-Metal Kubernetes for GPU Orchestration</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 08 May 2026 11:54:30 +0000</pubDate>
      <link>https://dev.to/gpuyard/how-to-configure-bare-metal-kubernetes-for-gpu-orchestration-5fk8</link>
      <guid>https://dev.to/gpuyard/how-to-configure-bare-metal-kubernetes-for-gpu-orchestration-5fk8</guid>
      <description>&lt;p&gt;To achieve maximum performance for AI inference, machine learning training, and high-performance computing (HPC), deploying workloads on bare-metal servers is the industry standard. Virtualized environments introduce overhead; bare-metal hardware allows direct access to the PCIe bus, ensuring your NVIDIA GPUs operate at &lt;strong&gt;100% efficiency&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This tutorial explains how to configure a bare-metal Kubernetes (K8s) cluster for GPU orchestration. By integrating the NVIDIA Container Toolkit and the Kubernetes Device Plugin, you can automatically schedule, allocate, and manage GPU resources across your containerized workloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before beginning, ensure your environment meets the following requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Operating System:&lt;/strong&gt; Ubuntu 22.04 LTS (Jammy Jellyfish).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware:&lt;/strong&gt; A bare-metal server with at least one physical NVIDIA GPU attached.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access:&lt;/strong&gt; Root or &lt;code&gt;sudo&lt;/code&gt; privileges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kubernetes:&lt;/strong&gt; A running K8s cluster (v1.25+) initialized via &lt;code&gt;kubeadm&lt;/code&gt;, &lt;code&gt;k3s&lt;/code&gt;, or similar, with the &lt;code&gt;kubectl&lt;/code&gt; CLI tool configured.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Container Runtime:&lt;/strong&gt; &lt;code&gt;containerd&lt;/code&gt; installed and running.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Summary / TL;DR
&lt;/h2&gt;

&lt;p&gt;If you need a quick overview of the deployment pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Update the Host:&lt;/strong&gt; Install the proprietary NVIDIA GPU drivers directly on the bare-metal node.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Install Toolkit:&lt;/strong&gt; Deploy the NVIDIA Container Toolkit to bridge the GPU with container runtimes.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Configure Runtime:&lt;/strong&gt; Modify &lt;code&gt;containerd&lt;/code&gt; configurations to recognize the &lt;code&gt;nvidia&lt;/code&gt; runtime class.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Deploy Plugin:&lt;/strong&gt; Apply the NVIDIA Device Plugin DaemonSet to your K8s cluster.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Verify:&lt;/strong&gt; Deploy a test Pod requesting &lt;code&gt;nvidia.com/gpu&lt;/code&gt; resources to confirm successful orchestration.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Step-by-Step Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Install NVIDIA Drivers on the Host Node
&lt;/h3&gt;

&lt;p&gt;Kubernetes cannot interact with the GPU hardware without the host machine first having the correct drivers installed.&lt;/p&gt;

&lt;p&gt;Update your package lists and install necessary build tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; build-essential linux-headers-&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install the recommended NVIDIA driver for your hardware:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; nvidia-driver-535
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reboot the server. Once back online, verify the installation by checking the GPU status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; nvidia-driver-535
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;(Tip: You should see a table showing your GPU UUID, driver version, and CUDA version).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 2: Install the NVIDIA Container Toolkit
&lt;/h3&gt;

&lt;p&gt;The NVIDIA Container Toolkit allows &lt;code&gt;containerd&lt;/code&gt; to pass GPU access directly to containers.&lt;/p&gt;

&lt;p&gt;Setup the package repository and GPG key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;https://nvidia.github.io/libnvidia-container/gpgkey]&lt;span class="o"&gt;(&lt;/span&gt;https://nvidia.github.io/libnvidia-container/gpgkey&lt;span class="o"&gt;)&lt;/span&gt; | &lt;span class="nb"&gt;sudo &lt;/span&gt;gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-L&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list]&lt;span class="o"&gt;(&lt;/span&gt;https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list&lt;span class="o"&gt;)&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g'&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/nvidia-container-toolkit.list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update the repository and install the toolkit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; nvidia-container-toolkit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Configure containerd for GPU Support
&lt;/h3&gt;

&lt;p&gt;You must explicitly tell &lt;code&gt;containerd&lt;/code&gt; to use the NVIDIA runtime so Kubernetes can properly launch GPU-enabled Pods.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pro Tip: Configuring container runtimes and compiling drivers on inconsistent hardware can lead to frustrating kernel panics. Starting with a standardized environment—like a pre-configured GPUYard Bare Metal Dedicated Server—ensures you have the unthrottled PCIe lanes and clean OS images necessary to skip hardware debugging and move straight to orchestrating your AI workloads.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Configure the NVIDIA runtime in &lt;code&gt;containerd&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nvidia-ctk runtime configure &lt;span class="nt"&gt;--runtime&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;containerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the configuration file to ensure &lt;code&gt;SystemdCgroup = true&lt;/code&gt; is set, which is required by modern Kubernetes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/containerd/config.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart &lt;code&gt;containerd&lt;/code&gt; to apply the changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart containerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Deploy the NVIDIA Device Plugin for Kubernetes
&lt;/h3&gt;

&lt;p&gt;The NVIDIA Device Plugin runs as a DaemonSet across your cluster. It constantly monitors the node's GPU capacity and exposes it to the &lt;code&gt;kubelet&lt;/code&gt;, allowing the Kubernetes scheduler to track available GPUs.&lt;/p&gt;

&lt;p&gt;Apply the official NVIDIA Device Plugin YAML from your master node:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.4/nvidia-device-plugin.yml]&lt;span class="o"&gt;(&lt;/span&gt;https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.4/nvidia-device-plugin.yml&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify that the DaemonSet pods are running securely:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-n&lt;/span&gt; kube-system &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nvidia-device-plugin-ds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check if your node is correctly advertising GPU capacity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe node &amp;lt;your-node-name&amp;gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;nvidia.com/gpu]&lt;span class="o"&gt;(&lt;/span&gt;https://nvidia.com/gpu&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see an output indicating the exact number of GPUs available for allocation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Test GPU Allocation with a Pod
&lt;/h3&gt;

&lt;p&gt;Finally, deploy a test workload to ensure the Kubernetes scheduler successfully grants GPU access to a container.&lt;/p&gt;

&lt;p&gt;Create a file named &lt;code&gt;gpu-pod.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Pod&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpu-test-pod&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;restartPolicy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;OnFailure&lt;/span&gt;
  &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cuda-container&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nvidia/cuda:12.2.0-base-ubuntu22.04&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;nvidia-smi"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;limits&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;nvidia.com/gpu&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;&lt;span class="na"&gt;(https://nvidia.com/gpu)&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; gpu-pod.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check the Pod's logs to confirm it executed &lt;code&gt;nvidia-smi&lt;/code&gt; successfully from inside the K8s cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl logs gpu-test-pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You have successfully configured a bare-metal Kubernetes environment to recognize, manage, and allocate NVIDIA GPUs. By laying down the host drivers, linking containerd via the NVIDIA Container Toolkit, and orchestrating it all with the K8s Device Plugin, your cluster is now ready to handle intensive AI inference and ML training workloads with zero virtualization overhead.&lt;/p&gt;

&lt;p&gt;For enterprise-grade reliability and uncompromised raw computing power, consider deploying your next Kubernetes cluster on &lt;a href="https://www.gpuyard.com/tutorials/howto/configure-bare-metal-kubernetes-gpu/" rel="noopener noreferrer"&gt;GPUYard&lt;/a&gt;. Explore our high-performance Bare Metal Dedicated Servers to build a resilient, scalable, and highly available infrastructure tailored specifically for AI orchestration.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>nvidia</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Build a Production-Ready Private RAG Pipeline with vLLM, LangChain, and Dedicated GPUs</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 01 May 2026 06:20:23 +0000</pubDate>
      <link>https://dev.to/gpuyard/how-to-build-a-production-ready-private-rag-pipeline-with-vllm-langchain-and-dedicated-gpus-3c</link>
      <guid>https://dev.to/gpuyard/how-to-build-a-production-ready-private-rag-pipeline-with-vllm-langchain-and-dedicated-gpus-3c</guid>
      <description>&lt;p&gt;Deploying a Retrieval-Augmented Generation (RAG) pipeline is the standard approach for allowing LLMs to securely interact with proprietary data. However, relying on public APIs introduces latency and data sovereignty risks.&lt;/p&gt;

&lt;p&gt;By self-hosting your inference architecture, you retain absolute data sovereignty. This guide demonstrates how to architect a high-performance, fully private RAG pipeline using &lt;strong&gt;vLLM&lt;/strong&gt;, &lt;strong&gt;LangChain&lt;/strong&gt;, and &lt;strong&gt;Qdrant&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  🛠️ Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OS:&lt;/strong&gt; Ubuntu 22.04 LTS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU:&lt;/strong&gt; Minimum 24GB VRAM (NVIDIA RTX 3090/4090). 70B+ models require A100/H100 clusters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drivers:&lt;/strong&gt; NVIDIA Drivers (v535+) &amp;amp; CUDA 12.1+&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment:&lt;/strong&gt; Python 3.10+, Docker &amp;amp; Docker Compose&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Step 1: Prepare the GPU Environment
&lt;/h3&gt;

&lt;p&gt;Verify your GPU availability and setup a virtual environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi

python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv rag_env
&lt;span class="nb"&gt;source &lt;/span&gt;rag_env/bin/activate
pip &lt;span class="nb"&gt;install &lt;/span&gt;vllm langchain langchain-openai langchain-community sentence-transformers qdrant-client pypdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🤖 Step 2: Deploy vLLM API Server
&lt;/h3&gt;

&lt;p&gt;vLLM is an optimized inference engine that uses PagedAttention to maximize throughput. We will serve &lt;code&gt;Meta-Llama-3-8B-Instruct&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; vllm.entrypoints.openai.api_server &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--model&lt;/span&gt; meta-llama/Meta-Llama-3-8B-Instruct &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--dtype&lt;/span&gt; auto &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--api-key&lt;/span&gt; private-rag-key &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 4096 &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Pro Tip: Running LLMs on virtualized cloud instances often introduces hypervisor overhead. For maximum tokens-per-second (TPS), deploying directly on bare-metal dedicated GPU servers is recommended.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  📦 Step 3: Initialize Qdrant (Vector Database)
&lt;/h3&gt;

&lt;p&gt;Spin up a local Qdrant instance via Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 6333:6333 &lt;span class="nt"&gt;-p&lt;/span&gt; 6334:6334 &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;/qdrant_storage:/qdrant/storage:z &lt;span class="se"&gt;\&lt;/span&gt;
    qdrant/qdrant
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔗 Step 5: Build the Retrieval Loop
&lt;/h3&gt;

&lt;p&gt;Connect LangChain to your local vLLM API and Qdrant to execute queries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;from langchain_openai import ChatOpenAI

llm &lt;span class="o"&gt;=&lt;/span&gt; ChatOpenAI&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="nv"&gt;openai_api_base&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:8000/v1"&lt;/span&gt;,
    &lt;span class="nv"&gt;openai_api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"private-rag-key"&lt;/span&gt;,
    &lt;span class="nv"&gt;model_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"meta-llama/Meta-Llama-3-8B-Instruct"&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# ... (Add your retrieval chain logic here)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;from langchain_community.document_loaders import PyPDFLoader
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import Qdrant

&lt;span class="c"&gt;# Load and Chunk&lt;/span&gt;
loader &lt;span class="o"&gt;=&lt;/span&gt; PyPDFLoader&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"enterprise_policy.pdf"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
documents &lt;span class="o"&gt;=&lt;/span&gt; loader.load&lt;span class="o"&gt;()&lt;/span&gt;

&lt;span class="c"&gt;# Local Embeddings (Running on CUDA)&lt;/span&gt;
embeddings &lt;span class="o"&gt;=&lt;/span&gt; HuggingFaceEmbeddings&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="nv"&gt;model_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"BAAI/bge-large-en-v1.5"&lt;/span&gt;,
    &lt;span class="nv"&gt;model_kwargs&lt;/span&gt;&lt;span class="o"&gt;={&lt;/span&gt;&lt;span class="s1"&gt;'device'&lt;/span&gt;: &lt;span class="s1"&gt;'cuda'&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;

qdrant &lt;span class="o"&gt;=&lt;/span&gt; Qdrant.from_documents&lt;span class="o"&gt;(&lt;/span&gt;
    documents,
    embeddings,
    &lt;span class="nv"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:6333"&lt;/span&gt;,
    &lt;span class="nv"&gt;collection_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"enterprise_knowledge"&lt;/span&gt;,
&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  💡 Conclusion &amp;amp; Full Source Code
&lt;/h3&gt;

&lt;p&gt;Building a private RAG pipeline ensures your data never leaks to external providers while maintaining top-tier performance. &lt;/p&gt;

&lt;p&gt;For the complete Python scripts, detailed troubleshooting of CUDA OOM errors, and scaling strategies, check out the original post:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.gpuyard.com/tutorials/howto/build-private-rag-pipeline-vllm-langchain/" rel="noopener noreferrer"&gt;Read the Full Tutorial on GPUYard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>devops</category>
    </item>
    <item>
      <title>The Core Count Myth: Why 128Hz Game Servers Demand 5.0GHz+ CPUs</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 24 Apr 2026 07:10:57 +0000</pubDate>
      <link>https://dev.to/gpuyard/the-core-count-myth-why-128hz-game-servers-demand-50ghz-cpus-33e6</link>
      <guid>https://dev.to/gpuyard/the-core-count-myth-why-128hz-game-servers-demand-50ghz-cpus-33e6</guid>
      <description>&lt;p&gt;As we navigate the demands of multiplayer gaming in 2026, the underlying server infrastructure has fundamentally shifted. With Unreal Engine 5 pushing massive, highly detailed environments and complex AI behaviors directly to the server side, the conventional "high core-count" enterprise approach is officially obsolete for game hosting.&lt;/p&gt;

&lt;p&gt;For infrastructure architects and studio DevOps teams, the mandate is clear: &lt;strong&gt;single-thread performance dictates gameplay quality.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Core Count Myth in Game Server Hosting
&lt;/h2&gt;

&lt;p&gt;In traditional web hosting, maximizing core count is the standard. However, game servers operate on a sequential logic model. The "main game loop"—which validates player movement and calculates hit registration—cannot be easily split across 64 different cores.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Bottleneck:&lt;/strong&gt; Event B relies on the outcome of Event A.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Reality:&lt;/strong&gt; A 128-core processor at 2.5GHz will perform significantly worse in a match than an 8-core processor running at 5.2GHz.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While multiple cores allow you to host more individual matches, the performance ceiling of a single competitive match is dictated entirely by single-core frequency.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Math Behind 128Hz Tick Rates
&lt;/h2&gt;

&lt;p&gt;In 2026, the "tick rate" is the definitive metric of server quality. A 128Hz tick rate means the server updates the game state 128 times every second.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The 7.8ms Window:&lt;/strong&gt; At 128Hz, the CPU has exactly &lt;strong&gt;7.8 milliseconds&lt;/strong&gt; to process player inputs, physics, and networking for every single frame.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the CPU lacks the raw frequency to finish within that tight window, the server "drops ticks," leading to "ghost bullets," stuttering, and player frustration. High clock-speed processors ensure the compute time remains well under the frame budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Infrastructure Comparison: Cloud vs. Bare Metal
&lt;/h2&gt;

&lt;p&gt;To understand why standard virtualization fails, look at the technical overhead comparison between standard VMs and bare-metal servers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Standard Cloud VM (AWS/GCP)&lt;/th&gt;
&lt;th&gt;High-Freq Bare Metal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CPU Clock Speed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2.5GHz - 3.2GHz (Shared)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5.0GHz+ (Dedicated)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Processing Path&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Virtualization Layer (Hypervisor)&lt;/td&gt;
&lt;td&gt;Direct Hardware Access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Variable (Noisy Neighbors)&lt;/td&gt;
&lt;td&gt;Deterministic &amp;amp; Consistent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;128Hz Stability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Frequent "Dropped Ticks"&lt;/td&gt;
&lt;td&gt;Guaranteed Stability&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  4. Handling UE5 Server-Authoritative Architecture
&lt;/h2&gt;

&lt;p&gt;Modern game design has moved to strictly server-authoritative architectures to eliminate cheating. This places a massive computational load on the CPU:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Environments:&lt;/strong&gt; When a building collapses in a match, the server CPU computes the debris physics for all 100+ players simultaneously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next-Gen AI:&lt;/strong&gt; Highly complex, AI-driven NPCs use pathfinding algorithms that consume massive CPU cycles per tick.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Standard enterprise processors choke under these simultaneous calculations. High-frequency CPUs power through these workloads, maintaining a perfectly synchronized experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary: Future-Proof Your Infrastructure
&lt;/h2&gt;

&lt;p&gt;Hosting next-gen multiplayer in 2026 isn't about how many cores you have—it’s about how fast your fastest core can run. Prioritizing single-core frequency is the only way to eliminate server-side lag and deliver the 128Hz+ experience players demand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to bypass the limitations of the cloud?&lt;/strong&gt;&lt;br&gt;
Explore the raw processing power of 5.0GHz+ dedicated hardware and read our full server guides over at &lt;a href="https://www.gpuyard.com/blogs/high-clock-speed-game-server-hosting-2026/" rel="noopener noreferrer"&gt;GPUYard High-Frequency Bare-Metal Servers&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>devops</category>
      <category>architecture</category>
      <category>unrealengine</category>
    </item>
    <item>
      <title>The Blackwell Blueprint: Fine-Tuning a 70B LLM on a SINGLE GPU</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 03 Apr 2026 06:12:46 +0000</pubDate>
      <link>https://dev.to/gpuyard/the-blackwell-blueprint-fine-tuning-a-70b-llm-on-a-single-gpu-kfc</link>
      <guid>https://dev.to/gpuyard/the-blackwell-blueprint-fine-tuning-a-70b-llm-on-a-single-gpu-kfc</guid>
      <description>&lt;p&gt;The NVIDIA Blackwell architecture officially marks the end of the "Hardware-Constrained" era for Large Language Models. &lt;/p&gt;

&lt;p&gt;In previous architectures (like Hopper or Ampere), AI engineers constantly hit a "Memory Wall." Running or fine-tuning long-context, massive models required complex model sharding across massive, expensive clusters. &lt;/p&gt;

&lt;p&gt;By integrating a 2nd Generation Transformer Engine with a massive 192GB of HBM3e memory, the new &lt;strong&gt;B200 systems&lt;/strong&gt; allow enterprises to fine-tune 70B+ parameter models on a drastically reduced footprint with unprecedented thermal and compute efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 The Blackwell Advantage
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VRAM Breakthrough:&lt;/strong&gt; 192GB HBM3e allows for Llama 3 70B fine-tuning on a single GPU without complex orchestration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Throughput Mastery:&lt;/strong&gt; The new Transformer Engine delivers up to 2.2x the training speed of the H100 by utilizing native FP4/FP8 precision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fabric Speed:&lt;/strong&gt; 5th Gen NVLink provides 1.8TB/s of bidirectional bandwidth, making distributed multi-node scaling almost 100% efficient.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ The "Zero-Bottleneck" Fine-Tuning Template
&lt;/h2&gt;

&lt;p&gt;To unlock Blackwell’s native TFLOPs and utilize the FP4 hardware acceleration without losing model intelligence, your environment must be configured specifically for the &lt;code&gt;sm_100&lt;/code&gt; architecture.&lt;/p&gt;

&lt;p&gt;Below is a production-ready snippet for Parameter-Efficient Fine-Tuning (PEFT). &lt;/p&gt;

&lt;h3&gt;
  
  
  Pre-Flight Checklist
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Environment:&lt;/strong&gt; CUDA 12.8+ and PyTorch 2.4+&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kernel:&lt;/strong&gt; Use FlashAttention-3 for 2x faster attention mechanism on Blackwell Tensor Cores.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The PyTorch Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;BitsAndBytesConfig&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;peft&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LoraConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;get_peft_model&lt;/span&gt;

&lt;span class="c1"&gt;# 1. Target Blackwell's Native FP4 Capabilities
&lt;/span&gt;&lt;span class="n"&gt;quant_config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;BitsAndBytesConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;load_in_4bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;bnb_4bit_compute_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="n"&gt;bnb_4bit_quant_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fp4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# Optimized strictly for Blackwell sm_100
&lt;/span&gt;    &lt;span class="n"&gt;bnb_4bit_use_double_quant&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 2. Optimized Model Loading
&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meta-llama/Meta-Llama-3-70B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;quantization_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;quant_config&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;attn_implementation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;flash_attention_2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; 
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 3. LoRA Configuration: Aggressive Scaling
&lt;/span&gt;&lt;span class="n"&gt;lora_setup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LoraConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="n"&gt;lora_alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;target_modules&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;q_proj&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;v_proj&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;k_proj&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;o_proj&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;lora_dropout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;task_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CAUSAL_LM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_peft_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lora_setup&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;B200 Optimization Applied. VRAM Ready.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Scale Your AI Infrastructure
&lt;/h2&gt;

&lt;p&gt;The transition to NVIDIA Blackwell means your organization can iterate faster and save on compute costs. Ensure your workloads are running on the most reliable, high-performance GPU stacks available today.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.gpuyard.com/tutorials/howto/fine-tune-llm-nvidia-blackwell-gpu/" rel="noopener noreferrer"&gt;Read the complete architecture breakdown on our official blog.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Powered by &lt;a href="https://www.gpuyard.com/" rel="noopener noreferrer"&gt;GPUYard&lt;/a&gt; — Top-tier NVIDIA Dedicated Servers pre-optimized for LLM fine-tuning.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>The 600W Thermal Wall: Why On-Premise AI Infrastructure is Failing in 2026</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Sat, 28 Mar 2026 11:48:13 +0000</pubDate>
      <link>https://dev.to/gpuyard/the-600w-thermal-wall-why-on-premise-ai-infrastructure-is-failing-in-2026-1h70</link>
      <guid>https://dev.to/gpuyard/the-600w-thermal-wall-why-on-premise-ai-infrastructure-is-failing-in-2026-1h70</guid>
      <description>&lt;p&gt;The enterprise hardware landscape has crossed a point of no return. As organizations rapidly scale Large Language Models (LLMs) and complex &lt;a href="https://www.gpuyard.com/products/nvidia/h100/" rel="noopener noreferrer"&gt;AI inference workloads&lt;/a&gt;, hardware manufacturers have delivered incredibly powerful silicon. &lt;/p&gt;

&lt;p&gt;But this power comes with an inescapable physical byproduct: extreme heat. &lt;/p&gt;

&lt;p&gt;Welcome to the 600W era. A single modern AI GPU drawing 600 watts of power introduces a critical barrier for businesses attempting to host their own hardware. We call this the &lt;strong&gt;thermal wall&lt;/strong&gt;—and it's turning from an IT headache into a full-blown infrastructure crisis.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Throttling Trap: How Heat Kills Your ROI
&lt;/h2&gt;

&lt;p&gt;To understand why traditional on-premise AI hosting is failing, we have to look at how modern silicon protects itself. &lt;/p&gt;

&lt;p&gt;When a processor exceeds its safe operating temperature, it triggers a self-preservation protocol known as &lt;strong&gt;thermal throttling&lt;/strong&gt;. The hardware intentionally drops its clock speed and voltage to reduce heat and prevent catastrophic melting. &lt;/p&gt;

&lt;p&gt;Financially, this is a disaster. Imagine investing hundreds of thousands of dollars into a high-performance 8-GPU server. If you house it in a standard communications closet or an older server room, the ambient temperature spikes almost instantly. The GPUs throttle to survive, and suddenly, you are getting the computational output of hardware that costs a fraction of what you paid. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why Traditional HVAC Can't Keep Up
&lt;/h2&gt;

&lt;p&gt;Let’s break down the math of a standard AI deployment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The GPUs:&lt;/strong&gt; 8 cards at 600W each = 4,800 watts (4.8kW) of continuous thermal output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The System:&lt;/strong&gt; Add dual enterprise CPUs, massive RAM, and NVMe arrays, and a single server easily pulls &lt;strong&gt;6kW&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traditional building HVAC systems are designed for human comfort, not high-density server racks. Even older data centers designed for 10kW-per-rack limits will fail here, as a single AI server eats up nearly that entire thermal budget in just a few rack units. &lt;/p&gt;

&lt;p&gt;Relying on active air cooling for these machines results in localized hot spots, rapid fan degradation, and inevitable system failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Data Center Solution: Liquid Cooling &amp;amp; High-Density Power
&lt;/h2&gt;

&lt;p&gt;To continuously operate next-generation AI hardware at peak capacity, infrastructure has to be engineered for heat from the ground up. Specialized facilities employ:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Direct-to-Chip (D2C) Liquid Cooling:&lt;/strong&gt; Closed-loop systems with cold plates mounted directly to the GPU and CPU dies, transferring heat far more efficiently than air.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Precision Airflow:&lt;/strong&gt; Strict hot-aisle/cold-aisle containment to prevent thermal recycling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-Density Power Delivery:&lt;/strong&gt; Specialized 3-phase, 208V/240V power circuits that standard commercial grids simply cannot support safely.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Strategic Move: Rent, Don't Build
&lt;/h2&gt;

&lt;p&gt;Retrofitting an existing corporate office to handle 600W GPUs is a massive CapEx nightmare. It requires upgrading the building's electrical grid and installing commercial-grade liquid cooling loops. &lt;/p&gt;

&lt;p&gt;For most enterprises, the smartest strategy is to bypass these upgrades entirely. &lt;/p&gt;

&lt;p&gt;By migrating to purpose-built data centers, organizations can instantly access ready-to-use compute environments. Providers like &lt;a href="https://www.gpuyard.com/gpu-servers/" rel="noopener noreferrer"&gt;GPUYard&lt;/a&gt; shift the burden of thermal management and power delivery entirely to infrastructure experts. You retain full root access and control over your dedicated GPU servers, completely risk-free.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Software innovation in AI is ultimately bound by physical hardware infrastructure. Businesses that pivot toward purpose-built hosted solutions will maintain maximum performance, optimize their ROI, and leave the thermal engineering to the experts.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on the &lt;a href="https://www.gpuyard.com/blogs/600w-thermal-wall-on-premise-ai-infrastructure/" rel="noopener noreferrer"&gt;GPUYard Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>hardware</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Ultimate Guide - Setting Up NVIDIA GPU Passthrough on Ubuntu 24.04 Bare Metal</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 20 Mar 2026 09:12:30 +0000</pubDate>
      <link>https://dev.to/gpuyard/ultimate-guide-setting-up-nvidia-gpu-passthrough-on-ubuntu-2404-bare-metal-58c4</link>
      <guid>https://dev.to/gpuyard/ultimate-guide-setting-up-nvidia-gpu-passthrough-on-ubuntu-2404-bare-metal-58c4</guid>
      <description>&lt;p&gt;Deploying large language models (LLMs) or generative AI on a bare-metal dedicated server gives you unmatched performance, zero virtualization overhead, and complete data privacy. However, out of the box, Docker containers are isolated from your host machine's physical hardware. &lt;/p&gt;

&lt;p&gt;If you run a standard AI container, it simply cannot see your RTX 4090 or A100 GPU.&lt;/p&gt;

&lt;p&gt;To break this isolation and achieve true Docker GPU passthrough, you need to bridge your container engine with your host’s hardware using the &lt;strong&gt;NVIDIA Container Toolkit&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this guide, backed by our experience deploying thousands of AI-ready bare metal servers at &lt;a href="https://www.gpuyard.com" rel="noopener noreferrer"&gt;GPUYard&lt;/a&gt;, we will walk you through the exact steps to securely configure Docker with NVIDIA GPUs on Ubuntu 24.04.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites: The Bare Metal Foundation
&lt;/h2&gt;

&lt;p&gt;Before configuring Docker, your server must recognize its hardware. At GPUYard, our bare-metal servers come pre-provisioned, but you should always verify your host environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A Dedicated GPU Server:&lt;/strong&gt; Running Ubuntu 24.04 LTS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Root or Sudo Access:&lt;/strong&gt; Required for package installation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NVIDIA Drivers Installed:&lt;/strong&gt; Verify this by running &lt;code&gt;nvidia-smi&lt;/code&gt; in your terminal. You should see a table displaying your GPU model and CUDA version. &lt;em&gt;(If you see "command not found," install the proprietary NVIDIA drivers first).&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 1: Avoid the Ubuntu 24.04 Docker "Snap" Trap 🛑
&lt;/h2&gt;

&lt;p&gt;The most common reason developers fail to pass GPUs into Docker on Ubuntu 24.04 is the default installation method. If you installed Docker via the Ubuntu App Center or used &lt;code&gt;snap install docker&lt;/code&gt;, GPU passthrough will fail with permission errors. &lt;/p&gt;

&lt;p&gt;Snap packages use strict AppArmor confinement, preventing Docker from accessing the &lt;code&gt;/dev/nvidia*&lt;/code&gt; hardware files on your host. We must remove the Snap version and use the official Docker APT repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purge the Snap version:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap remove &lt;span class="nt"&gt;--purge&lt;/span&gt; docker
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get remove docker docker-engine docker.io containerd runc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Install the Official Docker Engine
&lt;/h2&gt;

&lt;p&gt;Now, install the unconfined, official Docker Engine directly from Docker’s verified repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set up the repository and GPG keys:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;ca-certificates curl
&lt;span class="nb"&gt;sudo install&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; 0755 &lt;span class="nt"&gt;-d&lt;/span&gt; /etc/apt/keyrings
&lt;span class="nb"&gt;sudo &lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;https://download.docker.com/linux/ubuntu/gpg]&lt;span class="o"&gt;(&lt;/span&gt;https://download.docker.com/linux/ubuntu/gpg&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /etc/apt/keyrings/docker.asc
&lt;span class="nb"&gt;sudo chmod &lt;/span&gt;a+r /etc/apt/keyrings/docker.asc

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"deb [arch=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dpkg &lt;span class="nt"&gt;--print-architecture&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; signed-by=/etc/apt/keyrings/docker.asc] [https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
  &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; /etc/os-release &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$VERSION_CODENAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; stable"&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/docker.list &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Install Docker:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Install the NVIDIA Container Toolkit
&lt;/h2&gt;

&lt;p&gt;With a clean Docker engine running, we install the NVIDIA Container Toolkit. This software acts as the critical translation layer between your bare-metal CUDA drivers and your isolated containers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add NVIDIA's production repository and install the toolkit:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;https://nvidia.github.io/libnvidia-container/gpgkey]&lt;span class="o"&gt;(&lt;/span&gt;https://nvidia.github.io/libnvidia-container/gpgkey&lt;span class="o"&gt;)&lt;/span&gt; | &lt;span class="nb"&gt;sudo &lt;/span&gt;gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-L&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list]&lt;span class="o"&gt;(&lt;/span&gt;https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list&lt;span class="o"&gt;)&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g'&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/nvidia-container-toolkit.list

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; nvidia-container-toolkit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Configure the Docker Runtime (daemon.json)
&lt;/h2&gt;

&lt;p&gt;The toolkit is installed, but Docker needs to be explicitly instructed to use it. We will use the &lt;code&gt;nvidia-ctk&lt;/code&gt; command-line utility to automatically inject the NVIDIA runtime into Docker's configuration file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nvidia-ctk runtime configure &lt;span class="nt"&gt;--runtime&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;docker
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Expert Tip:&lt;/strong&gt; You can verify this worked by running cat /etc/docker/daemon.json. You will see "nvidia" listed under the "runtimes" key.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 5: The Bare Metal Verification Test
&lt;/h2&gt;

&lt;p&gt;Let's prove the isolation barrier is broken. We will spin up an official NVIDIA CUDA container and ask it to read our bare-metal hardware.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;--gpus&lt;/span&gt; all nvidia/cuda:12.2.2-base-ubuntu24.04 nvidia-smi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If successful, the terminal will output your GPU statistics table. Because we used the --gpus all flag, this output proves that your Docker container now has direct, unrestricted access to your physical GPU! 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: Deploying AI with Docker Compose
&lt;/h2&gt;

&lt;p&gt;Running terminal commands is great for testing, but deploying production AI models (like Llama 3 or Stable Diffusion) requires &lt;code&gt;docker-compose.yml&lt;/code&gt;. You must use the specific deploy specification to reserve GPU hardware.&lt;/p&gt;

&lt;p&gt;Here is a template to deploy Ollama with full bare-metal GPU acceleration:&lt;/p&gt;

&lt;p&gt;YAML&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;ollama-ai&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ollama/ollama:latest&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpuyard-ollama&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;11434:11434"&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./ollama_data:/root/.ollama&lt;/span&gt;
    &lt;span class="na"&gt;deploy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;reservations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;devices&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;driver&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nvidia&lt;/span&gt;
              &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;all&lt;/span&gt; &lt;span class="c1"&gt;# Passes all available GPUs to the container&lt;/span&gt;
              &lt;span class="na"&gt;capabilities&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;gpu&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save this as &lt;code&gt;docker-compose.yml&lt;/code&gt; and run &lt;code&gt;sudo docker compose up -d&lt;/code&gt;. You are now hosting your own private AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting Common Errors
&lt;/h2&gt;

&lt;p&gt;Even on standard Ubuntu 24.04 setups, you might encounter these snags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Error: "could not select device driver with capabilities: [[gpu]]"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Cause:&lt;/strong&gt; Docker isn't aware of the NVIDIA runtime.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Fix:&lt;/strong&gt; You likely forgot to restart the Docker daemon in Step 4. Run sudo systemctl restart docker.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Error: "Failed to initialize NVML: Driver/library version mismatch"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Cause:&lt;/strong&gt; Your host system updated the NVIDIA Linux kernel drivers in the background, but the old driver is still loaded in memory.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Fix:&lt;/strong&gt; A simple bare-metal server reboot (sudo reboot) will align the kernel modules.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scale Your AI Infrastructure with GPUYard
&lt;/h3&gt;

&lt;p&gt;Setting up the software is only half the battle; having the right hardware is what dictates your AI's performance. Cloud VPS environments throttle your VRAM and share your PCI-e lanes.&lt;/p&gt;

&lt;p&gt;If you want maximum token-per-second generation and uncompromising privacy, you need Bare Metal. &lt;a href="https://www.gpuyard.com" rel="noopener noreferrer"&gt;&lt;strong&gt;Explore GPUYard’s high-performance Dedicated GPU Servers&lt;/strong&gt;&lt;/a&gt;—custom-built for seamless Docker deployments and heavy AI workloads.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>ubuntu</category>
      <category>ai</category>
      <category>devops</category>
    </item>
    <item>
      <title>LLM Inference Benchmarks 2026: NVIDIA H100 vs L40S vs A100 – Which Gives the Best ROI?</title>
      <dc:creator>Peter Chambers</dc:creator>
      <pubDate>Fri, 13 Mar 2026 09:57:17 +0000</pubDate>
      <link>https://dev.to/gpuyard/llm-inference-benchmarks-2026-nvidia-h100-vs-l40s-vs-a100-which-gives-the-best-roi-kci</link>
      <guid>https://dev.to/gpuyard/llm-inference-benchmarks-2026-nvidia-h100-vs-l40s-vs-a100-which-gives-the-best-roi-kci</guid>
      <description>&lt;p&gt;If you are an MLOps engineer, CTO, or AI infrastructure lead in 2026, you already know that the landscape of large language model (LLM) deployment has fundamentally shifted. &lt;/p&gt;

&lt;p&gt;The days of simply throwing the most expensive hardware at a model and hoping for the best are over. Today, scaling AI is an exercise in unit economics.&lt;/p&gt;

&lt;p&gt;The question we hear constantly at GPUYard is no longer just, &lt;em&gt;"Which GPU is fastest?"&lt;/em&gt; but rather, &lt;em&gt;"Which GPU gives me the lowest cost-per-token without breaching my latency SLAs?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this deep dive, we are going back to the data. We will compare the NVIDIA H100, the versatile L40S, and the legacy A100, breaking down real-world LLM inference benchmarks and pricing frameworks to help you maximize your Return on Investment (ROI) in cloud GPU hosting.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ The 2026 Contenders: Architecture &amp;amp; Bottlenecks
&lt;/h2&gt;

&lt;p&gt;Before we look at the numbers, let’s talk about how these GPUs are fundamentally built. When running LLM inference, your primary bottleneck is rarely raw compute (FLOPS); it is almost always &lt;strong&gt;memory bandwidth&lt;/strong&gt;. The speed at which you can move model weights from the VRAM to the Tensor Cores dictates your token generation speed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.gpuyard.com/products/nvidia/h100/" rel="noopener noreferrer"&gt;NVIDIA H100&lt;/a&gt; (Hopper) - The Premium Bullet Train:&lt;/strong&gt; Featuring 80GB of HBM3 memory pushing a massive 3.35 TB/s of bandwidth, the H100 also introduces native FP8 precision via its Transformer Engine. It is built specifically to accelerate the math that powers LLMs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NVIDIA L40S (Ada Lovelace) - The Versatile Hybrid:&lt;/strong&gt; With 48GB of GDDR6 memory (864 GB/s bandwidth), the L40S doesn't have the brute force of Hopper, but its aggressive price-to-performance ratio and 4th-gen Tensor Cores make it a dark horse for smaller models and multimodal AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.gpuyard.com/products/nvidia/a100/" rel="noopener noreferrer"&gt;NVIDIA A100&lt;/a&gt; (Ampere) - The Legacy Cargo Ship:&lt;/strong&gt; The workhorse of the first generative AI wave. With up to 80GB of HBM2e (2 TB/s bandwidth), it lacks FP8 support but remains highly relevant for batch processing and offline workloads where extreme low latency isn't required.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📊 The ROI Equation: Hourly Price vs. Cost-Per-Token
&lt;/h2&gt;

&lt;p&gt;The biggest mistake enterprise teams make is looking exclusively at the hourly rental rate. In 2026, GPU cloud hosting pricing has stabilized, but the efficiency of that spend varies wildly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Average Hourly Rates (On-Demand):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;H100:&lt;/strong&gt; ~$2.50 - $4.00/hr &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A100:&lt;/strong&gt; ~$0.80 - $1.50/hr &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;L40S:&lt;/strong&gt; ~$0.50 - $0.90/hr&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;If an A100 is three times cheaper per hour than an H100, you should use the A100, right? &lt;strong&gt;Wrong.&lt;/strong&gt; If you are running a real-time chat application with a 70B model, the H100 processes requests up to 3x to 5x faster than the A100 (and radically faster when utilizing FP8 quantization). Because you are generating tokens so much faster, your &lt;strong&gt;Cost per 1 Million Tokens&lt;/strong&gt; is actually lower on the H100.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 The GPUYard Decision Framework
&lt;/h2&gt;

&lt;p&gt;To maximize your budget, deploy based on your workload's specific profile:&lt;/p&gt;

&lt;h3&gt;
  
  
  Choose the NVIDIA H100 if:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;You are serving models larger than 30B parameters.&lt;/li&gt;
&lt;li&gt;You have strict real-time latency SLAs (e.g., interactive customer service bots where users are waiting for the cursor to blink).&lt;/li&gt;
&lt;li&gt;You need multi-GPU scaling via NVLink (The L40S relies on PCIe Gen4, creating a massive traffic jam for multi-GPU scaling).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Choose the NVIDIA L40S if:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;You are running smaller LLMs (&amp;lt;13B), RAG adapters, or daily fine-tunes.&lt;/li&gt;
&lt;li&gt;Your pipeline includes Vision-Language models or image/video generation (where the Ada Lovelace architecture excels).&lt;/li&gt;
&lt;li&gt;You want the absolute best cost-per-token for containerized, small-scale inference.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Choose the NVIDIA A100 if:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;You are running massive batch inference jobs (offline document processing, sentiment analysis) where throughput matters, but TTFT (Time-to-First-Token) latency does not.&lt;/li&gt;
&lt;li&gt;You have legacy codebases heavily optimized for Ampere that you aren't ready to migrate.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💡 Real-World FAQ from AI Professionals
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: Can I run a 70B parameter model on a single 80GB GPU?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;A:&lt;/strong&gt; Yes, but only with quantization. A standard 16-bit 70B model requires about 140GB of VRAM. By using 8-bit or 4-bit quantization (like AWQ or GPTQ), you can squeeze it onto a single H100 or A100. However, the H100's native FP8 support will give you significantly better performance and less quality degradation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Is the A100 officially obsolete in 2026?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;A:&lt;/strong&gt; Not at all. At sub-$1.00 hourly rates on many cloud providers, the A100 offers incredible value for asynchronous tasks, background data processing, and research where time-to-market isn't measured in milliseconds.&lt;/p&gt;




&lt;h3&gt;
  
  
  Optimize Your Infrastructure
&lt;/h3&gt;

&lt;p&gt;Navigating the complexities of tensor cores, memory bandwidth, and vLLM throughput metrics doesn't have to be a guessing game. The hardware you choose directly impacts your margins. &lt;/p&gt;

&lt;p&gt;At GPUYard, we specialize in matching your exact inference pipeline to the most cost-efficient, high-performance GPU clusters available.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.gpuyard.com/blogs/llm-inference-benchmarks-h100-l40s-a100-roi/" rel="noopener noreferrer"&gt;Read the full deep dive and see the exact throughput benchmarks on GPUYard here&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What hardware are you currently running your inference on? Let's discuss in the comments below!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>mlops</category>
      <category>nvidia</category>
    </item>
  </channel>
</rss>
