NVIDIA Workload Map: Migrating AI Workload Structural Knowledge from Adapter Code to Declarative Definitions
An NVIDIA technical blog post explains how Workload Map migrates the structural knowledge of AI workloads on Kubernetes from compiled adapter code to auditable YAML data definitions, enabling schedulers, controllers, and platforms to perform workload inspection, gang scheduling, and unified management through a single description.
When running distributed AI training or inference tasks on Kubernetes, a real-world workload is rarely a single Pod. It is a small resource tree: several groups of Pods, each with a role, replica count, Pod template, and status dependent on the workload type. Frameworks such as JobSet, LeaderWorkerSet, PyTorchJob, and RayCluster encode this information in different ways. Teams building schedulers, controllers, dashboards, or cost tools therefore face a combinatorial explosion problem: for every new framework CRD integrated, they must write a set of adapters to answer the same three questions—what is the structure of the workload? How is the state interpreted into operational phases? And how can Pod specifications be modified without breaking the workload?
The NVIDIA Run:ai team encountered this bottleneck while building their platform. In an NVIDIA technical blog post published in November 2026, Alon Lavian (Product Manager at NVIDIA Run:ai, responsible for positioning and promoting Workload Map), Yuval Grauer (Engineering Lead at NVIDIA and maintainer of Workload Map), and Ron Lev (Senior Software Engineer at NVIDIA and technical lead for Workload Map) described the current situation: every new customer framework requires another adapter; thus, adapter development becomes a roadmap item scheduled per framework rather than a one-time cost. This is why support for new workload types often has to wait for a version release.
Workload Map (formerly Karta; the CRD kind remains Karta) proposes moving workload structural knowledge from compiled code to declarative data. It consists of a Kubernetes CRD and a Go interpretation library. Each definition uses YAML to describe the Pod template path, replica count calculation method, and status field location for that workload type. The article uses JobSet as an example to show key parts: the root component translates the JobSet-specific replicatedJobsStatus field into unified Running, Completed, and Failed phases using jq expressions; child components use path expressions to locate the Pod template for each replicated Job and calculate the actual number of Pods by multiplying replicas by parallelism.