1<!doctype html><html lang="en" ><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name="viewport" content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover" ><meta name="generator" content="Jekyll v4.4.1" /><meta property="og:title" content="How I Build and Test vLLM for NVIDIA GB10" /><meta property="og:locale" content="en" /><meta name="description" content="Techno Tim Home - Documentation and More" /><meta name="twitter:description" property="og:description" content="Techno Tim Home - Documentation and More" /><link rel="canonical" href="https://technotim.com/posts/vllm-gb10-model-verification/" /><meta property="og:url" content="https://technotim.com/posts/vllm-gb10-model-verification/" /><meta property="og:site_name" content="Techno Tim" /><meta property="og:image" content="https://images.technotim.com/assets/img/headers/spark-build-server.webp" /><meta property="og:type" content="article" /><meta property="article:published_time" content="2026-09-28T08:00:00-05:00" /><meta property="article:modified_time" content="2026-09-28T21:06:28-05:00" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://images.technotim.com/assets/img/headers/spark-build-server.webp" /><meta name="twitter:title" content="How I Build and Test vLLM for NVIDIA GB10" /><meta name="twitter:site" content="@technotimlive" />
1<script type="application/ld+json"> {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2026-09-28T21:06:28-05:00","datePublished":"2026-09-28T08:00:00-05:00","description":"Techno Tim Home - Documentation and More","headline":"How I Build and Test vLLM for NVIDIA GB10","image":{"lqip":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAUACgMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APLbf4gftAfA/UfCM+lfFLw/q1z8XfDPhD4havb3Hw/uV0DT77x9dapPqGmWmhaj411uP+y7bVL/AFLxBDaR3VranXdV1C7S1gtZLextf53y7idQo1XHA2nVc586xKvzSc5P2i+rcs1zylO0FSTlObd7x5frsryrEywuXVo5jOnLOMPQxVWMKEeSm8R7sYx5qsp2g5OcuSdKNVt+5BWt+T/xPsvi7ovxL+Iejr8ZtW26T458W6Yv9n6NLpthiw1/ULUfYtO/4SC6+wWmIv8ARrL7Vc/ZYdkHnzbPMbgpzozpwm6dVOcIyajWSinKKbUV7F2V3or6LQ8fF4HMKeLxVOWdY+coYitCU1VxEVOUakk5KLxU3FSauouc2r2cpbv/AP/Z","url":"https://images.technotim.com/assets/img/headers/spark-build-server.webp","@type":"imageObject"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://technotim.com/posts/vllm-gb10-model-verification/"},"url":"https://technotim.com/posts/vllm-gb10-model-verification/"}</script>
1<title>How I Build and Test vLLM for NVIDIA GB10 | Techno Tim</title><link rel="icon" type="image/png" href="/assets/img/favicons/favicon-96x96.png" sizes="96x96"><link rel="icon" type="image/svg+xml" href="/assets/img/favicons/favicon.svg"><link rel="shortcut icon" href="/assets/img/favicons/favicon.ico"><link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png"><link rel="preconnect" href="https://cdn.jsdelivr.net" ><link rel="dns-prefetch" href="https://cdn.jsdelivr.net" ><link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css"><style type="text/css">@font-face {font-family:'Lato';font-style:normal;font-weight:300;src:url(/cf-fonts/s/lato/5.2.7/latin/300/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Lato';font-style:normal;font-weight:300;src:url(/cf-fonts/s/lato/5.2.7/latin-ext/300/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Lato';font-style:normal;font-weight:400;src:url(/cf-fonts/s/lato/5.2.7/latin-ext/400/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Lato';font-style:normal;font-weight:400;src:url(/cf-fonts/s/lato/5.2.7/latin/400/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:url(/cf-fonts/s/source-sans-pro/5.2.4/cyrillic-ext/400/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:url(/cf-fonts/s/source-sans-pro/5.2.4/cyrillic/400/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:url(/cf-fonts/s/source-sans-pro/5.2.4/latin/400/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:url(/cf-fonts/s/source-sans-pro/5.2.4/latin-ext/400/normal.woff2);unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:url(/cf-fonts/s/source-sans-pro/5.2.4/vietnamese/400/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:url(/cf-fonts/s/source-sans-pro/5.2.4/greek-ext/400/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:url(/cf-fonts/s/source-sans-pro/5.2.4/greek/400/normal.woff2);unicode-range:U+0370-03FF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:600;src:url(/cf-fonts/s/source-sans-pro/5.2.4/cyrillic/600/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:600;src:url(/cf-fonts/s/source-sans-pro/5.2.4/greek-ext/600/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:600;src:url(/cf-fonts/s/source-sans-pro/5.2.4/latin-ext/600/normal.woff2);
1unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:600;src:url(/cf-fonts/s/source-sans-pro/5.2.4/greek/600/normal.woff2);unicode-range:U+0370-03FF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:600;src:url(/cf-fonts/s/source-sans-pro/5.2.4/cyrillic-ext/600/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:600;src:url(/cf-fonts/s/source-sans-pro/5.2.4/latin/600/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:600;src:url(/cf-fonts/s/source-sans-pro/5.2.4/vietnamese/600/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:url(/cf-fonts/s/source-sans-pro/5.2.4/vietnamese/700/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:url(/cf-fonts/s/source-sans-pro/5.2.4/cyrillic/700/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:url(/cf-fonts/s/source-sans-pro/5.2.4/latin/700/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:url(/cf-fonts/s/source-sans-pro/5.2.4/greek/700/normal.woff2);unicode-range:U+0370-03FF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:url(/cf-fonts/s/source-sans-pro/5.2.4/greek-ext/700/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:url(/cf-fonts/s/source-sans-pro/5.2.4/cyrillic-ext/700/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:url(/cf-fonts/s/source-sans-pro/5.2.4/latin-ext/700/normal.woff2);unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:900;src:url(/cf-fonts/s/source-sans-pro/5.2.4/latin/900/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:900;src:url(/cf-fonts/s/source-sans-pro/5.2.4/cyrillic/900/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:900;src:url(/cf-fonts/s/source-sans-pro/5.2.4/vietnamese/900/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:900;src:url(/cf-fonts/s/source-sans-pro/5.2.4/cyrillic-ext/900/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:900;src:url(/cf-fonts/s/source-sans-pro/5.2.4/greek-ext/900/normal.woff2);
1unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:900;src:url(/cf-fonts/s/source-sans-pro/5.2.4/greek/900/normal.woff2);unicode-range:U+0370-03FF;font-display:swap;}@font-face {font-family:'Source Sans Pro';font-style:normal;font-weight:900;src:url(/cf-fonts/s/source-sans-pro/5.2.4/latin-ext/900/normal.woff2);unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}</style><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@7/css/all.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2/dist/loading-attribute-polyfill.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/glightbox@3/dist/css/glightbox.min.css">
1<script src="/assets/js/dist/theme.min.js" type="c420f79e38881e500a93aad6-text/javascript"></script>
1
1<script defer src="https://cdn.jsdelivr.net/combine/npm/simple-jekyll-search@1/dest/simple-jekyll-search.min.js,npm/loading-attribute-polyfill@2/dist/loading-attribute-polyfill.umd.min.js,npm/glightbox@3/dist/js/glightbox.min.js,npm/clipboard@2/dist/clipboard.min.js,npm/dayjs@1/dayjs.min.js,npm/dayjs@1/locale/en.js,npm/dayjs@1/plugin/relativeTime.js,npm/dayjs@1/plugin/localizedFormat.js,npm/tocbot@4/dist/tocbot.min.js" type="c420f79e38881e500a93aad6-text/javascript"></script>
1
1<script defer src="/assets/js/dist/post.min.js" type="c420f79e38881e500a93aad6-text/javascript"></script>
vendor: 64 bytes, line 1
1 <script defer src="https://www.googletagmanager.com/gtag/js?id=
1G-NZ5V7DM8F5
vendor: 60 bytes, line 1
1" type="c420f79e38881e500a93aad6-text/javascript"></script>
1<script type="c420f79e38881e500a93aad6-text/javascript"> document.addEventListener('DOMContentLoaded', () => {
vendor: 130 bytes, line 1
1window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', '
1G-NZ5V7DM8F5
vendor: 4 bytes, line 1
1');
1}); </script>
1<body><a href="https://technotim.com/cdn-cgi/content?id=Y2vIniPN14uxASOk3yt3R3zrlQqQeOec6NPX2evW3xA-1790787100.0970976-1.2.1.1-bHWVPLzKOMYtfWM2uT7NIMvHpc5w6owui2h7yyoi2v4m0rBEyCbcTuCXxQXYHz0." aria-hidden="true" rel="nofollow noopener" style="display: none !important; visibility: hidden !important"></a><aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end"><header class="profile-wrapper"> <a href="/" id="avatar" class="rounded-circle">
vendor: 136 bytes, line 1
1<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="c420f79e38881e500a93aad6-|49"></script>
1<img src="https://avatars.githubusercontent.com/u/1322205?s=400&u=5b4f2219006577dc0426007fe5a02391c4899677&v=4" width="112" height="112" alt="avatar" onerror="this.style.display='none'"></a> <a class="site-title d-block" href="/">Techno Tim</a><p class="site-subtitle fst-italic mb-0">Engineer. Builder. Creator. From Code to Cloud</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class="nav"><li class="nav-item"> <a href="/" class="nav-link"> <i class="fa-fw fas fa-home"></i> <span>HOME</span> </a><li class="nav-item"> <a href="/about/" class="nav-link"> <i class="fa-fw fas fa-info-circle"></i> <span>ABOUT</span> </a><li class="nav-item"> <a href="/shop/" class="nav-link"> <i class="fa-fw fas fa-bag-shopping"></i> <span>MERCH</span> </a><li class="nav-item"> <a href="/sponsor/" class="nav-link"> <i class="fa-fw fas fa-handshake"></i> <span>SPONSOR</span> </a></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><div class="btn-group dropup"> <button type="button" class="btn btn-link nav-link" aria-label="Switch Mode" id="mode-toggle" data-bs-toggle="dropdown" ><i class="fa-regular fa-sun" data-theme-mode="light"></i><i class="fa-regular fa-moon" data-theme-mode="dark"></i><i class="fa-solid fa-display" data-theme-mode="system"></i></button><ul class="dropdown-menu rounded-3 mb-1 p-1"><li> <button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="light"><i class="fa-regular fa-sun" data-theme-mode="light"></i>Light</button><li> <button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="dark"><i class="fa-regular fa-moon" data-theme-mode="dark"></i>Dark</button><li> <button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="system"><i class="fa-solid fa-display" data-theme-mode="system"></i>System</button></ul></div><span class="icon-border"></span> <a href="https://l.technotim.com/links" aria-label="links" target="_blank" rel="noopener noreferrer" > <i class="fa-solid fa-link"></i> </a> <a href="https://twitter.com/technotimlive" aria-label="twitter" target="_blank" rel="noopener noreferrer" > <i class="fa-brands fa-x-twitter"></i> </a> <a href="https://l.technotim.com/github" aria-label="github-custom" target="_blank" rel="noopener noreferrer" > <i class="fab fa-github"></i> </a> <a href="/feed.xml" aria-label="rss" > <i class="fas fa-rss"></i> </a></div></aside><div id="main-wrapper" class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id="topbar-wrapper" class="flex-shrink-0" aria-label="Top Bar"><div id="topbar" class="d-flex align-items-center justify-content-between px-lg-3 h-100" ><nav id="breadcrumb" aria-label="Breadcrumb"> <span> <a href="/">Home</a> </span> <span>How I Build and Test vLLM for NVIDIA GB10</span></nav><button type="button" id="sidebar-trigger" class="btn btn-link" aria-label="Sidebar"> <i class="fas fa-bars fa-fw"></i> </button><div id="topbar-title"> Post</div><button type="button" id="search-trigger" class="btn btn-link" aria-label="Search"> <i class="fas fa-search fa-fw"></i> </button> <search id="search" class="align-items-center ms-3 ms-lg-0"> <i class="fas fa-search fa-fw"></i> <input class="form-control" id="search-input" type="search" aria-label="search" autocomplete="off" placeholder="Search..." > </search> <button type="button" class="btn btn-link text-decoration-none" id="search-cancel">Cancel</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><article class="px-1" data-toc="true"><header><h1 data-toc-skip>How I Build and Test vLLM for NVIDIA GB10</h1><div class="post-meta text-muted"> <span> Posted <time data-ts="1790600400" data-df="ll" data-bs-toggle="tooltip" data-bs-placement="bottom" > Sep 28, 2026 </time> </span> <span> Updated <time data-ts="1790647588" data-df="ll" data-bs-toggle="tooltip" data-bs-placement="bottom" > Sep 28, 2026 </time> </span><div class="mt-3 mb-3"> <a href="https://images.technotim.com/assets/img/headers/spark-build-server.webp" class="popup img-link preview-img blur"><img data-src="https://images.technotim.com/assets/img/headers/spark-build-server.webp" alt="Preview Image" width="1200" height="630" data-lqip="true" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAUACgMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFB
1BhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APLbf4gftAfA/UfCM+lfFLw/q1z8XfDPhD4havb3Hw/uV0DT77x9dapPqGmWmhaj411uP+y7bVL/AFLxBDaR3VranXdV1C7S1gtZLextf53y7idQo1XHA2nVc586xKvzSc5P2i+rcs1zylO0FSTlObd7x5frsryrEywuXVo5jOnLOMPQxVWMKEeSm8R7sYx5qsp2g5OcuSdKNVt+5BWt+T/xPsvi7ovxL+Iejr8ZtW26T458W6Yv9n6NLpthiw1/ULUfYtO/4SC6+wWmIv8ARrL7Vc/ZYdkHnzbPMbgpzozpwm6dVOcIyajWSinKKbUV7F2V3or6LQ8fF4HMKeLxVOWdY+coYitCU1VxEVOUakk5KLxU3FSauouc2r2cpbv/AP/Z"></a></div><div class="d-flex justify-content-between"> <span> By <em> <a href="https://l.technotim.com/twitter">Techno Tim</a> </em> </span><div> <span class="readtime" data-bs-toggle="tooltip" data-bs-placement="bottom" title="1386 words" > <em>7 min</em> read</span></div></div></div></header><div id="toc-bar" class="d-flex align-items-center justify-content-between invisible"> <span class="label text-truncate">How I Build and Test vLLM for NVIDIA GB10</span> <button type="button" class="toc-trigger btn me-1"> <i class="fa-solid fa-list-ul fa-fw"></i> </button></div><button id="toc-solo-trigger" type="button" class="toc-trigger btn btn-outline-secondary btn-sm"> <span class="label ps-2 pe-1">Contents</span> <i class="fa-solid fa-angle-right fa-fw"></i> </button> <dialog id="toc-popup" class="p-0"><div class="header d-flex flex-row align-items-center justify-content-between"><div class="label text-truncate py-2 ms-4">How I Build and Test vLLM for NVIDIA GB10</div><button id="toc-popup-close" type="button" class="btn-close btn-sm mx-3" aria-label="Close"></button></div><div id="toc-popup-content" class="px-4 py-3 pb-4"></div></dialog><div class="content"><style> /* Let the wide verification tables wrap instead of horizontally scrolling */ .table-wrapper table { table-layout: fixed; width: 100%; } .table-wrapper table th, .table-wrapper table td { white-space: normal !important; overflow-wrap: anywhere; }</style><p><a href="https://github.com/vllm-project/vllm">vLLM</a> is an open source inference and serving engine for running AI models on your own hardware. You give it a model and it handles the inference side, and it can also expose that model through an OpenAI-compatible API endpoint that applications, tools, and agents can connect to.</p><p>The NVIDIA GB10 is a little different from the GPUs most people have traditionally run vLLM on. Itâs a Grace Blackwell Superchip that combines a Blackwell GPU with a 20-core Arm CPU and 128 GB of coherent unified memory. NVIDIA uses it in the DGX Spark, and the same GB10 platform is also available in systems from other manufacturers (ASUS, Lenovo, Dell, etcâ¦).</p><p>Upstream vLLM has been adding support for GB10 and its SM121 GPU architecture, but the published vLLM wheels and Docker images still arenât built with native SM121 support. If you want a current vLLM stack built specifically for GB10, you pretty much have to build it yourself.</p><p>Thatâs why I built <a href="https://github.com/timothystewart6/vllm-gb10">vllm-gb10</a>. It packages an upstream-first vLLM stack into a Docker image built specifically for the DGX Spark and other NVIDIA GB10 systems. The project stays as close to upstream vLLM as possible, including its interfaces and implementations, without maintaining a separate Spark fork or downstream feature set. So instead of taking hours to build it yourself, you can simply pull down the container and have it running in minutes.</p><p>One thing Iâve wanted to add to the project for a while is a way to test those builds against real models before itâs released. Building the Docker image confirms stack compiled, but there are a lot of things that donât really get tested until you load a model, start sending requests, and exercise the runtime paths that model depends on.</p><p>The vllm-gb10 project also moves pretty quickly because it tracks new vLLM releases along with changes across CUDA, PyTorch, FlashInfer, NCCL, Ubuntu security updates, and the rest of the stack. On top of that, different models can exercise different quantization formats, kernels, reasoning parsers, tool calling, multimodal support, MoE, Mamba, speculative decoding, and other parts of the runtime.</p><p>I can test those things manually while Iâm working on a release, and I usually do, but Iâve always wanted that testing to be automated and repeatable and part of the release process itself. I donât want a release to depend on whether I happened to load the right model and test the right feature before publishing it, and I donât want people in the community pulling this down only to find out it doesnât work with their model.</p><p>The challenge has always been having dedicated GB10 hardware available to do it. Building the image already takes a couple of hours, and qualifying it against several models with different architectures adds a ton of work.</p><p>NVIDIA recently donated a DGX Spark to the project, and itâs now running as a self-hosted ARM64/GB10 GitHub Actions runner. The repo watches upstream releases and keeps the build inputs pinned by exact version, commit SHA, or image digest. Once an update is reviewed and merged, the Spark builds the image, pushes an immutable tag, pulls that exact image back down, runs the smoke and model verification, and only then promotes latest and publishes the release if it passes.</p><p><a href="https://images.technotim.com/assets/img/posts/vllm-gb10-model-verification/spark-0001.webp" class="popup img-link blur"><img data-src="https://images.technotim.com/assets/img/posts/vllm-gb10-model-verification/spark-0001.webp" alt="NVIDIA DGX Spark donated to vllm-gb10" data-lqip="true" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAYACgMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFB
1BhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AJ/CXw5/b8b4GeA/GPiv42/DTX7D4q6Z4l8ceFtGS68TWi2+o+LPBXiO/tbrxbJF4OWG5msnu7HVbm2s7a8t73XLI3F1JdNK9y38p1OJacaGLhTq5lKnj6FNQU5xg8PJ1MPCpJKFdutGUXU/dVKnJdwdrxbf6Tw7g+Isfw5kmLyzGZflmJlho4zLsTQjXpYxyxSxmI9tmGM5K/NiMPCrGOG9jh+WCjyOcnetP+cnxZ+2f8edI8U+JdK1H4h+JItQ0zX9Z0++i0maB9LivLLUbm2uY9Ne7WG6fT0midbNrmKK4a3EZmjSQso+8wvDeHq4bDVVXqfvKFGp7zqqXv04y1Sr2vrrbS+2h8hX4p41pVq1KrxXm06tKrUp1JxrtqVSE3Gck2otqUk2m0nZ6pbH/9k="></a> <em>The DGX Spark needed to touch some grass for the first and probably last time.</em></p><hr /><h2 id="testing-real-models-before-release"><span class="me-2">Testing real models before release</span><a href="#testing-real-models-before-release" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2><p>The verification added in <a href="https://github.com/timothystewart6/vllm-gb10/pull/143">PR #143</a> is now part of the normal release process. Every release is served and tested against the model catalog on the DGX Spark before a new Docker image is released.</p><p><a href="https://images.technotim.com/assets/img/posts/vllm-gb10-model-verification/spark-0002.webp" class="popup img-link blur"><img data-src="https://images.technotim.com/assets/img/posts/vllm-gb10-model-verification/spark-0002.webp" alt="DGX Spark booting on the desk with RGB lighting" data-lqip="true" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAYACgMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP5G/DOjfCPwd4SbUdZ0HxfqevqL7WPCUttremxadDJGrW7Q+I0g07TdQvDFciTEtlfQwXMMcDiwsS01s3+i2I8RfGbwnwvAvCWTcR8MV8k4i4Qr+PWXKtw7TljKH1vhWtPNskx2Jr/WMW6FOpk+Y4bAYLDYz6hOE8NmM3g8TiauGwX5xl9HJOKcBmmLxeGx9GUpRymrQjio1aL55xnQqwclBRko1qXtJRpU3zRlpPSTI/iQrIhEV4oKKQoFqQoIBCgtliB0ySSepOa4v+Jz/Ed6zybhWU3rJxwWYwTk9ZNRWatRTd2opuy0ufFT8I+HnKT+sZgrybsq1J2u3pd0Lu3dn//Z"></a> <em>The Spark booting up, Dark Mode activated, and ready to take on builds.</em></p><p>I didnât want this to be a simple smoke test where CI starts one small model, sends it a prompt, and calls the image good. The catalog was built to cover different model architectures and different parts of the vLLM stack, including dense models, Gemma 4, MoE, Mamba, NVFP4, FP8 KV cache, reasoning, tool calling, multimodal input, and speculative decoding.</p><div class="table-wrapper"><table><thead><tr><th>Model<th>What it exercises<tbody><tr><td><code class="language-plaintext highlighter-rouge">Qwen/Qwen3-0.6B</code><td>Small dense baseline<tr><td><code class="language-plaintext highlighter-rouge">google/gemma-4-12B-it</code><td>Gemma 4, reasoning, and multimodal input<tr><td><code class="language-plaintext highlighter-rouge">nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4</code><td>NVFP4, FP8 KV cache, Humming MoE, Mamba, reasoning, tool calling, and speculative decoding<tr><td><code class="language-plaintext highlighter-rouge">nvidia/Qwen3.8-27B-NVFP4</code><td>NVFP4, FP8 KV cache, reasoning, tool calling, and multimodal input</table></div><p>For each model, the verification goes beyond whether vLLM manages to start, it sends real generation and streaming requests, tests features such as reasoning, tools, multimodal input like vision with images, speculative decoding if it supports it, and checks the model-specific runtime paths the image is expected to use.</p><p>The full matrix shows what each model is covering. A checkmark means the test passed, while a dash means that test doesnât apply to that model.</p><div class="table-wrapper"><table><thead><tr><th>
1Test<th style="text-align: center"><code class="language-plaintext highlighter-rouge">google/gemma-4-12B-it</code><th style="text-align: center"><code class="language-plaintext highlighter-rouge">nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4</code><th style="text-align: center"><code class="language-plaintext highlighter-rouge">Qwen/Qwen3-0.6B</code><th style="text-align: center"><code class="language-plaintext highlighter-rouge">nvidia/Qwen3.8-27B-NVFP4</code><tbody><tr><td>Model startup (health)<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<tr><td><code class="language-plaintext highlighter-rouge">/v1/models</code> registration<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<tr><td>Deterministic generation<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<tr><td>Streaming generation<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<tr><td>Response JSON validity<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<tr><td>Tool calling<td style="text-align: center">-<td style="text-align: center">â<td style="text-align: center">-<td style="text-align: center">â<tr><td>Reasoning parser<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">-<td style="text-align: center">â<tr><td>Multimodal image input<td style="text-align: center">â<td style="text-align: center">-<td style="text-align: center">-<td style="text-align: center">â<tr><td>NVFP4 execution<td style="text-align: center">-<td style="text-align: center">â<td style="text-align: center">-<td style="text-align: center">â<tr><td>FP8 KV cache<td style="text-align: center">-<td style="text-align: center">â<td style="text-align: center">-<td style="text-align: center">â<tr><td>MoE execution<td style="text-align: center">-<td style="text-align: center">â<td style="text-align: center">-<td style="text-align: center">-<tr><td>Mamba execution<td style="text-align: center">-<td style="text-align: center">â<td style="text-align: center">-<td style="text-align: center">-<tr><td>Speculative decoding<td style="text-align: center">-<td style="text-align: center">â<td style="text-align: center">-<td style="text-align: center">-<tr><td>llama-benchy pp/tg<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<tr><td>llama-benchy concurrency<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<tr><td>Post-bench health<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<tr><td>Server log captured<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<tr><td>Clean shutdown<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â<td style="text-align: center">â</table></div><p>NVFP4, FP8 KV cache, MoE, and Mamba are also checked against the captured vLLM server logs. A model can successfully generate a response while using a different backend or runtime path than the one being tested, so the logs confirm that the expected path was actually running.</p><hr /><h2 id="the-first-full-run"><span class="me-2">The first full run</span><a href="#the-first-full-run" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2><p>The first complete four-model run finished with 48 functional checks passing and 0 failures in the latest build <a href="https://github.com/timothystewart6/vllm-gb10/releases/tag/v0.30.0-gb10.3"><code class="language-plaintext highlighter-rouge">v0.30.0-gb10.3</code></a>. The verification also runs <code class="language-plaintext highlighter-rouge">llama-benchy</code>, which gives me a consistent set of performance numbers to keep with each release.</p><div class="table-wrapper"><table><thead><tr><th>
1Model<th style="text-align: right">Startup<th style="text-align: right">PP tok/s<th style="text-align: right">TG tok/s<th style="text-align: right">TG tok/s at concurrency 4<tbody><tr><td><code class="language-plaintext highlighter-rouge">google/gemma-4-12B-it</code><td style="text-align: right">322s<td style="text-align: right">3,432<td style="text-align: right">7.5<td style="text-align: right">33<tr><td><code class="language-plaintext highlighter-rouge">nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4</code><td style="text-align: right">422s<td style="text-align: right">8,224<td style="text-align: right">101.5<td style="text-align: right">138<tr><td><code class="language-plaintext highlighter-rouge">Qwen/Qwen3-0.6B</code><td style="text-align: right">282s<td style="text-align: right">42,479<td style="text-align: right">112.8<td style="text-align: right">322<tr><td><code class="language-plaintext highlighter-rouge">nvidia/Qwen3.8-27B-NVFP4</code><td style="text-align: right">352s<td style="text-align: right">2,221<td style="text-align: right">12.0<td style="text-align: right">42</table></div><p>The benchmark numbers are informational and wonât block a release. I mainly want them recorded along with the functional results so there is a consistent history of how each version worked on the same hardware.</p><hr /><h2 id="keeping-the-results-with-the-release"><span class="me-2">Keeping the results with the release</span><a href="#keeping-the-results-with-the-release" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2><p>The verification results are published with each GitHub release instead of being buried in the CI logs. That includes the model verification matrix, benchmark results, startup times, and the underlying logs and result files.</p><p>Over time, that gives me a consistent way to know how different vLLM versions worked on the same hardware and against the same model coverage. If an upstream change stops a model from loading, breaks a reasoning parser, changes which backend is used, or moves performance significantly, there is a previous run to compare it to.</p><p>The same verification can also be manually run again against an existing vllm-gb10 release without rebuilding the image, which makes it possible to recheck a model or expand the verification without forcing another build.</p><hr /><h2 id="where-this-leaves-vllm-gb10"><span class="me-2">Where this leaves vllm-gb10</span><a href="#where-this-leaves-vllm-gb10" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2><p>The upstream-first approach means vllm-gb10 is going to keep moving as vLLM and the rest of the stack move. I want to stay close to upstream rather than maintaining a separate Spark implementation, but that also means releases need to be tested against more than whether the Docker build completed successfully.</p><p>Having dedicated GB10 hardware lets the project do that against the models and runtime paths people are actually using. The verification tests can keep growing along with vLLM, and each release now includes the results showing what was tested on the Spark.</p><p>Thanks to NVIDIA for donating the DGX Spark that made this possible. I really appreciate them supporting this project and giving me hardware I can dedicate to building and testing the vllm-gb10 project as the platform continues to evolve.</p><p>You can find more information about the <a href="https://www.nvidia.com/en-us/products/workstations/dgx-spark/">DGX Spark</a> on NVIDIAâs site and through the <a href="https://marketplace.nvidia.com/en-us/enterprise/personal-ai-supercomputers/?superchip=GB10">NVIDIA Marketplace</a>.</p><hr /><h2 id="links"><span class="me-2">Links</span><a href="#links" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2><ul><li>Repository: <a href="https://github.com/timothystewart6/vllm-gb10">github.com/timothystewart6/vllm-gb10</a><li>Running vLLM on the DGX Spark: <a href="https://technotim.com/posts/vllm-gb10-docker/">technotim.com/posts/vllm-gb10-docker</a><li>My GX10 cluster writeup: <a href="https://technotim.com/posts/local-ai-gx10/">technotim.com/posts/local-ai-gx10</a><li>Ubuntu Server setup for GB10: <a href="https://technotim.com/posts/ubuntu-gb10/">technotim.com/posts/ubuntu-gb10</a><li>
1DGX Spark: <a href="https://www.nvidia.com/en-us/products/workstations/dgx-spark/">NVIDIA</a></ul><hr /><p>ð¤ Support the channel and <a href="/sponsor">help keep this site ad-free</a></p><p>âï¸ See all the hardware I recommend at <a href="https://l.technotim.com/gear">https://l.technotim.com/gear</a></p></div><div class="post-tail-wrapper text-muted"><div class="d-flex justify-content-between align-items-center gap-3 mb-3"><div class="post-meta"> <i class="far fa-folder-open fa-fw me-1"></i> <a href="/categories/ai/">ai</a>, <a href="/categories/homelab/">homelab</a></div></div><div class="post-tags"> <i class="fa fa-tags fa-fw me-1"></i> <a href="/tags/vllm/" class="post-tag no-text-decoration" >vllm</a> <a href="/tags/docker/" class="post-tag no-text-decoration" >docker</a> <a href="/tags/nvidia/" class="post-tag no-text-decoration" >nvidia</a> <a href="/tags/gb10/" class="post-tag no-text-decoration" >gb10</a> <a href="/tags/dgx-spark/" class="post-tag no-text-decoration" >dgx-spark</a> <a href="/tags/arm64/" class="post-tag no-text-decoration" >arm64</a> <a href="/tags/release/" class="post-tag no-text-decoration" >release</a> <a href="/tags/verification/" class="post-tag no-text-decoration" >verification</a> <a href="/tags/testing/" class="post-tag no-text-decoration" >testing</a> <a href="/tags/ci/" class="post-tag no-text-decoration" >ci</a> <a href="/tags/local-ai/" class="post-tag no-text-decoration" >local-ai</a> <a href="/tags/ai/" class="post-tag no-text-decoration" >ai</a> <a href="/tags/homelab/" class="post-tag no-text-decoration" >homelab</a></div><div class=" post-tail-bottom d-flex justify-content-between align-items-center mt-5 pb-2 " ><div class="license-wrapper"> This post is licensed under <a href="https://creativecommons.org/licenses/by/4.0/"> CC BY 4.0 </a> by the author.</div><div class="share-wrapper d-flex align-items-center"> <span class="share-label text-muted">Share</span> <span class="share-icons"> <a href="https://twitter.com/intent/tweet?text=How%20I%20Build%20and%20Test%20vLLM%20for%20NVIDIA%20GB10%20-%20Techno%20Tim&url=https%3A%2F%2Ftechnotim.com%2Fposts%2Fvllm-gb10-model-verification%2F" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Twitter" aria-label="Twitter"> <i class="fa-fw fa-brands fa-square-x-twitter"></i> </a> <a href="https://www.facebook.com/sharer/sharer.php?title=How%20I%20Build%20and%20Test%20vLLM%20for%20NVIDIA%20GB10%20-%20Techno%20Tim&u=https%3A%2F%2Ftechnotim.com%2Fposts%2Fvllm-gb10-model-verification%2F" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Facebook" aria-label="Facebook"> <i class="fa-fw fab fa-facebook-square"></i> </a> <a href="https://t.me/share/url?url=https%3A%2F%2Ftechnotim.com%2Fposts%2Fvllm-gb10-model-verification%2F&text=How%20I%20Build%20and%20Test%20vLLM%20for%20NVIDIA%20GB10%20-%20Techno%20Tim" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Telegram" aria-label="Telegram"> <i class="fa-fw fab fa-telegram"></i> </a> <a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Ftechnotim.com%2Fposts%2Fvllm-gb10-model-verification%2F" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Linkedin" aria-label="Linkedin"> <i class="fa-fw fab fa-linkedin"></i> </a>
1<script defer type="c420f79e38881e500a93aad6-module" src="https://cdn.jsdelivr.net/npm/@justinribeiro/share-to-mastodon/+esm"></script>
1 <button class="btn text-start" data-bs-toggle="tooltip" data-bs-placement="top" title="Mastodon" aria-label="Mastodon"> <share-to-mastodon class="share-mastodon" message="How%20I%20Build%20and%20Test%20vLLM%20for%20NVIDIA%20GB10%20-%20Techno%20Tim" url="https%3A%2F%2Ftechnotim.com%2Fposts%2Fvllm-gb10-model-verification%2F"customInstanceList="[{"label":"mastodon.social","link":"https://mastodon.social/"},{"label":"mastodon.online","link":"https://mastodon.online/"},{"label":"fosstodon.org","link":"https://fosstodon.org/"},{"label":"photog.social","link":"https://photog.social/"}]" > <i class="fa-fw fa-brands fa-mastodon"></i> </share-to-mastodon> </button> <button id="copy-link" aria-label="Copy link" class="btn small" data-bs-toggle="tooltip" data-bs-placement="top" title="Copy link" data-title-succeed="Link copied successfully!" > <i class="fa-fw fas fa-link pe-none fs-6"></i> </button> </span></div></div></div></article></main><aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 text-muted"><div class="access"><section id="access-lastmod"><h2 class="panel-heading">Recently Updated</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"> <a href="/posts/vllm-gb10-model-verification/">How I Build and Test vLLM for NVIDIA GB10</a><li class="text-truncate lh-lg"> <a href="/posts/ubuntu-gb10/">Ubuntu Server on the NVIDIA DGX Spark (Without the Desktop)</a><li class="text-truncate lh-lg"> <a href="/posts/intel-npu-frigate/">What Is an NPU Actually For? CPU vs GPU vs NPU in Frigate</a><li class="text-truncate lh-lg"> <a href="/posts/minirack-accessories/">The Mini Rack Accessories You Didnât Know You Needed</a><li class="text-truncate lh-lg"> <a href="/posts/vllm-gb10-docker/">Running the Latest vLLM on the NVIDIA DGX Spark</a></ul></section><section><h2 class="panel-heading">Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"> <a class="post-tag btn btn-outline-primary" href="/tags/homelab/">homelab</a> <a class="post-tag btn btn-outline-primary" href="/tags/hardware/">hardware</a> <a class="post-tag btn btn-outline-primary" href="/tags/kubernetes/">kubernetes</a> <a class="post-tag btn btn-outline-primary" href="/tags/docker/">docker</a> <a class="post-tag btn btn-outline-primary" href="/tags/self-hosted/">self-hosted</a> <a class="post-tag btn btn-outline-primary" href="/tags/rancher/">rancher</a> <a class="post-tag btn btn-outline-primary" href="/tags/proxmox/">proxmox</a> <a class="post-tag btn btn-outline-primary" href="/tags/linux/">linux</a> <a class="post-tag btn btn-outline-primary" href="/tags/portainer/">portainer</a> <a class="post-tag btn btn-outline-primary" href="/tags/unifi/">unifi</a></div></section></div><div class="toc-border-cover z-3"></div><section id="toc-wrapper" class="invisible position-sticky ps-0 pe-4 pb-4"><h2 class="panel-heading ps-3 pb-2 mb-0">Contents</h2><nav id="toc"></nav></section></aside></div><div class="row"><div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4"><aside id="related-posts" aria-labelledby="related-label"><h3 class="mb-4" id="related-label">Further Reading</h3><nav class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4"><article class="col"> <a href="/posts/ubuntu-gb10/" class="post-preview card h-100"><div class="card-body"> <time data-ts="1782133200" data-df="ll" > Jun 22, 2026 </time><h4 class="pt-0 my-2">Ubuntu Server on the NVIDIA DGX Spark (Without the Desktop)</h4><div class="text-muted"><p>When you buy an NVIDIA DGX Spark or an ASUS Ascent GX10, it ships with DGX OS. DGX OS is NVIDIAâs managed Ubuntu image, and it is fine - if you want a full GNOME desktop on an AI box, but thatâs no...</p></div></div></a></article><article class="col"> <a href="/posts/computex-2026/" class="post-preview card h-100"><div class="card-body"> <time data-ts="1780837200" data-df="ll" > Jun 7, 2026 </time><h4 class="pt-0 my-2">I Went to COMPUTEX 2026. Here's What Actually Stood Out.</h4><div class="text-muted"><p>COMPUTEX 2026 was my first hardware show at this scale, and I went in expecting AI to be a major theme. That part was obvious before I even landed in Taipei. What I didnât expect was how completely...</p></div></div></a></article><article class="col"> <a href="/posts/local-ai-gx10/" class="post-preview card h-100"><div class="card-body"> <time data-ts="1779109200" data-df="ll" > May 18, 2026 </time><h4 class="pt-0 my-2">I Built a 256GB Local AI Cluster on My Desk</h4><div class="text-muted"><p>I have been covering local and self-hosted AI for a few years now - from running models privately at home to what is still running in my homelab today. But to run the larger, more capable models, y...</p></div></div></a></article></nav></aside><nav class="post-navigation d-flex justify-content-between" aria-label="Post Navigation"> <a href="/posts/intel-npu-frigate/" class="btn btn-outline-primary" aria-label="Older" ><p>What Is an NPU Actually For? CPU vs GPU vs NPU in Frigate</p></a><div class="btn btn-outline-primary disabled" aria-label="Newer"><p>-</p></div></nav><footer aria-label="Site Info" class=" d-flex flex-column justify-content-center text-muted flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3 " ><p>© <time>2026</time> <a href="https://l.technotim.com/twitter">Techno Tim</a>. <span data-bs-toggle="tooltip" data-bs-placement="top" title="Except where otherwise noted, the blog posts on this site are licensed under the Creative
1Commons Attribution 4.0 International (CC BY 4.0) License by the author." >Some rights reserved.</span></p><p><a href="/sponsor/">ð¤ Help keep this ad-free!</href> <a href="https://l.technotim.com/shop">ðï¸ Check out the new merch shop!</href></p></footer></div></div><div id="search-result-wrapper" class="d-flex justify-content-center d-none"><div class="col-11 content"><div id="search-hints"><section><h2 class="panel-heading">Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"> <a class="post-tag btn btn-outline-primary" href="/tags/homelab/">homelab</a> <a class="post-tag btn btn-outline-primary" href="/tags/hardware/">hardware</a> <a class="post-tag btn btn-outline-primary" href="/tags/kubernetes/">kubernetes</a> <a class="post-tag btn btn-outline-primary" href="/tags/docker/">docker</a> <a class="post-tag btn btn-outline-primary" href="/tags/self-hosted/">self-hosted</a> <a class="post-tag btn btn-outline-primary" href="/tags/rancher/">rancher</a> <a class="post-tag btn btn-outline-primary" href="/tags/proxmox/">proxmox</a> <a class="post-tag btn btn-outline-primary" href="/tags/linux/">linux</a> <a class="post-tag btn btn-outline-primary" href="/tags/portainer/">portainer</a> <a class="post-tag btn btn-outline-primary" href="/tags/unifi/">unifi</a></div></section></div><div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div></div><aside aria-label="Scroll to Top"> <button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow"> <i class="fas fa-angle-up"></i> </button></aside></div><div id="mask" class="d-none position-fixed w-100 h-100 z-1"></div>
1<script type="c420f79e38881e500a93aad6-text/javascript"> document.addEventListener('DOMContentLoaded', () => { SimpleJekyllSearch({ searchInput: document.getElementById('search-input'), resultsContainer: document.getElementById('search-results'), json: '/assets/js/data/search.json', searchResultTemplate: '<article class="px-1 px-sm-2 px-lg-4 px-xl-0"><header><h2><a href="{url}">{title}</a></h2><div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags}</div></header><p>{content}</p></article>', noResultsText: '<p class="mt-5">Oops! No results found.</p>', templateMiddleware: function(prop, value, template) { if (prop === 'categories') { if (value === '') { return `${value}`; } else { return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`; } } if (prop === 'tags') { if (value === '') { return `${value}`; } else { return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`; } } } }); }); </script>
vendor: 1 bytes, line 1
1
2<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"898e4422e36a46e58d735ae5ffbdc62c","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 2
2
3<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a434bbcf9a542af4',t:'MTc5MDc4NzEwMA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
vendor: 142 bytes, line 3
3<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="c420f79e38881e500a93aad6-|49" defer></script>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.