Skip to content
Browse Docs

Deep Dives

AI: Claude and Codex patterns

ConfigHub: Deploy and manage

Docs
Configs
Stacks
Apps
Plugins
Guides

The AICR-native inference entry, held next to the KServe one

The catalog's other inference entry retains NVIDIA's nim-deploy KServe reference implementation. This one retains what AICR produces for the same intent. A study of AICR's composition model found the native path after the KServe entry was already built, and holding both is the honest response. It is one of the NVIDIA AICR pages. You can also view this as a markdown file.

Use this entry in ConfigHub in five steps, from fetching its exact objects to promoting a change.

What it is. AICR recipe aicr-eks-h100-inference-nim v0.14.0, as 20 Argo CD Applications.

Install it. Apply its Applications on a cluster that runs Argo CD. The five steps below give the commands.

Needs first. Apply the 19 component Applications in the 19 sync-waves they carry, from wave 0 to wave 18. The order is recorded as a route beside the bundle and no runtime has executed it. Argo CD renders 16 upstream charts and 4 AICR bundle paths at sync time. Their CRDs, hooks, certificates and operators are handled there, and this entry has not rendered or assessed them.

UNOFFICIAL/EXPERIMENTAL. This entry belongs to the AICR catalog overview. It asks AICR itself for a NIM inference platform, and it exists so the catalog holds both credible NVIDIA answers to "how do I serve NIM" rather than quietly preferring one.

What it is

AICR v0.14.0 treats nim as a platform criteria value, the same way it treats kubeflow for training. Asking for it resolves eight overlays into seventeen components, including the NIM operator at 3.1.0 and an inference gateway, and the Argo CD bundle renders into twenty Applications.

aicr recipe --service eks --accelerator h100 --os ubuntu \
  --intent inference --platform nim --output recipe.yaml

The generation receipt records the exact commands, the criteria, the generation inputs, and one thing worth stating plainly: the binary that produced this entry was checked against the checksums pinned in the training entry's own receipt before it was run.

What changes between training and inference

This is the clearest picture of AICR's composition model the catalog has, and it is a small diff on a large shared spine. Fifteen of the components are identical to the training entry. Training adds the Kubeflow trainer and its post-install Application. Inference removes those and adds the NIM operator plus the agentgateway inference gateway.

ShapeApplicationsDistinct components
Training, platform: kubeflow17kubeflow-trainer, kubeflow-trainer-post
Inference, platform: nim20k8s-nim-operator, agentgateway, agentgateway-crds, and their two post Applications

One criteria value moves the platform from training to serving. That is the argument for retaining recipes rather than hand-assembled YAML, made concrete.

How the two inference entries differ

They are not competitors. They answer different questions at different granularities, which only became visible once both were retained.

AICR-native (this entry)nim-deploy KServe entry
SourceAICR v0.14.0 itselfNVIDIA/nim-deploy at commit 3ef33472
GranularityPlatform componentsModel serving shapes
Retained documents20 Argo CD Applications26 KServe documents
Serving mechanismThe NIM operator reconciles NIM custom resourcesKServe InferenceService against a ClusterServingRuntime
Model choice expressed asA custom resource the operator consumes, not retained hereSixteen retained model-by-GPU shapes
Gatewayagentgateway with the Gateway API inference extensionNone retained
AnswersHow do I stand up a cluster that can serve NIMWhich exact serving shape do I run for this model

A team needs both halves. The platform entry gets an inference-capable cluster; the KServe entry names the exact shape a given model runs in. The catalog retains both and says which is which, rather than picking one and calling it the inference story.

One digest pins this entry too

npm run aicr-inference-nim:verify

The digest index pins the upstream source, the recipe criteria, and all twenty rendered Applications under sha256:cc4ea0fb2347d3c74d77642bb930aa3caa48d4115e4a3017fe95b140b025c4a2. The compiler that produces it is the one the training entry uses, generalized to serve any AICR entry.

The operator's config surface, proven on a cluster

npm run aicr-nim-operator-delivery:verify

This entry installs the NIM operator, and the operator's custom resource definitions are the surface a team actually writes against. Both definitions a NIM deployment needs are retained here from the Apache-2.0 operator repository at v3.1.0, which is the same version this entry's own rendered Application installs. The proof refuses to run unless those agree, because definitions that drift from the component they describe would accept shapes the deployed operator rejects.

On a throwaway kind cluster the definitions were established and the catalog's own authored NIMService was accepted with its gated image reference intact. That resource is authored rather than retained, and the page says so, because upstream ships no ready-made NIMService for this shape and inventing one quietly would be the kind of manufactured content this catalog refuses.

The operator itself was never installed. With nothing reconciling a NIMService, the run scheduled no pod and pulled no image, which is how the config-plane boundary and the licensing boundary hold together rather than separately.

What is proven and what is not

Proven: the entry was generated by a binary verified against a committed receipt, the recipe and every rendered Application are retained byte for byte, and one digest pins the shape.

