[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-riva-nim-setup":3,"mdc--s0m99t-key":34,"related-repo-nvidia-riva-nim-setup":1664,"related-org-nvidia-riva-nim-setup":1729},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"riva-nim-setup","set up NVIDIA Riva Speech NIMs","Use when getting started with NVIDIA Riva Speech NIMs: NGC access, Docker login for nvcr.io, NVIDIA Container Toolkit, GPU verification, Riva Python client.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,14,17,20],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Docker","docker",{"name":18,"slug":19,"type":13},"AI Infrastructure","ai-infrastructure",{"name":21,"slug":22,"type":13},"Speech","speech",6,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fdigital-health-skills","2026-07-14T05:35:50.295877","Apache-2.0",1,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"NVIDIA Digital Health skills repo for agent-guided healthcare AI workflows, including evaluation, data generation, model adaptation, deployment guidance, and developer best practices.","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fdigital-health-skills\u002Ftree\u002FHEAD\u002Fskills\u002Friva-nim-setup","---\nname: \"riva-nim-setup\"\nlicense: \"Apache-2.0\"\ndescription: \"Use when getting started with NVIDIA Riva Speech NIMs: NGC access, Docker login for nvcr.io, NVIDIA Container Toolkit, GPU verification, Riva Python client.\"\nmetadata:\n  author: \"Mayank Jain \u003Cmayjain@nvidia.com>\"\n  team: riva\n  tags:\n    - nvidia\n    - riva\n    - nim\n    - setup\n    - ngc\n    - docker\n    - prerequisites\n  domain: ml\n  version: \"1.0.0\"\n---\n\n# Riva NIM Setup\n\n> **Agent:** Announce each step before presenting it: **Step N\u002F7 — Step Title** (e.g., \"**Step 1\u002F7 — Install NVIDIA Drivers**\").\n\n## Purpose\n\nA first-pass machine preparation: bring a Linux x86_64 host up to the point where it can pull and execute Riva Speech NIM containers. The work below is one-time per host.\n\n## Prerequisites\n\nUp-to-date GPU compatibility, minimum driver versions, VRAM thresholds, and supported operating systems are all maintained at https:\u002F\u002Fdocs.nvidia.com\u002Fnim\u002Fspeech\u002Flatest\u002Fget-started\u002Fprerequisites.html — consult that page before installing anything.\n\nA few invariants worth knowing without clicking through:\n- The host CPU must be x86_64; ARM is not supported.\n- Self-hosting Riva NIMs requires an active NVIDIA AI Enterprise license.\n- Install the **driver alone** — the CUDA toolkit ships inside the NIM container, so installing it separately at the host level is redundant (and a common source of version-skew bugs).\n\n## Instructions\n\nThe setup is seven sequential steps. The first three need root or `sudo`; the remaining four can run as your normal user. Knock them off in order; don't try to pull a NIM container before Step 7 is done.\n\n| # | What | Why it's first |\n|---|---|---|\n| 1 | NVIDIA driver (no CUDA toolkit) | The host has to be able to talk to the GPU at all |\n| 2 | Docker Engine | Container runtime |\n| 3 | NVIDIA Container Toolkit | Bridges Docker to the GPU |\n| 4 | NGC API key | Auth artifact for pulling images |\n| 5 | `docker login nvcr.io` | Activates the key against the registry |\n| 6 | `nvidia-riva-client` (pip) | Lets you exercise the running NIM from Python |\n| 7 | (optional) clone client sample repos | Source for the example scripts |\n\n\n## Step 1 — Install NVIDIA Drivers\n\nUse your distro's package manager to install the driver only. Don't add the CUDA toolkit at the host level — the NIM container ships with its own bundled CUDA stack.\n\n```bash\n# Verify installed driver version\nnvidia-smi\n```\n\nCross-check the version `nvidia-smi` prints against the per-model minimum at https:\u002F\u002Fdocs.nvidia.com\u002Fnim\u002Fspeech\u002Flatest\u002Fget-started\u002Fprerequisites.html before continuing. If you do need a fresh install, the [CUDA installation guide for Linux](https:\u002F\u002Fdocs.nvidia.com\u002Fcuda\u002Fcuda-installation-guide-linux) walks through the distro-specific package manager steps (you'll only follow the driver portion, not the toolkit portion).\n\n## Step 2 — Install Docker\n\nPick the Docker Engine flavor for your distribution from the official matrix: https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002F\n\nOnce installed, add your user to the `docker` group so subsequent commands don't need `sudo`:\n\n```bash\nsudo usermod -aG docker $USER\n# Log out and back in for this to take effect\n```\n\n## Step 3 — Install NVIDIA Container Toolkit\n\nThe Container Toolkit lets Docker containers access the host GPU. Full reference: https:\u002F\u002Fdocs.nvidia.com\u002Fdatacenter\u002Fcloud-native\u002Fcontainer-toolkit\u002Flatest\u002Finstall-guide.html\n\n```bash\nsudo apt-get install -y nvidia-container-toolkit\nsudo nvidia-ctk runtime configure --runtime=docker\nsudo systemctl restart docker\n```\n\nSmoke-test that a container can actually see the GPU:\n\n```bash\ndocker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi\n```\n\nA successful run prints the same driver version and GPU listing you'd see on the host. If you get an error or empty output, something in Steps 1–3 didn't take — revisit before moving on.\n\n## Step 4 — NGC API Key\n\nThree short steps to generate a key and load it into your shell:\n\n1. Navigate to https:\u002F\u002Forg.ngc.nvidia.com\u002Fsetup\u002Fapi-keys in a browser.\n2. Click **Generate API Key** and grant it at least the **NGC Catalog** service scope.\n3. Copy the key value and export it:\n\n```bash\nexport NGC_API_KEY=${your-key-value}\n```\n\nTo persist across sessions:\n\n```bash\n# Bash\necho \"export NGC_API_KEY=${your-key-value}\" >> ~\u002F.bashrc\n\n# Zsh\necho \"export NGC_API_KEY=${your-key-value}\" >> ~\u002F.zshrc\n```\n> **Security note:** Storing credentials in `~\u002F.bashrc` or `~\u002F.zshrc` saves\n> them in plaintext. Any process with read access to those files can extract the\n> key. For production, use a credential manager or a dedicated `.env` file with\n> `chmod 600` permissions and `source` it instead.\n\n\n## Step 5 — Docker Login to nvcr.io\n\n```bash\necho \"$NGC_API_KEY\" | docker login nvcr.io --username '$oauthtoken' --password-stdin\n```\n\nTwo non-obvious points often missed:\n\n- The `--username` argument is the literal four-character string `$oauthtoken`. It is **not** your NGC display name or email — copy it verbatim.\n- The actual credential is the API key from Step 4, piped to stdin.\n\nA successful login unlocks every `docker pull nvcr.io\u002Fnim\u002Fnvidia\u002F\u003Cimage>:\u003Ctag>` invocation.\n\n## Step 6 — Install Riva Python Client\n\nThe example client scripts in `python-clients\u002F` depend on the `nvidia-riva-client` package — install it now:\n\n```bash\npip install nvidia-riva-client\n```\n\nConfirm the install:\n\n```bash\npython3 -c \"import riva.client; print('Riva client OK')\"\n```\n\n## Step 7 — Clone Client Repos (Optional)\n\nOpen-source sample scripts live in three public repos; clone whichever match the protocol you'll exercise:\n\n```bash\n# Python clients and sample scripts\ngit clone https:\u002F\u002Fgithub.com\u002Fnvidia-riva\u002Fpython-clients\n\n# C++ clients (requires Bazel)\ngit clone https:\u002F\u002Fgithub.com\u002Fnvidia-riva\u002Fcpp-clients\n\n# WebSocket bridge (AudioCodes \u002F telephony)\ngit clone https:\u002F\u002Fgithub.com\u002Fnvidia-riva\u002Fwebsocket-bridge\n```\n\n## Examples\n\nThree quick sanity checks anyone can rerun later to confirm the environment hasn't drifted.\n\n**After Step 3 — container-level GPU visibility:**\n```bash\ndocker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi\n```\n\n**After Step 6 — Python client import test:**\n```bash\npython3 -c \"import riva.client; print('Riva client OK')\"\n```\n\n**Step 5 reproduced — re-authenticate against `nvcr.io` after a key rotation:**\n```bash\necho \"$NGC_API_KEY\" | docker login nvcr.io --username '$oauthtoken' --password-stdin\n```\n\n\n## Troubleshooting\n\n- **`docker login` fails authentication** → the `--username` value must be the literal `$oauthtoken` string. Many users instinctively type their NGC email or display name here; that's the most common cause of 401 on this step.\n- **CUDA library version mismatches at container start** → check that you didn't install the CUDA toolkit at the host level. The NIM container ships its own toolkit; a parallel host install will fight it.\n- **`docker run` still wants sudo after `usermod -aG docker`** → group membership only applies to new login sessions. Log out and back in (or open a new shell with `newgrp docker`) and the membership takes effect.\n- **`nvidia-container-cli` reports `version: GLIBC_X.YY not found`** → host glibc is older than what the NIM expects. Confirm via `ld -v` against the minimum listed at https:\u002F\u002Fdocs.nvidia.com\u002Fnim\u002Fspeech\u002Flatest\u002Fget-started\u002Fprerequisites.html — older Ubuntu LTS releases may need an upgrade.\n- **Running inside WSL2 on Windows** → swap Docker for Podman, ensure your NVIDIA driver is ≥ 570, use Ubuntu 24.04 inside WSL, and note that only specific Parakeet models are currently supported under WSL2.\n\n\n## Limitations\n\n- Host architecture is x86_64 only. WSL2 on Windows is a partially supported path with Podman replacing Docker and a narrower model catalog (Parakeet subset).\n- Self-hosting a Riva NIM is gated behind an active NVIDIA AI Enterprise license.\n- The host should not carry a separate CUDA toolkit install — the NIM container brings the toolkit it expects. Parallel installs at the host level are a frequent source of breakage.\n- Adding a user to the `docker` group requires re-logging in before that user can run Docker commands without `sudo`.\n\n## Next Steps\n\nOnce Steps 1–7 are green, route to the deployment skill that matches the modality you want:\n\n- **Model choice undecided** → `riva-model-selection`\n- **Speech-to-text deployments** → `riva-asr`\n- **Text-to-speech deployments** → `riva-tts`\n- **Translation deployments** → `riva-nmt`\n\n",{"data":35,"body":46},{"name":4,"license":26,"description":6,"metadata":36},{"author":37,"team":38,"tags":39,"domain":44,"version":45},"Mayank Jain \u003Cmayjain@nvidia.com>","riva",[8,38,40,41,42,16,43],"nim","setup","ngc","prerequisites","ml","1.0.0",{"type":47,"children":48},"root",[49,57,87,94,99,104,119,124,151,157,171,340,346,351,383,412,418,429,448,492,498,509,593,598,647,652,658,663,704,741,746,859,912,918,990,995,1030,1043,1049,1069,1093,1098,1132,1138,1143,1240,1246,1251,1259,1300,1308,1337,1353,1414,1420,1540,1546,1583,1589,1594,1658],{"type":50,"tag":51,"props":52,"children":53},"element","h1",{"id":4},[54],{"type":55,"value":56},"text","Riva NIM Setup",{"type":50,"tag":58,"props":59,"children":60},"blockquote",{},[61],{"type":50,"tag":62,"props":63,"children":64},"p",{},[65,71,73,78,80,85],{"type":50,"tag":66,"props":67,"children":68},"strong",{},[69],{"type":55,"value":70},"Agent:",{"type":55,"value":72}," Announce each step before presenting it: ",{"type":50,"tag":66,"props":74,"children":75},{},[76],{"type":55,"value":77},"Step N\u002F7 — Step Title",{"type":55,"value":79}," (e.g., \"",{"type":50,"tag":66,"props":81,"children":82},{},[83],{"type":55,"value":84},"Step 1\u002F7 — Install NVIDIA Drivers",{"type":55,"value":86},"\").",{"type":50,"tag":88,"props":89,"children":91},"h2",{"id":90},"purpose",[92],{"type":55,"value":93},"Purpose",{"type":50,"tag":62,"props":95,"children":96},{},[97],{"type":55,"value":98},"A first-pass machine preparation: bring a Linux x86_64 host up to the point where it can pull and execute Riva Speech NIM containers. The work below is one-time per host.",{"type":50,"tag":88,"props":100,"children":101},{"id":43},[102],{"type":55,"value":103},"Prerequisites",{"type":50,"tag":62,"props":105,"children":106},{},[107,109,117],{"type":55,"value":108},"Up-to-date GPU compatibility, minimum driver versions, VRAM thresholds, and supported operating systems are all maintained at ",{"type":50,"tag":110,"props":111,"children":115},"a",{"href":112,"rel":113},"https:\u002F\u002Fdocs.nvidia.com\u002Fnim\u002Fspeech\u002Flatest\u002Fget-started\u002Fprerequisites.html",[114],"nofollow",[116],{"type":55,"value":112},{"type":55,"value":118}," — consult that page before installing anything.",{"type":50,"tag":62,"props":120,"children":121},{},[122],{"type":55,"value":123},"A few invariants worth knowing without clicking through:",{"type":50,"tag":125,"props":126,"children":127},"ul",{},[128,134,139],{"type":50,"tag":129,"props":130,"children":131},"li",{},[132],{"type":55,"value":133},"The host CPU must be x86_64; ARM is not supported.",{"type":50,"tag":129,"props":135,"children":136},{},[137],{"type":55,"value":138},"Self-hosting Riva NIMs requires an active NVIDIA AI Enterprise license.",{"type":50,"tag":129,"props":140,"children":141},{},[142,144,149],{"type":55,"value":143},"Install the ",{"type":50,"tag":66,"props":145,"children":146},{},[147],{"type":55,"value":148},"driver alone",{"type":55,"value":150}," — the CUDA toolkit ships inside the NIM container, so installing it separately at the host level is redundant (and a common source of version-skew bugs).",{"type":50,"tag":88,"props":152,"children":154},{"id":153},"instructions",[155],{"type":55,"value":156},"Instructions",{"type":50,"tag":62,"props":158,"children":159},{},[160,162,169],{"type":55,"value":161},"The setup is seven sequential steps. The first three need root or ",{"type":50,"tag":163,"props":164,"children":166},"code",{"className":165},[],[167],{"type":55,"value":168},"sudo",{"type":55,"value":170},"; the remaining four can run as your normal user. Knock them off in order; don't try to pull a NIM container before Step 7 is done.",{"type":50,"tag":172,"props":173,"children":174},"table",{},[175,199],{"type":50,"tag":176,"props":177,"children":178},"thead",{},[179],{"type":50,"tag":180,"props":181,"children":182},"tr",{},[183,189,194],{"type":50,"tag":184,"props":185,"children":186},"th",{},[187],{"type":55,"value":188},"#",{"type":50,"tag":184,"props":190,"children":191},{},[192],{"type":55,"value":193},"What",{"type":50,"tag":184,"props":195,"children":196},{},[197],{"type":55,"value":198},"Why it's first",{"type":50,"tag":200,"props":201,"children":202},"tbody",{},[203,222,240,258,276,298,322],{"type":50,"tag":180,"props":204,"children":205},{},[206,212,217],{"type":50,"tag":207,"props":208,"children":209},"td",{},[210],{"type":55,"value":211},"1",{"type":50,"tag":207,"props":213,"children":214},{},[215],{"type":55,"value":216},"NVIDIA driver (no CUDA toolkit)",{"type":50,"tag":207,"props":218,"children":219},{},[220],{"type":55,"value":221},"The host has to be able to talk to the GPU at all",{"type":50,"tag":180,"props":223,"children":224},{},[225,230,235],{"type":50,"tag":207,"props":226,"children":227},{},[228],{"type":55,"value":229},"2",{"type":50,"tag":207,"props":231,"children":232},{},[233],{"type":55,"value":234},"Docker Engine",{"type":50,"tag":207,"props":236,"children":237},{},[238],{"type":55,"value":239},"Container runtime",{"type":50,"tag":180,"props":241,"children":242},{},[243,248,253],{"type":50,"tag":207,"props":244,"children":245},{},[246],{"type":55,"value":247},"3",{"type":50,"tag":207,"props":249,"children":250},{},[251],{"type":55,"value":252},"NVIDIA Container Toolkit",{"type":50,"tag":207,"props":254,"children":255},{},[256],{"type":55,"value":257},"Bridges Docker to the GPU",{"type":50,"tag":180,"props":259,"children":260},{},[261,266,271],{"type":50,"tag":207,"props":262,"children":263},{},[264],{"type":55,"value":265},"4",{"type":50,"tag":207,"props":267,"children":268},{},[269],{"type":55,"value":270},"NGC API key",{"type":50,"tag":207,"props":272,"children":273},{},[274],{"type":55,"value":275},"Auth artifact for pulling images",{"type":50,"tag":180,"props":277,"children":278},{},[279,284,293],{"type":50,"tag":207,"props":280,"children":281},{},[282],{"type":55,"value":283},"5",{"type":50,"tag":207,"props":285,"children":286},{},[287],{"type":50,"tag":163,"props":288,"children":290},{"className":289},[],[291],{"type":55,"value":292},"docker login nvcr.io",{"type":50,"tag":207,"props":294,"children":295},{},[296],{"type":55,"value":297},"Activates the key against the registry",{"type":50,"tag":180,"props":299,"children":300},{},[301,306,317],{"type":50,"tag":207,"props":302,"children":303},{},[304],{"type":55,"value":305},"6",{"type":50,"tag":207,"props":307,"children":308},{},[309,315],{"type":50,"tag":163,"props":310,"children":312},{"className":311},[],[313],{"type":55,"value":314},"nvidia-riva-client",{"type":55,"value":316}," (pip)",{"type":50,"tag":207,"props":318,"children":319},{},[320],{"type":55,"value":321},"Lets you exercise the running NIM from Python",{"type":50,"tag":180,"props":323,"children":324},{},[325,330,335],{"type":50,"tag":207,"props":326,"children":327},{},[328],{"type":55,"value":329},"7",{"type":50,"tag":207,"props":331,"children":332},{},[333],{"type":55,"value":334},"(optional) clone client sample repos",{"type":50,"tag":207,"props":336,"children":337},{},[338],{"type":55,"value":339},"Source for the example scripts",{"type":50,"tag":88,"props":341,"children":343},{"id":342},"step-1-install-nvidia-drivers",[344],{"type":55,"value":345},"Step 1 — Install NVIDIA Drivers",{"type":50,"tag":62,"props":347,"children":348},{},[349],{"type":55,"value":350},"Use your distro's package manager to install the driver only. Don't add the CUDA toolkit at the host level — the NIM container ships with its own bundled CUDA stack.",{"type":50,"tag":352,"props":353,"children":358},"pre",{"className":354,"code":355,"language":356,"meta":357,"style":357},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Verify installed driver version\nnvidia-smi\n","bash","",[359],{"type":50,"tag":163,"props":360,"children":361},{"__ignoreMap":357},[362,373],{"type":50,"tag":363,"props":364,"children":366},"span",{"class":365,"line":27},"line",[367],{"type":50,"tag":363,"props":368,"children":370},{"style":369},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[371],{"type":55,"value":372},"# Verify installed driver version\n",{"type":50,"tag":363,"props":374,"children":376},{"class":365,"line":375},2,[377],{"type":50,"tag":363,"props":378,"children":380},{"style":379},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[381],{"type":55,"value":382},"nvidia-smi\n",{"type":50,"tag":62,"props":384,"children":385},{},[386,388,394,396,401,403,410],{"type":55,"value":387},"Cross-check the version ",{"type":50,"tag":163,"props":389,"children":391},{"className":390},[],[392],{"type":55,"value":393},"nvidia-smi",{"type":55,"value":395}," prints against the per-model minimum at ",{"type":50,"tag":110,"props":397,"children":399},{"href":112,"rel":398},[114],[400],{"type":55,"value":112},{"type":55,"value":402}," before continuing. If you do need a fresh install, the ",{"type":50,"tag":110,"props":404,"children":407},{"href":405,"rel":406},"https:\u002F\u002Fdocs.nvidia.com\u002Fcuda\u002Fcuda-installation-guide-linux",[114],[408],{"type":55,"value":409},"CUDA installation guide for Linux",{"type":55,"value":411}," walks through the distro-specific package manager steps (you'll only follow the driver portion, not the toolkit portion).",{"type":50,"tag":88,"props":413,"children":415},{"id":414},"step-2-install-docker",[416],{"type":55,"value":417},"Step 2 — Install Docker",{"type":50,"tag":62,"props":419,"children":420},{},[421,423],{"type":55,"value":422},"Pick the Docker Engine flavor for your distribution from the official matrix: ",{"type":50,"tag":110,"props":424,"children":427},{"href":425,"rel":426},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002F",[114],[428],{"type":55,"value":425},{"type":50,"tag":62,"props":430,"children":431},{},[432,434,439,441,446],{"type":55,"value":433},"Once installed, add your user to the ",{"type":50,"tag":163,"props":435,"children":437},{"className":436},[],[438],{"type":55,"value":16},{"type":55,"value":440}," group so subsequent commands don't need ",{"type":50,"tag":163,"props":442,"children":444},{"className":443},[],[445],{"type":55,"value":168},{"type":55,"value":447},":",{"type":50,"tag":352,"props":449,"children":451},{"className":354,"code":450,"language":356,"meta":357,"style":357},"sudo usermod -aG docker $USER\n# Log out and back in for this to take effect\n",[452],{"type":50,"tag":163,"props":453,"children":454},{"__ignoreMap":357},[455,484],{"type":50,"tag":363,"props":456,"children":457},{"class":365,"line":27},[458,462,468,473,478],{"type":50,"tag":363,"props":459,"children":460},{"style":379},[461],{"type":55,"value":168},{"type":50,"tag":363,"props":463,"children":465},{"style":464},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[466],{"type":55,"value":467}," usermod",{"type":50,"tag":363,"props":469,"children":470},{"style":464},[471],{"type":55,"value":472}," -aG",{"type":50,"tag":363,"props":474,"children":475},{"style":464},[476],{"type":55,"value":477}," docker",{"type":50,"tag":363,"props":479,"children":481},{"style":480},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[482],{"type":55,"value":483}," $USER\n",{"type":50,"tag":363,"props":485,"children":486},{"class":365,"line":375},[487],{"type":50,"tag":363,"props":488,"children":489},{"style":369},[490],{"type":55,"value":491},"# Log out and back in for this to take effect\n",{"type":50,"tag":88,"props":493,"children":495},{"id":494},"step-3-install-nvidia-container-toolkit",[496],{"type":55,"value":497},"Step 3 — Install NVIDIA Container Toolkit",{"type":50,"tag":62,"props":499,"children":500},{},[501,503],{"type":55,"value":502},"The Container Toolkit lets Docker containers access the host GPU. Full reference: ",{"type":50,"tag":110,"props":504,"children":507},{"href":505,"rel":506},"https:\u002F\u002Fdocs.nvidia.com\u002Fdatacenter\u002Fcloud-native\u002Fcontainer-toolkit\u002Flatest\u002Finstall-guide.html",[114],[508],{"type":55,"value":505},{"type":50,"tag":352,"props":510,"children":512},{"className":354,"code":511,"language":356,"meta":357,"style":357},"sudo apt-get install -y nvidia-container-toolkit\nsudo nvidia-ctk runtime configure --runtime=docker\nsudo systemctl restart docker\n",[513],{"type":50,"tag":163,"props":514,"children":515},{"__ignoreMap":357},[516,543,570],{"type":50,"tag":363,"props":517,"children":518},{"class":365,"line":27},[519,523,528,533,538],{"type":50,"tag":363,"props":520,"children":521},{"style":379},[522],{"type":55,"value":168},{"type":50,"tag":363,"props":524,"children":525},{"style":464},[526],{"type":55,"value":527}," apt-get",{"type":50,"tag":363,"props":529,"children":530},{"style":464},[531],{"type":55,"value":532}," install",{"type":50,"tag":363,"props":534,"children":535},{"style":464},[536],{"type":55,"value":537}," -y",{"type":50,"tag":363,"props":539,"children":540},{"style":464},[541],{"type":55,"value":542}," nvidia-container-toolkit\n",{"type":50,"tag":363,"props":544,"children":545},{"class":365,"line":375},[546,550,555,560,565],{"type":50,"tag":363,"props":547,"children":548},{"style":379},[549],{"type":55,"value":168},{"type":50,"tag":363,"props":551,"children":552},{"style":464},[553],{"type":55,"value":554}," nvidia-ctk",{"type":50,"tag":363,"props":556,"children":557},{"style":464},[558],{"type":55,"value":559}," runtime",{"type":50,"tag":363,"props":561,"children":562},{"style":464},[563],{"type":55,"value":564}," configure",{"type":50,"tag":363,"props":566,"children":567},{"style":464},[568],{"type":55,"value":569}," --runtime=docker\n",{"type":50,"tag":363,"props":571,"children":573},{"class":365,"line":572},3,[574,578,583,588],{"type":50,"tag":363,"props":575,"children":576},{"style":379},[577],{"type":55,"value":168},{"type":50,"tag":363,"props":579,"children":580},{"style":464},[581],{"type":55,"value":582}," systemctl",{"type":50,"tag":363,"props":584,"children":585},{"style":464},[586],{"type":55,"value":587}," restart",{"type":50,"tag":363,"props":589,"children":590},{"style":464},[591],{"type":55,"value":592}," docker\n",{"type":50,"tag":62,"props":594,"children":595},{},[596],{"type":55,"value":597},"Smoke-test that a container can actually see the GPU:",{"type":50,"tag":352,"props":599,"children":601},{"className":354,"code":600,"language":356,"meta":357,"style":357},"docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi\n",[602],{"type":50,"tag":163,"props":603,"children":604},{"__ignoreMap":357},[605],{"type":50,"tag":363,"props":606,"children":607},{"class":365,"line":27},[608,612,617,622,627,632,637,642],{"type":50,"tag":363,"props":609,"children":610},{"style":379},[611],{"type":55,"value":16},{"type":50,"tag":363,"props":613,"children":614},{"style":464},[615],{"type":55,"value":616}," run",{"type":50,"tag":363,"props":618,"children":619},{"style":464},[620],{"type":55,"value":621}," --rm",{"type":50,"tag":363,"props":623,"children":624},{"style":464},[625],{"type":55,"value":626}," --runtime=nvidia",{"type":50,"tag":363,"props":628,"children":629},{"style":464},[630],{"type":55,"value":631}," --gpus",{"type":50,"tag":363,"props":633,"children":634},{"style":464},[635],{"type":55,"value":636}," all",{"type":50,"tag":363,"props":638,"children":639},{"style":464},[640],{"type":55,"value":641}," ubuntu",{"type":50,"tag":363,"props":643,"children":644},{"style":464},[645],{"type":55,"value":646}," nvidia-smi\n",{"type":50,"tag":62,"props":648,"children":649},{},[650],{"type":55,"value":651},"A successful run prints the same driver version and GPU listing you'd see on the host. If you get an error or empty output, something in Steps 1–3 didn't take — revisit before moving on.",{"type":50,"tag":88,"props":653,"children":655},{"id":654},"step-4-ngc-api-key",[656],{"type":55,"value":657},"Step 4 — NGC API Key",{"type":50,"tag":62,"props":659,"children":660},{},[661],{"type":55,"value":662},"Three short steps to generate a key and load it into your shell:",{"type":50,"tag":664,"props":665,"children":666},"ol",{},[667,680,699],{"type":50,"tag":129,"props":668,"children":669},{},[670,672,678],{"type":55,"value":671},"Navigate to ",{"type":50,"tag":110,"props":673,"children":676},{"href":674,"rel":675},"https:\u002F\u002Forg.ngc.nvidia.com\u002Fsetup\u002Fapi-keys",[114],[677],{"type":55,"value":674},{"type":55,"value":679}," in a browser.",{"type":50,"tag":129,"props":681,"children":682},{},[683,685,690,692,697],{"type":55,"value":684},"Click ",{"type":50,"tag":66,"props":686,"children":687},{},[688],{"type":55,"value":689},"Generate API Key",{"type":55,"value":691}," and grant it at least the ",{"type":50,"tag":66,"props":693,"children":694},{},[695],{"type":55,"value":696},"NGC Catalog",{"type":55,"value":698}," service scope.",{"type":50,"tag":129,"props":700,"children":701},{},[702],{"type":55,"value":703},"Copy the key value and export it:",{"type":50,"tag":352,"props":705,"children":707},{"className":354,"code":706,"language":356,"meta":357,"style":357},"export NGC_API_KEY=${your-key-value}\n",[708],{"type":50,"tag":163,"props":709,"children":710},{"__ignoreMap":357},[711],{"type":50,"tag":363,"props":712,"children":713},{"class":365,"line":27},[714,720,725,731,736],{"type":50,"tag":363,"props":715,"children":717},{"style":716},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[718],{"type":55,"value":719},"export",{"type":50,"tag":363,"props":721,"children":722},{"style":480},[723],{"type":55,"value":724}," NGC_API_KEY",{"type":50,"tag":363,"props":726,"children":728},{"style":727},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[729],{"type":55,"value":730},"=${",{"type":50,"tag":363,"props":732,"children":733},{"style":480},[734],{"type":55,"value":735},"your-key-value",{"type":50,"tag":363,"props":737,"children":738},{"style":727},[739],{"type":55,"value":740},"}\n",{"type":50,"tag":62,"props":742,"children":743},{},[744],{"type":55,"value":745},"To persist across sessions:",{"type":50,"tag":352,"props":747,"children":749},{"className":354,"code":748,"language":356,"meta":357,"style":357},"# Bash\necho \"export NGC_API_KEY=${your-key-value}\" >> ~\u002F.bashrc\n\n# Zsh\necho \"export NGC_API_KEY=${your-key-value}\" >> ~\u002F.zshrc\n",[750],{"type":50,"tag":163,"props":751,"children":752},{"__ignoreMap":357},[753,761,804,813,822],{"type":50,"tag":363,"props":754,"children":755},{"class":365,"line":27},[756],{"type":50,"tag":363,"props":757,"children":758},{"style":369},[759],{"type":55,"value":760},"# Bash\n",{"type":50,"tag":363,"props":762,"children":763},{"class":365,"line":375},[764,770,775,780,785,789,794,799],{"type":50,"tag":363,"props":765,"children":767},{"style":766},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[768],{"type":55,"value":769},"echo",{"type":50,"tag":363,"props":771,"children":772},{"style":727},[773],{"type":55,"value":774}," \"",{"type":50,"tag":363,"props":776,"children":777},{"style":464},[778],{"type":55,"value":779},"export NGC_API_KEY=",{"type":50,"tag":363,"props":781,"children":782},{"style":727},[783],{"type":55,"value":784},"${",{"type":50,"tag":363,"props":786,"children":787},{"style":480},[788],{"type":55,"value":735},{"type":50,"tag":363,"props":790,"children":791},{"style":727},[792],{"type":55,"value":793},"}\"",{"type":50,"tag":363,"props":795,"children":796},{"style":727},[797],{"type":55,"value":798}," >>",{"type":50,"tag":363,"props":800,"children":801},{"style":464},[802],{"type":55,"value":803}," ~\u002F.bashrc\n",{"type":50,"tag":363,"props":805,"children":806},{"class":365,"line":572},[807],{"type":50,"tag":363,"props":808,"children":810},{"emptyLinePlaceholder":809},true,[811],{"type":55,"value":812},"\n",{"type":50,"tag":363,"props":814,"children":816},{"class":365,"line":815},4,[817],{"type":50,"tag":363,"props":818,"children":819},{"style":369},[820],{"type":55,"value":821},"# Zsh\n",{"type":50,"tag":363,"props":823,"children":825},{"class":365,"line":824},5,[826,830,834,838,842,846,850,854],{"type":50,"tag":363,"props":827,"children":828},{"style":766},[829],{"type":55,"value":769},{"type":50,"tag":363,"props":831,"children":832},{"style":727},[833],{"type":55,"value":774},{"type":50,"tag":363,"props":835,"children":836},{"style":464},[837],{"type":55,"value":779},{"type":50,"tag":363,"props":839,"children":840},{"style":727},[841],{"type":55,"value":784},{"type":50,"tag":363,"props":843,"children":844},{"style":480},[845],{"type":55,"value":735},{"type":50,"tag":363,"props":847,"children":848},{"style":727},[849],{"type":55,"value":793},{"type":50,"tag":363,"props":851,"children":852},{"style":727},[853],{"type":55,"value":798},{"type":50,"tag":363,"props":855,"children":856},{"style":464},[857],{"type":55,"value":858}," ~\u002F.zshrc\n",{"type":50,"tag":58,"props":860,"children":861},{},[862],{"type":50,"tag":62,"props":863,"children":864},{},[865,870,872,878,880,886,888,894,896,902,904,910],{"type":50,"tag":66,"props":866,"children":867},{},[868],{"type":55,"value":869},"Security note:",{"type":55,"value":871}," Storing credentials in ",{"type":50,"tag":163,"props":873,"children":875},{"className":874},[],[876],{"type":55,"value":877},"~\u002F.bashrc",{"type":55,"value":879}," or ",{"type":50,"tag":163,"props":881,"children":883},{"className":882},[],[884],{"type":55,"value":885},"~\u002F.zshrc",{"type":55,"value":887}," saves\nthem in plaintext. Any process with read access to those files can extract the\nkey. For production, use a credential manager or a dedicated ",{"type":50,"tag":163,"props":889,"children":891},{"className":890},[],[892],{"type":55,"value":893},".env",{"type":55,"value":895}," file with\n",{"type":50,"tag":163,"props":897,"children":899},{"className":898},[],[900],{"type":55,"value":901},"chmod 600",{"type":55,"value":903}," permissions and ",{"type":50,"tag":163,"props":905,"children":907},{"className":906},[],[908],{"type":55,"value":909},"source",{"type":55,"value":911}," it instead.",{"type":50,"tag":88,"props":913,"children":915},{"id":914},"step-5-docker-login-to-nvcrio",[916],{"type":55,"value":917},"Step 5 — Docker Login to nvcr.io",{"type":50,"tag":352,"props":919,"children":921},{"className":354,"code":920,"language":356,"meta":357,"style":357},"echo \"$NGC_API_KEY\" | docker login nvcr.io --username '$oauthtoken' --password-stdin\n",[922],{"type":50,"tag":163,"props":923,"children":924},{"__ignoreMap":357},[925],{"type":50,"tag":363,"props":926,"children":927},{"class":365,"line":27},[928,932,936,941,946,951,955,960,965,970,975,980,985],{"type":50,"tag":363,"props":929,"children":930},{"style":766},[931],{"type":55,"value":769},{"type":50,"tag":363,"props":933,"children":934},{"style":727},[935],{"type":55,"value":774},{"type":50,"tag":363,"props":937,"children":938},{"style":480},[939],{"type":55,"value":940},"$NGC_API_KEY",{"type":50,"tag":363,"props":942,"children":943},{"style":727},[944],{"type":55,"value":945},"\"",{"type":50,"tag":363,"props":947,"children":948},{"style":727},[949],{"type":55,"value":950}," |",{"type":50,"tag":363,"props":952,"children":953},{"style":379},[954],{"type":55,"value":477},{"type":50,"tag":363,"props":956,"children":957},{"style":464},[958],{"type":55,"value":959}," login",{"type":50,"tag":363,"props":961,"children":962},{"style":464},[963],{"type":55,"value":964}," nvcr.io",{"type":50,"tag":363,"props":966,"children":967},{"style":464},[968],{"type":55,"value":969}," --username",{"type":50,"tag":363,"props":971,"children":972},{"style":727},[973],{"type":55,"value":974}," '",{"type":50,"tag":363,"props":976,"children":977},{"style":464},[978],{"type":55,"value":979},"$oauthtoken",{"type":50,"tag":363,"props":981,"children":982},{"style":727},[983],{"type":55,"value":984},"'",{"type":50,"tag":363,"props":986,"children":987},{"style":464},[988],{"type":55,"value":989}," --password-stdin\n",{"type":50,"tag":62,"props":991,"children":992},{},[993],{"type":55,"value":994},"Two non-obvious points often missed:",{"type":50,"tag":125,"props":996,"children":997},{},[998,1025],{"type":50,"tag":129,"props":999,"children":1000},{},[1001,1003,1009,1011,1016,1018,1023],{"type":55,"value":1002},"The ",{"type":50,"tag":163,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":55,"value":1008},"--username",{"type":55,"value":1010}," argument is the literal four-character string ",{"type":50,"tag":163,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":55,"value":979},{"type":55,"value":1017},". It is ",{"type":50,"tag":66,"props":1019,"children":1020},{},[1021],{"type":55,"value":1022},"not",{"type":55,"value":1024}," your NGC display name or email — copy it verbatim.",{"type":50,"tag":129,"props":1026,"children":1027},{},[1028],{"type":55,"value":1029},"The actual credential is the API key from Step 4, piped to stdin.",{"type":50,"tag":62,"props":1031,"children":1032},{},[1033,1035,1041],{"type":55,"value":1034},"A successful login unlocks every ",{"type":50,"tag":163,"props":1036,"children":1038},{"className":1037},[],[1039],{"type":55,"value":1040},"docker pull nvcr.io\u002Fnim\u002Fnvidia\u002F\u003Cimage>:\u003Ctag>",{"type":55,"value":1042}," invocation.",{"type":50,"tag":88,"props":1044,"children":1046},{"id":1045},"step-6-install-riva-python-client",[1047],{"type":55,"value":1048},"Step 6 — Install Riva Python Client",{"type":50,"tag":62,"props":1050,"children":1051},{},[1052,1054,1060,1062,1067],{"type":55,"value":1053},"The example client scripts in ",{"type":50,"tag":163,"props":1055,"children":1057},{"className":1056},[],[1058],{"type":55,"value":1059},"python-clients\u002F",{"type":55,"value":1061}," depend on the ",{"type":50,"tag":163,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":55,"value":314},{"type":55,"value":1068}," package — install it now:",{"type":50,"tag":352,"props":1070,"children":1072},{"className":354,"code":1071,"language":356,"meta":357,"style":357},"pip install nvidia-riva-client\n",[1073],{"type":50,"tag":163,"props":1074,"children":1075},{"__ignoreMap":357},[1076],{"type":50,"tag":363,"props":1077,"children":1078},{"class":365,"line":27},[1079,1084,1088],{"type":50,"tag":363,"props":1080,"children":1081},{"style":379},[1082],{"type":55,"value":1083},"pip",{"type":50,"tag":363,"props":1085,"children":1086},{"style":464},[1087],{"type":55,"value":532},{"type":50,"tag":363,"props":1089,"children":1090},{"style":464},[1091],{"type":55,"value":1092}," nvidia-riva-client\n",{"type":50,"tag":62,"props":1094,"children":1095},{},[1096],{"type":55,"value":1097},"Confirm the install:",{"type":50,"tag":352,"props":1099,"children":1101},{"className":354,"code":1100,"language":356,"meta":357,"style":357},"python3 -c \"import riva.client; print('Riva client OK')\"\n",[1102],{"type":50,"tag":163,"props":1103,"children":1104},{"__ignoreMap":357},[1105],{"type":50,"tag":363,"props":1106,"children":1107},{"class":365,"line":27},[1108,1113,1118,1122,1127],{"type":50,"tag":363,"props":1109,"children":1110},{"style":379},[1111],{"type":55,"value":1112},"python3",{"type":50,"tag":363,"props":1114,"children":1115},{"style":464},[1116],{"type":55,"value":1117}," -c",{"type":50,"tag":363,"props":1119,"children":1120},{"style":727},[1121],{"type":55,"value":774},{"type":50,"tag":363,"props":1123,"children":1124},{"style":464},[1125],{"type":55,"value":1126},"import riva.client; print('Riva client OK')",{"type":50,"tag":363,"props":1128,"children":1129},{"style":727},[1130],{"type":55,"value":1131},"\"\n",{"type":50,"tag":88,"props":1133,"children":1135},{"id":1134},"step-7-clone-client-repos-optional",[1136],{"type":55,"value":1137},"Step 7 — Clone Client Repos (Optional)",{"type":50,"tag":62,"props":1139,"children":1140},{},[1141],{"type":55,"value":1142},"Open-source sample scripts live in three public repos; clone whichever match the protocol you'll exercise:",{"type":50,"tag":352,"props":1144,"children":1146},{"className":354,"code":1145,"language":356,"meta":357,"style":357},"# Python clients and sample scripts\ngit clone https:\u002F\u002Fgithub.com\u002Fnvidia-riva\u002Fpython-clients\n\n# C++ clients (requires Bazel)\ngit clone https:\u002F\u002Fgithub.com\u002Fnvidia-riva\u002Fcpp-clients\n\n# WebSocket bridge (AudioCodes \u002F telephony)\ngit clone https:\u002F\u002Fgithub.com\u002Fnvidia-riva\u002Fwebsocket-bridge\n",[1147],{"type":50,"tag":163,"props":1148,"children":1149},{"__ignoreMap":357},[1150,1158,1176,1183,1191,1207,1214,1223],{"type":50,"tag":363,"props":1151,"children":1152},{"class":365,"line":27},[1153],{"type":50,"tag":363,"props":1154,"children":1155},{"style":369},[1156],{"type":55,"value":1157},"# Python clients and sample scripts\n",{"type":50,"tag":363,"props":1159,"children":1160},{"class":365,"line":375},[1161,1166,1171],{"type":50,"tag":363,"props":1162,"children":1163},{"style":379},[1164],{"type":55,"value":1165},"git",{"type":50,"tag":363,"props":1167,"children":1168},{"style":464},[1169],{"type":55,"value":1170}," clone",{"type":50,"tag":363,"props":1172,"children":1173},{"style":464},[1174],{"type":55,"value":1175}," https:\u002F\u002Fgithub.com\u002Fnvidia-riva\u002Fpython-clients\n",{"type":50,"tag":363,"props":1177,"children":1178},{"class":365,"line":572},[1179],{"type":50,"tag":363,"props":1180,"children":1181},{"emptyLinePlaceholder":809},[1182],{"type":55,"value":812},{"type":50,"tag":363,"props":1184,"children":1185},{"class":365,"line":815},[1186],{"type":50,"tag":363,"props":1187,"children":1188},{"style":369},[1189],{"type":55,"value":1190},"# C++ clients (requires Bazel)\n",{"type":50,"tag":363,"props":1192,"children":1193},{"class":365,"line":824},[1194,1198,1202],{"type":50,"tag":363,"props":1195,"children":1196},{"style":379},[1197],{"type":55,"value":1165},{"type":50,"tag":363,"props":1199,"children":1200},{"style":464},[1201],{"type":55,"value":1170},{"type":50,"tag":363,"props":1203,"children":1204},{"style":464},[1205],{"type":55,"value":1206}," https:\u002F\u002Fgithub.com\u002Fnvidia-riva\u002Fcpp-clients\n",{"type":50,"tag":363,"props":1208,"children":1209},{"class":365,"line":23},[1210],{"type":50,"tag":363,"props":1211,"children":1212},{"emptyLinePlaceholder":809},[1213],{"type":55,"value":812},{"type":50,"tag":363,"props":1215,"children":1217},{"class":365,"line":1216},7,[1218],{"type":50,"tag":363,"props":1219,"children":1220},{"style":369},[1221],{"type":55,"value":1222},"# WebSocket bridge (AudioCodes \u002F telephony)\n",{"type":50,"tag":363,"props":1224,"children":1226},{"class":365,"line":1225},8,[1227,1231,1235],{"type":50,"tag":363,"props":1228,"children":1229},{"style":379},[1230],{"type":55,"value":1165},{"type":50,"tag":363,"props":1232,"children":1233},{"style":464},[1234],{"type":55,"value":1170},{"type":50,"tag":363,"props":1236,"children":1237},{"style":464},[1238],{"type":55,"value":1239}," https:\u002F\u002Fgithub.com\u002Fnvidia-riva\u002Fwebsocket-bridge\n",{"type":50,"tag":88,"props":1241,"children":1243},{"id":1242},"examples",[1244],{"type":55,"value":1245},"Examples",{"type":50,"tag":62,"props":1247,"children":1248},{},[1249],{"type":55,"value":1250},"Three quick sanity checks anyone can rerun later to confirm the environment hasn't drifted.",{"type":50,"tag":62,"props":1252,"children":1253},{},[1254],{"type":50,"tag":66,"props":1255,"children":1256},{},[1257],{"type":55,"value":1258},"After Step 3 — container-level GPU visibility:",{"type":50,"tag":352,"props":1260,"children":1261},{"className":354,"code":600,"language":356,"meta":357,"style":357},[1262],{"type":50,"tag":163,"props":1263,"children":1264},{"__ignoreMap":357},[1265],{"type":50,"tag":363,"props":1266,"children":1267},{"class":365,"line":27},[1268,1272,1276,1280,1284,1288,1292,1296],{"type":50,"tag":363,"props":1269,"children":1270},{"style":379},[1271],{"type":55,"value":16},{"type":50,"tag":363,"props":1273,"children":1274},{"style":464},[1275],{"type":55,"value":616},{"type":50,"tag":363,"props":1277,"children":1278},{"style":464},[1279],{"type":55,"value":621},{"type":50,"tag":363,"props":1281,"children":1282},{"style":464},[1283],{"type":55,"value":626},{"type":50,"tag":363,"props":1285,"children":1286},{"style":464},[1287],{"type":55,"value":631},{"type":50,"tag":363,"props":1289,"children":1290},{"style":464},[1291],{"type":55,"value":636},{"type":50,"tag":363,"props":1293,"children":1294},{"style":464},[1295],{"type":55,"value":641},{"type":50,"tag":363,"props":1297,"children":1298},{"style":464},[1299],{"type":55,"value":646},{"type":50,"tag":62,"props":1301,"children":1302},{},[1303],{"type":50,"tag":66,"props":1304,"children":1305},{},[1306],{"type":55,"value":1307},"After Step 6 — Python client import test:",{"type":50,"tag":352,"props":1309,"children":1310},{"className":354,"code":1100,"language":356,"meta":357,"style":357},[1311],{"type":50,"tag":163,"props":1312,"children":1313},{"__ignoreMap":357},[1314],{"type":50,"tag":363,"props":1315,"children":1316},{"class":365,"line":27},[1317,1321,1325,1329,1333],{"type":50,"tag":363,"props":1318,"children":1319},{"style":379},[1320],{"type":55,"value":1112},{"type":50,"tag":363,"props":1322,"children":1323},{"style":464},[1324],{"type":55,"value":1117},{"type":50,"tag":363,"props":1326,"children":1327},{"style":727},[1328],{"type":55,"value":774},{"type":50,"tag":363,"props":1330,"children":1331},{"style":464},[1332],{"type":55,"value":1126},{"type":50,"tag":363,"props":1334,"children":1335},{"style":727},[1336],{"type":55,"value":1131},{"type":50,"tag":62,"props":1338,"children":1339},{},[1340],{"type":50,"tag":66,"props":1341,"children":1342},{},[1343,1345,1351],{"type":55,"value":1344},"Step 5 reproduced — re-authenticate against ",{"type":50,"tag":163,"props":1346,"children":1348},{"className":1347},[],[1349],{"type":55,"value":1350},"nvcr.io",{"type":55,"value":1352}," after a key rotation:",{"type":50,"tag":352,"props":1354,"children":1355},{"className":354,"code":920,"language":356,"meta":357,"style":357},[1356],{"type":50,"tag":163,"props":1357,"children":1358},{"__ignoreMap":357},[1359],{"type":50,"tag":363,"props":1360,"children":1361},{"class":365,"line":27},[1362,1366,1370,1374,1378,1382,1386,1390,1394,1398,1402,1406,1410],{"type":50,"tag":363,"props":1363,"children":1364},{"style":766},[1365],{"type":55,"value":769},{"type":50,"tag":363,"props":1367,"children":1368},{"style":727},[1369],{"type":55,"value":774},{"type":50,"tag":363,"props":1371,"children":1372},{"style":480},[1373],{"type":55,"value":940},{"type":50,"tag":363,"props":1375,"children":1376},{"style":727},[1377],{"type":55,"value":945},{"type":50,"tag":363,"props":1379,"children":1380},{"style":727},[1381],{"type":55,"value":950},{"type":50,"tag":363,"props":1383,"children":1384},{"style":379},[1385],{"type":55,"value":477},{"type":50,"tag":363,"props":1387,"children":1388},{"style":464},[1389],{"type":55,"value":959},{"type":50,"tag":363,"props":1391,"children":1392},{"style":464},[1393],{"type":55,"value":964},{"type":50,"tag":363,"props":1395,"children":1396},{"style":464},[1397],{"type":55,"value":969},{"type":50,"tag":363,"props":1399,"children":1400},{"style":727},[1401],{"type":55,"value":974},{"type":50,"tag":363,"props":1403,"children":1404},{"style":464},[1405],{"type":55,"value":979},{"type":50,"tag":363,"props":1407,"children":1408},{"style":727},[1409],{"type":55,"value":984},{"type":50,"tag":363,"props":1411,"children":1412},{"style":464},[1413],{"type":55,"value":989},{"type":50,"tag":88,"props":1415,"children":1417},{"id":1416},"troubleshooting",[1418],{"type":55,"value":1419},"Troubleshooting",{"type":50,"tag":125,"props":1421,"children":1422},{},[1423,1453,1463,1493,1530],{"type":50,"tag":129,"props":1424,"children":1425},{},[1426,1437,1439,1444,1446,1451],{"type":50,"tag":66,"props":1427,"children":1428},{},[1429,1435],{"type":50,"tag":163,"props":1430,"children":1432},{"className":1431},[],[1433],{"type":55,"value":1434},"docker login",{"type":55,"value":1436}," fails authentication",{"type":55,"value":1438}," → the ",{"type":50,"tag":163,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":55,"value":1008},{"type":55,"value":1445}," value must be the literal ",{"type":50,"tag":163,"props":1447,"children":1449},{"className":1448},[],[1450],{"type":55,"value":979},{"type":55,"value":1452}," string. Many users instinctively type their NGC email or display name here; that's the most common cause of 401 on this step.",{"type":50,"tag":129,"props":1454,"children":1455},{},[1456,1461],{"type":50,"tag":66,"props":1457,"children":1458},{},[1459],{"type":55,"value":1460},"CUDA library version mismatches at container start",{"type":55,"value":1462}," → check that you didn't install the CUDA toolkit at the host level. The NIM container ships its own toolkit; a parallel host install will fight it.",{"type":50,"tag":129,"props":1464,"children":1465},{},[1466,1483,1485,1491],{"type":50,"tag":66,"props":1467,"children":1468},{},[1469,1475,1477],{"type":50,"tag":163,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":55,"value":1474},"docker run",{"type":55,"value":1476}," still wants sudo after ",{"type":50,"tag":163,"props":1478,"children":1480},{"className":1479},[],[1481],{"type":55,"value":1482},"usermod -aG docker",{"type":55,"value":1484}," → group membership only applies to new login sessions. Log out and back in (or open a new shell with ",{"type":50,"tag":163,"props":1486,"children":1488},{"className":1487},[],[1489],{"type":55,"value":1490},"newgrp docker",{"type":55,"value":1492},") and the membership takes effect.",{"type":50,"tag":129,"props":1494,"children":1495},{},[1496,1513,1515,1521,1523,1528],{"type":50,"tag":66,"props":1497,"children":1498},{},[1499,1505,1507],{"type":50,"tag":163,"props":1500,"children":1502},{"className":1501},[],[1503],{"type":55,"value":1504},"nvidia-container-cli",{"type":55,"value":1506}," reports ",{"type":50,"tag":163,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":55,"value":1512},"version: GLIBC_X.YY not found",{"type":55,"value":1514}," → host glibc is older than what the NIM expects. Confirm via ",{"type":50,"tag":163,"props":1516,"children":1518},{"className":1517},[],[1519],{"type":55,"value":1520},"ld -v",{"type":55,"value":1522}," against the minimum listed at ",{"type":50,"tag":110,"props":1524,"children":1526},{"href":112,"rel":1525},[114],[1527],{"type":55,"value":112},{"type":55,"value":1529}," — older Ubuntu LTS releases may need an upgrade.",{"type":50,"tag":129,"props":1531,"children":1532},{},[1533,1538],{"type":50,"tag":66,"props":1534,"children":1535},{},[1536],{"type":55,"value":1537},"Running inside WSL2 on Windows",{"type":55,"value":1539}," → swap Docker for Podman, ensure your NVIDIA driver is ≥ 570, use Ubuntu 24.04 inside WSL, and note that only specific Parakeet models are currently supported under WSL2.",{"type":50,"tag":88,"props":1541,"children":1543},{"id":1542},"limitations",[1544],{"type":55,"value":1545},"Limitations",{"type":50,"tag":125,"props":1547,"children":1548},{},[1549,1554,1559,1564],{"type":50,"tag":129,"props":1550,"children":1551},{},[1552],{"type":55,"value":1553},"Host architecture is x86_64 only. WSL2 on Windows is a partially supported path with Podman replacing Docker and a narrower model catalog (Parakeet subset).",{"type":50,"tag":129,"props":1555,"children":1556},{},[1557],{"type":55,"value":1558},"Self-hosting a Riva NIM is gated behind an active NVIDIA AI Enterprise license.",{"type":50,"tag":129,"props":1560,"children":1561},{},[1562],{"type":55,"value":1563},"The host should not carry a separate CUDA toolkit install — the NIM container brings the toolkit it expects. Parallel installs at the host level are a frequent source of breakage.",{"type":50,"tag":129,"props":1565,"children":1566},{},[1567,1569,1574,1576,1581],{"type":55,"value":1568},"Adding a user to the ",{"type":50,"tag":163,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":55,"value":16},{"type":55,"value":1575}," group requires re-logging in before that user can run Docker commands without ",{"type":50,"tag":163,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":55,"value":168},{"type":55,"value":1582},".",{"type":50,"tag":88,"props":1584,"children":1586},{"id":1585},"next-steps",[1587],{"type":55,"value":1588},"Next Steps",{"type":50,"tag":62,"props":1590,"children":1591},{},[1592],{"type":55,"value":1593},"Once Steps 1–7 are green, route to the deployment skill that matches the modality you want:",{"type":50,"tag":125,"props":1595,"children":1596},{},[1597,1613,1628,1643],{"type":50,"tag":129,"props":1598,"children":1599},{},[1600,1605,1607],{"type":50,"tag":66,"props":1601,"children":1602},{},[1603],{"type":55,"value":1604},"Model choice undecided",{"type":55,"value":1606}," → ",{"type":50,"tag":163,"props":1608,"children":1610},{"className":1609},[],[1611],{"type":55,"value":1612},"riva-model-selection",{"type":50,"tag":129,"props":1614,"children":1615},{},[1616,1621,1622],{"type":50,"tag":66,"props":1617,"children":1618},{},[1619],{"type":55,"value":1620},"Speech-to-text deployments",{"type":55,"value":1606},{"type":50,"tag":163,"props":1623,"children":1625},{"className":1624},[],[1626],{"type":55,"value":1627},"riva-asr",{"type":50,"tag":129,"props":1629,"children":1630},{},[1631,1636,1637],{"type":50,"tag":66,"props":1632,"children":1633},{},[1634],{"type":55,"value":1635},"Text-to-speech deployments",{"type":55,"value":1606},{"type":50,"tag":163,"props":1638,"children":1640},{"className":1639},[],[1641],{"type":55,"value":1642},"riva-tts",{"type":50,"tag":129,"props":1644,"children":1645},{},[1646,1651,1652],{"type":50,"tag":66,"props":1647,"children":1648},{},[1649],{"type":55,"value":1650},"Translation deployments",{"type":55,"value":1606},{"type":50,"tag":163,"props":1653,"children":1655},{"className":1654},[],[1656],{"type":55,"value":1657},"riva-nmt",{"type":50,"tag":1659,"props":1660,"children":1661},"style",{},[1662],{"type":55,"value":1663},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1665,"total":824},[1666,1683,1695,1708,1715],{"slug":1667,"name":1667,"fn":1668,"description":1669,"org":1670,"tags":1671,"stars":23,"repoUrl":24,"updatedAt":1682},"nemo-clinical-data-designer","generate synthetic clinical datasets","Use when generating synthetic tabular datasets via Data Designer — sampler columns, LLM columns, custom generators. Not for ASR audio.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1672,1675,1678,1681],{"name":1673,"slug":1674,"type":13},"Data Analysis","data-analysis",{"name":1676,"slug":1677,"type":13},"Datasets","datasets",{"name":1679,"slug":1680,"type":13},"Life Sciences","life-sciences",{"name":9,"slug":8,"type":13},"2026-07-14T05:35:42.770246",{"slug":1627,"name":1627,"fn":1684,"description":1685,"org":1686,"tags":1687,"stars":23,"repoUrl":24,"updatedAt":1694},"run and test Riva ASR models","Use when the user wants to deploy, run, or test an ASR (speech-to-text) Riva NIM — cloud-hosted (build.nvidia.com) or self-hosted Parakeet\u002FCanary\u002FWhisper.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1688,1689,1690,1691],{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":21,"slug":22,"type":13},{"name":1692,"slug":1693,"type":13},"Testing","testing","2026-07-14T05:35:49.042673",{"slug":1696,"name":1696,"fn":1697,"description":1698,"org":1699,"tags":1700,"stars":23,"repoUrl":24,"updatedAt":1707},"riva-asr-custom","deploy custom Riva ASR models","Use when the user wants to deploy a custom-trained ASR model as a Riva NIM, or convert a NeMo model via nemo2riva \u002F riva-build \u002F riva-deploy \u002F RMIR.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1701,1702,1705,1706],{"name":18,"slug":19,"type":13},{"name":1703,"slug":1704,"type":13},"Deployment","deployment",{"name":9,"slug":8,"type":13},{"name":21,"slug":22,"type":13},"2026-07-14T05:35:44.009948",{"slug":4,"name":4,"fn":5,"description":6,"org":1709,"tags":1710,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1711,1712,1713,1714],{"name":18,"slug":19,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":21,"slug":22,"type":13},{"slug":1642,"name":1642,"fn":1716,"description":1717,"org":1718,"tags":1719,"stars":23,"repoUrl":24,"updatedAt":1728},"deploy and run Riva TTS models","Use when the user wants to deploy, run, or test a TTS (speech-synthesis) Riva NIM — cloud-hosted (build.nvidia.com) or self-hosted Magpie \u002F voice cloning.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1720,1721,1724,1725],{"name":18,"slug":19,"type":13},{"name":1722,"slug":1723,"type":13},"Audio","audio",{"name":9,"slug":8,"type":13},{"name":1726,"slug":1727,"type":13},"Text-to-Speech","text-to-speech","2026-07-14T05:35:45.262923",{"items":1730,"total":1885},[1731,1749,1765,1776,1788,1802,1815,1829,1840,1851,1865,1874],{"slug":1732,"name":1732,"fn":1733,"description":1734,"org":1735,"tags":1736,"stars":1746,"repoUrl":1747,"updatedAt":1748},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1737,1740,1743],{"name":1738,"slug":1739,"type":13},"Documentation","documentation",{"name":1741,"slug":1742,"type":13},"MCP","mcp",{"name":1744,"slug":1745,"type":13},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1750,"name":1750,"fn":1751,"description":1752,"org":1753,"tags":1754,"stars":1762,"repoUrl":1763,"updatedAt":1764},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1755,1758,1759],{"name":1756,"slug":1757,"type":13},"Containers","containers",{"name":1703,"slug":1704,"type":13},{"name":1760,"slug":1761,"type":13},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1766,"name":1766,"fn":1767,"description":1768,"org":1769,"tags":1770,"stars":1762,"repoUrl":1763,"updatedAt":1775},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1771,1774],{"name":1772,"slug":1773,"type":13},"CI\u002FCD","ci-cd",{"name":1703,"slug":1704,"type":13},"2026-07-14T05:25:59.97109",{"slug":1777,"name":1777,"fn":1778,"description":1779,"org":1780,"tags":1781,"stars":1762,"repoUrl":1763,"updatedAt":1787},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1782,1783,1784],{"name":1772,"slug":1773,"type":13},{"name":1703,"slug":1704,"type":13},{"name":1785,"slug":1786,"type":13},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1789,"name":1789,"fn":1790,"description":1791,"org":1792,"tags":1793,"stars":1762,"repoUrl":1763,"updatedAt":1801},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1794,1797,1798],{"name":1795,"slug":1796,"type":13},"Debugging","debugging",{"name":1785,"slug":1786,"type":13},{"name":1799,"slug":1800,"type":13},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1803,"name":1803,"fn":1804,"description":1805,"org":1806,"tags":1807,"stars":1762,"repoUrl":1763,"updatedAt":1814},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1808,1811],{"name":1809,"slug":1810,"type":13},"Best Practices","best-practices",{"name":1812,"slug":1813,"type":13},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1816,"name":1816,"fn":1817,"description":1818,"org":1819,"tags":1820,"stars":1762,"repoUrl":1763,"updatedAt":1828},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1821,1824,1827],{"name":1822,"slug":1823,"type":13},"Machine Learning","machine-learning",{"name":1825,"slug":1826,"type":13},"Migration","migration",{"name":9,"slug":8,"type":13},"2026-07-17T06:07:11.777011",{"slug":1830,"name":1830,"fn":1831,"description":1832,"org":1833,"tags":1834,"stars":1762,"repoUrl":1763,"updatedAt":1839},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1835,1838],{"name":1836,"slug":1837,"type":13},"QA","qa",{"name":1692,"slug":1693,"type":13},"2026-07-14T05:25:53.673039",{"slug":1841,"name":1841,"fn":1842,"description":1843,"org":1844,"tags":1845,"stars":1762,"repoUrl":1763,"updatedAt":1850},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1846,1847],{"name":1703,"slug":1704,"type":13},{"name":1848,"slug":1849,"type":13},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1852,"name":1852,"fn":1853,"description":1854,"org":1855,"tags":1856,"stars":1762,"repoUrl":1763,"updatedAt":1864},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1857,1860,1861],{"name":1858,"slug":1859,"type":13},"Code Review","code-review",{"name":1785,"slug":1786,"type":13},{"name":1862,"slug":1863,"type":13},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1866,"name":1866,"fn":1867,"description":1868,"org":1869,"tags":1870,"stars":1762,"repoUrl":1763,"updatedAt":1873},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1871,1872],{"name":1836,"slug":1837,"type":13},{"name":1692,"slug":1693,"type":13},"2026-07-14T05:25:54.928983",{"slug":1875,"name":1875,"fn":1876,"description":1877,"org":1878,"tags":1879,"stars":1762,"repoUrl":1763,"updatedAt":1884},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1880,1883],{"name":1881,"slug":1882,"type":13},"Automation","automation",{"name":1772,"slug":1773,"type":13},"2026-07-30T05:29:03.275638",496]