Skip to main content

Open-sourcing TauGrid: cloud-native AI infrastructure for GPU workloads on Kubernetes

· 6 min read
Pengfei Ni
Principal Software Engineer at Microsoft
June Liu
Principal Software Engineer at Microsoft
Kevin Cho
Senior Software Engineer at Microsoft
Guoxun Wei
Senior Software Engineer at Microsoft

Running AI workloads on Kubernetes often requires platform teams to assemble and maintain multiple open-source projects, custom scripts, and operational tools. This includes the glue between those components: submission scripts, queue wrappers, health checks, and result retrieval. TauGrid brings these pieces together into a single platform, so platform teams operate one stack instead of many, and researchers submit workloads without learning Kubernetes.

We are delighted to announce the open-source release of TauGrid. TauGrid combines the tau CLI, Kueue queueing, KubeRay orchestration, GPU-node health monitoring, and observability in a single Kubernetes-native stack. It supports workflows spanning data preparation, distributed training, fine-tuning, and inference.

Instead of building and maintaining these components and the integration between them separately, TauGrid provides a single Helm install with clear ownership boundaries. Platform teams get a unified way to operate the stack, while researchers get one CLI to submit workloads, observe their progress, recover from failures, and retrieve results without interacting with Kubernetes directly.

The project is MIT-licensed and available at github.com/Azure/taugrid, with container images and Helm charts published to Microsoft Container Registry. Full documentation is available at azure.github.io/taugrid.

What is TauGrid?

TauGrid is an open-source, self-hosted platform for running AI workloads on Kubernetes. It gives teams the key benefits of a managed AI platform (job submission, scalable distributed computing, shared GPU resources, experiment tracking, and operational controls) while running on infrastructure they manage in their own cloud or data center.

Researchers work from a repository and the Tau CLI. Platform teams provide governed workspaces, queues, compute profiles, storage, identity, and observability. TauGrid connects those two experiences across training, fine-tuning, batch inference, and serving. The result is reduced operational complexity for platform teams, faster onboarding for researchers, better GPU utilization through shared queueing, and consistent experiment reproducibility through evidence records.

TauGrid architecture: from researcher intent through the TauGrid workflow layer to Kubernetes execution and evidence

How it works

TauGrid uses a tau.yaml configuration file to describe the workload. Here is a GPU training example that runs a PyTorch workload on a single A100:

schema_version: 1
name: aks-gpu-quickstart
run:
entrypoint: train.py
workload_kind: rayjob
compute:
gpus: 1
workers: 1
cpus: 16
memory: 64Gi
runtime:
image: mcr.microsoft.com/aks/ai-runtime/ray:py3.12-ray2.56.0-cuda13.0
pip:
- torch>=2.4.0

Once submitted with tau run, TauGrid resolves platform policy, renders a KubeRay RayJob, and submits it through Kueue. Status, logs, checkpoints, and experiment evidence are tracked throughout the run. Evidence records capture workload metadata, configuration, logs, metrics, checkpoints, and execution history, helping teams reproduce results, troubleshoot failures, and maintain an audit trail.

The same stack covers the full GPU workload lifecycle. This animation shows a workload moving from data preparation through distributed training, fine-tuning, and into a ready inference endpoint, all with one continuous evidence record:

A single workload moves through data preparation, distributed training, fine-tuning, and a ready inference endpoint, with one continuous evidence record

Here is what TauGrid handles at each stage:

StageWhat TauGrid does
SubmissionValidates configuration and renders a Kubernetes Job or KubeRay RayJob
QueueingUses Kueue to govern quota admission and priority
ExecutionLaunches and manages distributed Ray workloads on Kubernetes
MonitoringTracks status, logs, and GPU health metrics throughout the run
RecoverySupports retry, resume from checkpoints, and failure diagnosis
EvidencePreserves workload history, metrics, and artifacts for reproducibility

When multiple teams share the same cluster, their workloads enter a shared Kueue ClusterQueue. Kueue admits each job based on quota and priority, and Kubernetes places it on healthy GPUs.

Jobs from three workspaces share a Kueue ClusterQueue, the front job receives GPU quota and Kubernetes places it on two healthy GPUs

Getting started

You need a Kubernetes 1.30+ cluster, kubectl, Helm 3+, and Git. Install the Tau CLI:

curl -fsSL https://github.com/Azure/taugrid/releases/latest/download/install.sh | sh

export PATH="$HOME/.local/bin:$PATH"
tau version --short

Install TauGrid onto your cluster:

tau cluster install
tau cluster validate installation

Create a workspace and wait for it to be ready:

tau workspace create "taugrid-default" --apply

kubectl wait \
--for=jsonpath='{.status.phase}'=Ready \
workspaces.tau.azure.com/taugrid-default \
--namespace tau-system \
--timeout=5m

Submit your first workload:

git clone https://github.com/Azure/taugrid.git
cd taugrid

tau run --config examples/cpu-multi-interest-ray/tau.yaml
tau run status cpu-multi-interest-ray --watch
tau run logs cpu-multi-interest-ray -f

This example runs a CPU workload and does not require GPU nodes. For the full step-by-step guide including cluster preparation, workspace configuration, GPU workloads, and handoff to researchers, see the Getting Started on Kubernetes documentation.

The repository also includes these runnable examples:

ExampleWhat it demonstrates
CPU queueingKueue admission, pending states, and borrowing between teams (no GPU required)
GPU Ray TuneHyperparameter search on a single GPU with deterministic validation
Experiment evidencePersistent metrics, Stellar visualization, and evidence verification
Full clusterTerraform-provisioned AKS cluster with GPU nodes and end-to-end validation

For more examples and detailed walkthroughs, see the examples documentation.

Looking ahead

TauGrid is under active development. The full roadmap is maintained in the repository.

Multi-tenant platform capabilities: Support for multiple workspaces with scoped identity, RBAC, and quotas, along with an interactive portal for submitting and managing workloads.

Distributed training workflows: End-to-end examples for PyTorch DDP, FSDP, DeepSpeed, and Hugging Face LoRA/QLoRA, plus a complete dataset lifecycle covering fetch, staging, validation, tokenization, and registration.

Inference workflows: Production-oriented serving examples for vLLM, SGLang, and TensorRT-LLM.

Multi-cluster and multi-cloud execution: Cross-cloud workload execution with portable data, checkpoints, and artifacts, supported by provider-agnostic observability and cost attribution.

TauGrid will continue to focus on the workflow and workload lifecycle layer. Cluster provisioning, pod scheduling, quota enforcement handled by Kubernetes and Kueue, framework internals, and model code remain outside its scope.

What's next?

Install the CLI, point it at any Kubernetes 1.30+ cluster, and submit your first workload. We are building TauGrid in the open and want your input: file an issue when something breaks, open a pull request to fix a bug or add a feature, share feedback on the lifecycle contract, or tell us how TauGrid fits (or does not fit) into your existing platform.

Get started with the documentation, explore the code on GitHub, and check out the contributing guide to learn how to get involved.