Not proven, and stated rather than implied: this entry was never published, so it carries no public digest and no OCI transport receipts, and the repository reference in its Applications is what a publication would use rather than a record that one happened. No ConfigHub import or promotion exists for it yet, and the delivery proof above covers the operator's config surface rather than the whole platform. No NIM container ran, no model was fetched, and no NGC surface was contacted. It exists first as a comparison, and the ladder the other entries climbed is open to it next.

Use this entry in ConfigHub

Every Catalog entry page carries these five steps in this order. Each step says what the Catalog has run for this entry, and a step with a missing precondition gives no command.

Steps 1 and 2 need no account.

What is fixed, and what you supply

Fixed when this entry was built. These went into the build, so the objects already carry them. To change one, build the entry again from its source.

  • accelerator is h100
  • intent is inference
  • os is ubuntu
  • platform is nim
  • service is eks
  • acceleratedNodeSelector is nvidia.com/gpu.present=true
  • repoURL is oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt
  • storageClass is gp3
  • workloadSelector is app.kubernetes.io/part-of=inference
  • deployer is argocd-helm
  • selectedOverlay is h100-eks-ubuntu-inference-nim
  • appliedOverlays is base>monitoring-hpa>h100-any>eks>eks-inference>h100-eks-inference>h100-eks-ubuntu-inference>h100-eks-ubuntu-inference-nim

Yours to supply or check. The destination must have these before the objects are applied. The words in italics say what the Catalog knows about each.

  • Argo CD and its Application API must exist on the destination, with the argocd namespace, because every object in this base is an Argo CD Application in that namespace. Declared. Not checked on any destination.
  • 4 of the 20 Applications take their source from oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/aicr-bundle at 0.14.0. That package is not published, so a destination needs a reachable copy before Argo CD can resolve them. Declared. Not checked on any destination.
  • AICR generated this recipe for accelerator=h100, intent=inference, os=ubuntu, platform=nim, service=eks. A destination has to match those criteria, and nothing here has checked one. Declared. Not checked on any destination.
This entry's plan, and how to test it

These are the steps that plain objects cannot carry. ConfigHub stores them and does not carry them out. The words in italics say what the Catalog knows about each.

  • Once the destination is known. Apply the 19 component Applications in the 19 sync-waves they carry, from wave 0 to wave 18. The order is recorded as a route beside the bundle and no runtime has executed it. Who: Argo CD on the selected destination. Generated. Not run on a cluster.
  • Once the destination is known. Argo CD renders 16 upstream charts and 4 AICR bundle paths at sync time. Their CRDs, hooks, certificates and operators are handled there, and this entry has not rendered or assessed them. Who: Argo CD on the selected destination. Not evaluated.

Read what a plan is, and why some entries have one.

1. Get the exact objects Run for this entry

The Catalog rendered this entry and retains its 20 Argo CD Applications as files that one inventory lists.

# make the directories the inventory names
$ mkdir -p aicr-eks-h100-inference-nim-v0-14-0-argocd/templates

# fetch the inventory, then every file it lists
$ curl -fsSL -o aicr-eks-h100-inference-nim-v0-14-0-argocd/checksums.txt https://raw.githubusercontent.com/confighub/helm-expt/main/examples/aicr/eks-h100-inference-nim/argocd-rendered/checksums.txt

$ cut -c67- aicr-eks-h100-inference-nim-v0-14-0-argocd/checksums.txt | xargs -I{} curl -fsSL -o aicr-eks-h100-inference-nim-v0-14-0-argocd/{} https://raw.githubusercontent.com/confighub/helm-expt/main/examples/aicr/eks-h100-inference-nim/argocd-rendered/{}

# check every file against the inventory
$ (cd aicr-eks-h100-inference-nim-v0-14-0-argocd && shasum -a 256 -c checksums.txt)

# check the inventory against the listing digest
$ shasum -a 256 aicr-eks-h100-inference-nim-v0-14-0-argocd/checksums.txt
2013f555eb357921da5d684c681b592608d2f772c1bbac69fb79423f1c224e0e  aicr-eks-h100-inference-nim-v0-14-0-argocd/checksums.txt

# join the files into one for step 2
$ cat aicr-eks-h100-inference-nim-v0-14-0-argocd/templates/*.yaml > aicr-eks-h100-inference-nim-v0-14-0-argocd.yaml

2. Compare with another version or base Not available yet

The Catalog holds no other version or base of this entry's source in the same format. A second entry for eks-h100-inference-nim in this format would give this step a sibling.

3. Upload it as a variant Partly run for this entry

The record holds a local, temporary or separately recorded upload for this entry, and no retained one. The listing names no public artifact for it, so no upload command is given. Read the receipt.

4. Deploy it Not available yet

This step needs an upload command from step 3, and this entry has none. A published artifact for this entry, with a receipt, would make this step available.

5. Promote a change Not available yet

This step needs an upload command from step 3, and this entry has none. A published artifact for this entry, with a receipt, would make this step available.

Technical notes and disclaimers

  • This entry is a set of Argo CD Applications, so a test needs Argo CD. The Catalog has no test script for it.

Generated from the committed markdown file docs/demo/aicr/eks-h100-inference-nim.md. The source file is the authoritative version.