How to Configure Multi-Tenant GPU Scheduling with NVIDIA Run:ai

TL;DR

NVIDIA Run:ai can turn a shared Kubernetes GPU cluster into a governed multi-tenant platform by organizing workloads into departments and projects, assigning guaranteed GPU quotas per node pool, and allowing controlled over-quota use when capacity would otherwise remain idle.

The design depends on four controls working together:

Quota establishes the resource entitlement for a department or project.

Fairshare determines how unused capacity is distributed.

Priority orders workloads within the relevant scheduling queue.

Preemptibility determines whether borrowed capacity can be reclaimed.

Production workloads should normally run from quota-backed projects as non-preemptible workloads. Development and experimental workloads can use preemptible over-quota capacity, provided they support checkpointing and tolerate interruption.

The objective is not to keep every GPU permanently allocated. It is to make allocation predictable, measurable, recoverable, and aligned with business ownership.

Introduction

A Kubernetes cluster can expose GPUs as schedulable resources, but that does not automatically make it a multi-tenant AI platform.

Without an additional governance layer, the team that submits first, requests the most GPUs, or leaves the most workloads running can consume a disproportionate amount of the cluster. Other teams may have technically valid workloads but no predictable path to capacity.

NVIDIA Run:ai addresses this problem by placing organizational and scheduling controls above the raw Kubernetes resource model. Departments, projects, node pools, quotas, workload policies, priority, and preemption become part of one allocation system.

The difficult part is not creating a few projects and assigning arbitrary GPU numbers. The difficult part is deciding:

Which organizational boundary owns each quota?

Which workloads receive guaranteed access?

Which teams may borrow unused GPUs?

Which workloads can be interrupted?

How is expensive hardware separated from general-purpose capacity?

Who approves temporary exceptions?

How do operators know when the quota model is no longer working?

This tutorial builds a practical configuration model that answers those questions.

What You Will Build

By the end of the tutorial, you will have a design for:

Mapping departments, teams, products, and environments into Run:ai departments and projects

Assigning users and identity groups through scoped access rules

Separating GPU hardware into meaningful node pools

Defining guaranteed GPU quotas per department, project, and node pool

Allowing controlled over-quota consumption

Establishing workload priority and preemption rules

Separating development and production scheduling behavior

Measuring quota utilization and queue pressure

Preventing a single team from monopolizing shared GPU resources

Operating a documented exception and quota-review process

The examples assume a shared Kubernetes cluster containing multiple GPU types. The same governance model can be scaled down for a smaller environment or extended across a larger NVIDIA Run:ai deployment.

Prerequisites and Assumptions

Before configuring tenant scheduling, confirm the following:

NVIDIA Run:ai is installed and connected to the target Kubernetes cluster.

GPU nodes are visible and healthy.

GPU resources are correctly advertised to Kubernetes.

Users authenticate through the expected identity provider.

Identity groups exist for department owners, project administrators, developers, production operators, and platform administrators.

You have permission to create departments, projects, node pools, roles, access rules, and workload policies.

Workload owners understand whether their applications can tolerate preemption.

Training workloads that may be preempted have a tested checkpoint and resume process.

This tutorial does not cover the initial NVIDIA Run:ai installation, Kubernetes GPU enablement, MIG configuration, or time-slicing configuration. Those capabilities should be operational before tenant quotas are introduced.

Understand the Run:ai Scheduling Hierarchy

The administrative hierarchy and the scheduling hierarchy are related, but they are not exactly the same thing.

Departments and projects are visible organizational objects. Queues are part of the scheduler’s allocation process. A queue is not usually another tenant container that administrators must create for every team.

The scheduler evaluates project and department demand for each applicable node pool.

The following diagram shows the relationship.

There are several important operational implications.

First, quota is evaluated in the context of a node pool. A project can have a guaranteed allocation on one GPU class and only best-effort access to another.

Second, a project’s workload priority affects the ordering of work in its scheduling context. Priority should not be treated as a substitute for cross-team quota design.

Third, unused capacity can be distributed as over-quota capacity. This increases utilization, but it does not convert borrowed capacity into a permanent entitlement.

Fourth, capacity reclamation depends on workloads being preemptible. A non-preemptible workload should fit within the project’s available deserved quota.

Map the Organization Before Creating Projects

The first configuration task should happen outside the platform.

Create a mapping of business ownership, technical ownership, workload purpose, and resource requirements before creating departments or projects. Otherwise, the platform structure tends to reproduce inconsistent team names and short-lived organizational charts.

Decide What a Department Represents

A department should represent a durable governance or ownership boundary.

Good department candidates include:

Product engineering

Applied research

Central data science

Enterprise analytics

Shared AI platform services

Business-unit AI teams

A department is useful when several related projects should share:

A parent quota

Common policy

A common department owner

Access to the same assets

Similar node-pool preferences

A single budget or capacity plan

Do not create a department for every temporary experiment. That creates unnecessary administrative depth and makes quota ownership difficult to maintain.

Decide What a Project Represents

A project is the practical scheduling and access boundary for workloads.

A project can represent:

A product

A model family

A team

An application

A development environment

A production service

A temporary initiative

Projects are where administrators apply resource quotas, node-pool preferences, access controls, and workload policies.

Avoid using one project for an entire department if its workloads have different availability, security, or preemption requirements.

Separate Environment and Workload Intent

Development and production should not share a project merely because the same team owns both.

A useful starting structure is:

DepartmentProjectPurposeScheduling intentProduct AIproduct-ai-devInteractive development and test trainingSmall guarantee, preemptible over-quota allowedProduct AIproduct-ai-prodProduction inference and release trainingGuaranteed capacity, non-preemptibleApplied Researchfoundation-researchLong-running model experimentsModerate guarantee, preemptible over-quotaShared Platformai-platform-servicesMonitoring, controllers, and shared servicesSmall reserved guaranteeShared Platformperformance-validationNCCL, benchmark, and validation jobsScheduled windows or controlled best effort

This structure makes operational intent visible before a workload is submitted.

Build a Source-Controlled Tenant Plan

NVIDIA Run:ai objects can be configured through supported interfaces, but the approved allocation model should also exist in source control.

The following YAML is a governance worksheet. It is not presented as a native Run:ai import format. Its purpose is to give the platform team a reviewable source of truth before applying configuration through the user interface or API.

organization:
departments:
– name: product-ai
owner_group: grp-product-ai-platform
node_pool_quotas:
h100-production:
guaranteed_gpus: 6
allow_over_quota: false
max_gpus: 6
a100-shared:
guaranteed_gpus: 6
allow_over_quota: true
over_quota_weight: medium
max_gpus: 10

projects:
– name: product-ai-dev
access_group: grp-product-ai-developers
node_pool_quotas:
h100-production:
guaranteed_gpus: 0
allow_over_quota: false
max_gpus: 0
a100-shared:
guaranteed_gpus: 2
allow_over_quota: true
over_quota_weight: medium
max_gpus: 6
default_preemptibility: preemptible
default_priority: medium-low

– name: product-ai-prod
access_group: grp-product-ai-production
node_pool_quotas:
h100-production:
guaranteed_gpus: 6
allow_over_quota: false
max_gpus: 6
a100-shared:
guaranteed_gpus: 4
allow_over_quota: false
max_gpus: 4
default_preemptibility: non-preemptible
default_priority: very-high

– name: applied-research
owner_group: grp-applied-research
node_pool_quotas:
h100-production:
guaranteed_gpus: 2
allow_over_quota: true
over_quota_weight: low
max_gpus: 4
a100-shared:
guaranteed_gpus: 8
allow_over_quota: true
over_quota_weight: high
max_gpus: 14

projects:
– name: foundation-research
access_group: grp-foundation-models
node_pool_quotas:
h100-production:
guaranteed_gpus: 2
allow_over_quota: true
over_quota_weight: low
max_gpus: 4
a100-shared:
guaranteed_gpus: 8
allow_over_quota: true
over_quota_weight: high
max_gpus: 14
default_preemptibility: preemptible
default_priority: medium

The values that matter most are:

Guaranteed GPUs per node pool

Whether over-quota use is permitted

The relative over-quota weight

The maximum allocation

Default workload priority

Default preemptibility

Identity group ownership

Production versus development intent

Successful implementation means the live Run:ai configuration matches this approved model and any variance has a recorded exception.

Configure Node Pools Around Infrastructure Characteristics

Node pools group Kubernetes nodes using labels. They are useful for separating heterogeneous hardware and controlling where workloads are entitled to run.

Common node-pool dimensions include:

GPU model

GPU memory capacity

NVLink or network topology

Production certification status

Geographic or data-residency boundary

Maintenance lifecycle

Cost class

Interactive versus batch usage

Dedicated inference versus training capacity

A practical example might include:

Node poolTypical hardwarePrimary useh100-productionH100 systems with validated high-speed fabricProduction inference and critical distributed traininga100-sharedA100 systemsGeneral training, research, and burst capacityl40s-interactiveL40S systemsWorkspaces, visualization, development, and smaller inferencevalidationRepresentative GPU nodesUpgrade testing, NCCL validation, and platform qualification

Avoid a Node Pool for Every Team

Node pools should normally describe infrastructure characteristics, not mirror the tenant hierarchy.

Creating one node pool per team can lead to:

Fragmented capacity

Stranded GPUs

Complex label management

Difficult maintenance

Poor flexibility when teams change

Excessive quota administration

Use departments and projects to represent ownership. Use node pools to represent hardware or placement characteristics.

Apply Stable Node Labels

Choose labels that describe characteristics unlikely to change during ordinary operations.

For example:

runai.node-pool=h100-production
gpu.platform=nvidia-h100
service.class=production
fabric.class=high-bandwidth

The exact label convention should match your platform standards. Do not rely on ad hoc labels added by individual application teams.

Review Default Access to New Pools

A newly created node pool may appear in project and department configuration with zero guaranteed GPU quota while still permitting over-quota use, depending on the effective settings.

After creating a pool:

Review every department.

Review every project.

Confirm whether over-quota access is enabled.

Confirm node-pool ordering.

Set a maximum allocation where appropriate.

Verify that zero quota means the intended best-effort behavior, not unrestricted accidental access.

This review is particularly important for high-value GPU pools.

Create Departments and Assign Parent Quotas

Create departments after the node-pool design is stable.

For each department:

Assign an owner.

Select the permitted node pools.

Order the node pools by preference.

Define guaranteed GPU quota for each pool.

Decide whether over-quota use is allowed.

Configure over-quota weighting when used.

Define maximum GPU allocation where the release and configuration expose that control.

Apply department-level policies.

Record the department’s business and operational purpose.

Make Parent Quotas Internally Consistent

A department quota constrains the projects beneath it.

If project guarantees under a department total 12 GPUs on a node pool but the department has only 8 GPUs of deserved quota, all project guarantees cannot be honored simultaneously.

Use this validation:

Project quotas can still be shaped differently when not all projects require simultaneous guarantees, but that should be a deliberate capacity decision rather than an accidental oversubscription.

Reserve Capacity for Shared Platform Functions

Do not allocate the complete physical pool to user departments without considering platform services.

Capacity may be required for:

Monitoring and diagnostics

Validation workloads

Shared model services

Platform testing

Incident response

Upgrade qualification

Emergency production recovery

A small platform-services department or project makes this capacity visible and prevents it from being treated as permanently free.

Create Projects and Assign Guaranteed Quotas

Each project should receive quota according to the service it is expected to provide.

Production Project Pattern

A production project commonly uses:

Guaranteed quota sufficient for normal steady-state demand

A hard maximum aligned with approved scale

Non-preemptible workloads

High or very-high workload priority

Restricted production operator access

Production-certified node pools

Limited or disabled over-quota use

Strict workload policies

Monitoring and support ownership

Production should not depend on opportunistic capacity for its minimum service objective.

Development Project Pattern

A development project commonly uses:

A small guaranteed quota

Preemptible workloads

Controlled over-quota access

Lower workload priority

Broader developer access

Shared or lower-cost node pools

Request-size limits

Idle workload controls

Mandatory checkpointing for long training runs

This gives developers useful access without allowing interactive experiments to displace production services.

Research Project Pattern

Research often needs a hybrid model:

A moderate guarantee for baseline progress

High access to unused shared capacity

Preemptible large training runs

Checkpointing and automatic resume

Limits on use of scarce production GPU classes

An exception process for time-bound, large-scale experiments

The guarantee protects ongoing research. Over-quota access lets the team use idle GPUs without turning temporary availability into a permanent allocation.

Configure Users, Groups, Roles, and Access Rules

Run:ai access control should be integrated with the enterprise identity model.

An access rule combines:

A subject, such as a user, identity-provider group, or service account

A role

A scope, such as the organization, cluster, department, or project

Use groups instead of assigning large numbers of users individually.

Recommended Access Model

SubjectScopeSuggested responsibilityCentral AI platform administratorsOrganization or clusterPlatform configuration, node pools, scheduling policy, and supportDepartment owner groupDepartmentDepartment visibility, project governance, and quota requestsProject administrator groupProjectProject workload administration and local assetsDeveloper groupDevelopment projectSubmit and manage development workloadsProduction operator groupProduction projectOperate approved production workloadsCI/CD service accountSpecific projectSubmit controlled automated workloadsAudit or FinOps groupOrganization or departmentRead-only usage and allocation review

Apply Least Privilege by Scope

A developer who only needs access to product-ai-dev should not receive a broad role at the Product AI department scope.

A project administrator should not automatically receive permission to:

Modify department quotas

Create unrestricted projects

Change organization-wide policy

Manage unrelated node pools

Create privileged access rules

Run:ai RBAC and Kubernetes RBAC are related operationally, but they should still be reviewed as part of one access model. Direct Kubernetes access must not become a bypass around platform governance.

Use Service Accounts for Automation

Use dedicated service accounts for:

CI/CD workload submission

Scheduled model training

Capacity reporting

Configuration reconciliation

Monitoring integration

Do not use a human administrator’s credentials in pipelines.

Each service account should have:

A defined owner

A narrow project or department scope

Credential rotation

An expiration or review date

Audit logging

A documented purpose

Configure Controlled Over-Quota Use

Guaranteed quota and maximum allocation solve different problems.

Guaranteed quota answers:

What capacity is this tenant entitled to receive?

Maximum allocation answers:

What is the largest amount of capacity this tenant may consume?

Over-quota configuration answers:

May this tenant temporarily borrow unused capacity between those boundaries?

A well-designed project can therefore have:

Guaranteed quota: 2 GPUs
Maximum allocation: 8 GPUs
Over-quota: Enabled
Preemptibility: Required for borrowed capacity

The team can always make progress on two GPUs. It can consume up to eight GPUs when capacity is unused. The extra six GPUs remain reclaimable.

Use Over-Quota Weights Deliberately

When over-quota weights are enabled, they influence how unused capacity is divided between eligible departments or projects.

Use weights to represent business preference, not political importance.

For example:

TenantGuaranteed quotaOver-quota weightInterpretationProduction release validation2HighPrefer this workload when temporary capacity is availableGeneral model research4MediumReceive a normal share of excess capacityPersonal experiments0LowBest-effort access only

Do not give every project a high weight. When every tenant is exceptional, the weights no longer express meaningful policy.

Treat Zero Quota Carefully

A project with zero guaranteed quota and over-quota enabled can be useful for:

Sandboxes

Short experiments

Training workshops

Low-priority validation

Temporary user access

It has no guaranteed entitlement. Its workloads may remain pending or be preempted when quota-backed demand appears.

That limitation should be communicated to users before the project is offered as a service.

Configure Fairness, Priority, and Preemption

Quota, fairness, priority, and preemption are separate controls.

Fairness Controls Cross-Tenant Sharing

Run:ai calculates fairshare for departments and projects per node pool.

Conceptually:

Fairshare =
Guaranteed deserved quota
+
Eligible share of unused over-quota resources

This prevents the first tenant to consume idle GPUs from treating those resources as permanently owned.

Priority Controls Scheduling Order

Workload priority controls which workload should be considered ahead of another workload in the relevant project queue.

Current Run:ai CLI priority values include:

very-low

low

medium-low

medium

medium-high

high

very-high

Changing priority does not automatically change preemptibility. Configure both fields explicitly.

Priority should reflect workload urgency and service intent:

WorkloadSuggested priorityPersonal experimentvery-low or lowDevelopment workspacemedium-lowRoutine trainingmediumRelease validationmedium-high or highProduction batch operationhighLatency-sensitive production inferencevery-high

Do not mark ordinary development jobs as very-high merely to shorten queue time. That destroys the priority model.

Preemptibility Controls Reclamation

A preemptible workload may use opportunistic capacity and may be interrupted when higher-entitlement demand requires those resources.

A non-preemptible workload:

Must remain within the project’s available deserved quota

Cannot rely on borrowed over-quota capacity

Will not be interrupted through normal scheduler preemption after it starts

Use non-preemptible workloads for services that cannot safely tolerate interruption. Use preemptible workloads for restartable training, experiments, and batch work.

Checkpoint Before Allowing Preemption

Preemption without checkpointing can turn high GPU utilization into low useful throughput.

A training workload should save:

Model state

Optimizer state

Scheduler state

Current epoch or step

Random seeds when reproducibility matters

Data-loader progress where practical

Checkpoint intervals should balance storage overhead against the amount of work that could be lost.

Enforce Scheduling Intent with Workload Policies

Do not depend on every user selecting the correct values manually.

Workload policies can apply defaults and restrictions across system, cluster, department, or project scopes. Policies can govern workloads submitted through the user interface, CLI, API, or supported Kubernetes YAML path.

Useful policy controls include:

Default development workloads to preemptible

Default production inference to non-preemptible

Restrict allowed priority values

Limit maximum GPU requests

Restrict node pools

Require approved container security settings

Prevent privileged execution

Require labels and annotations

Enforce storage or data-source requirements

Apply node affinity or toleration rules

Restrict image registries

Example Policy Intent

For product-ai-dev:

Default priority: medium-low
Default preemptibility: preemptible
Maximum GPUs per workload: 4
Allowed node pools: a100-shared, l40s-interactive
Privileged containers: prohibited
Required label: environment=development

For product-ai-prod:

Default priority: very-high
Default preemptibility: non-preemptible
Maximum GPUs per workload: approved production scale
Allowed node pools: h100-production
Privileged containers: prohibited
Required label: environment=production
Required owner annotation: mandatory

The exact policy schema depends on the workload type and current Run:ai release. Validate the available fields before translating this intent into an enforceable policy.

Validate Over-Quota Allocation and Preemption

Do not consider the design complete until quota, over-quota, fairness, and preemption have been tested.

The following test uses two projects with a quota of two GPUs each on a four-GPU node pool.

Test Scenario

Submit three one-GPU preemptible workloads to team-a.

Submit one one-GPU workload to team-b.

Confirm team-a is using one GPU over quota.

Submit a second workload to team-b.

Confirm one preemptible team-a workload is reclaimed.

Confirm both projects receive their two-GPU deserved allocation.

The current Run:ai CLI supports explicit project, node-pool, priority, GPU request, and preemptibility settings.

runai login

runai training standard submit team-a-job-1
-p team-a
-i runai.jfrog.io/demo/quickstart-demo
–gpu-devices-request 1
–node-pools a100-shared
–priority low
–preemptibility preemptible

runai training standard submit team-a-job-2
-p team-a
-i runai.jfrog.io/demo/quickstart-demo
–gpu-devices-request 1
–node-pools a100-shared
–priority low
–preemptibility preemptible

runai training standard submit team-a-job-3
-p team-a
-i runai.jfrog.io/demo/quickstart-demo
–gpu-devices-request 1
–node-pools a100-shared
–priority low
–preemptibility preemptible

runai training standard submit team-b-job-1
-p team-b
-i runai.jfrog.io/demo/quickstart-demo
–gpu-devices-request 1
–node-pools a100-shared
–priority medium
–preemptibility preemptible

At this stage, the expected allocation is:

team-a quota: 2 GPUs
team-a allocation: 3 GPUs
team-a over quota: 1 GPU

team-b quota: 2 GPUs
team-b allocation: 1 GPU

cluster allocation: 4 of 4 GPUs

Submit the second Team B workload:

runai training standard submit team-b-job-2
-p team-b
-i runai.jfrog.io/demo/quickstart-demo
–gpu-devices-request 1
–node-pools a100-shared
–priority medium
–preemptibility preemptible

The expected steady state is:

team-a allocation: 2 GPUs
team-b allocation: 2 GPUs

team-a-job-3:
Preempted, terminating, or returned to pending

team-b-job-2:
Scheduled and running

The specific workload selected for preemption can depend on scheduler state and workload characteristics. Validate the entitlement outcome rather than assuming a particular pod name will always be reclaimed.

Test Development and Production Separation

A second validation should prove that development cannot displace production incorrectly.

Production Workload

runai training standard submit production-service
-p product-ai-prod
-i runai.jfrog.io/demo/quickstart-demo
–gpu-devices-request 2
–node-pools h100-production
–priority very-high
–preemptibility non-preemptible

Development Workload

runai training standard submit development-training
-p product-ai-dev
-i runai.jfrog.io/demo/quickstart-demo
–gpu-devices-request 2
–node-pools a100-shared
–priority medium-low
–preemptibility preemptible

Confirm that:

The production workload only uses approved production capacity.

The development workload cannot select the production pool.

Production allocation does not depend on over-quota capacity.

The development workload may consume unused shared capacity.

Development can be reclaimed without interrupting production.

Access rules prevent ordinary developers from operating the production workload.

Measure Quota Utilization

Quota management must be based on measured behavior rather than annual estimates.

Run:ai project and department views expose allocation relative to quota. Monitoring and telemetry can also provide GPU allocation, utilization, pending-time, and workload information.

Track at least the following metrics per project, department, and node pool.

MetricWhy it mattersAllocated GPUs divided by guaranteed quotaIndicates how much of the entitlement is being consumedOver-quota GPU hoursShows dependence on borrowed capacityPending workload timeReveals insufficient quota, placement constraints, or fragmentationPreemption countShows how frequently opportunistic work is displacedLost work after preemptionTests whether checkpointing is effectiveIdle allocated GPUsIdentifies workloads holding GPUs without useful computeNode-pool utilizationIdentifies stranded or overloaded hardware classesMaximum concurrent GPU allocationSupports future quota sizingProduction scheduling delayValidates whether guaranteed capacity is sufficientException frequencyReveals whether the standard quota model fits real demand

Starting Review Thresholds

The following are operating-policy examples, not NVIDIA defaults:

Guaranteed quota below 40 percent utilization for 30 days: review for reduction.

Guaranteed quota above 85 percent utilization with sustained pending work: review for increase.

Over-quota consumption above 30 percent of usage for several weeks: determine whether demand has become permanent.

Repeated preemption with substantial lost training time: require improved checkpointing or revise workload placement.

Idle allocated GPUs above 10 percent for more than 30 minutes: investigate application behavior.

Production queue delay above the service objective: treat as a capacity or placement incident.

Use longer windows for research workloads with irregular experiments. Use tighter thresholds for production services.

Prevent One Team from Monopolizing the Cluster

No single control prevents monopolization. Use multiple boundaries.

Assign Meaningful Guarantees

Do not assign the complete shared node pool as one project’s guaranteed quota unless that project truly owns the hardware.

Use Maximum Allocations

A project may have a small guarantee and permission to borrow, but it should not necessarily be able to consume the entire pool.

Require Preemptibility for Opportunistic Work

Borrowed capacity must remain reclaimable. Otherwise, over-quota access becomes an uncontrolled reservation.

Limit GPUs per Workload

A single accidental request for all available GPUs can create unnecessary queue pressure even when project-level quotas are working correctly.

Control Expensive Node Pools

For scarce pools:

Set zero quota for projects without entitlement.

Disable over-quota access where necessary.

Restrict the pool through policy.

Require an approved project or department.

Set explicit maximum allocations.

Review new pool defaults immediately after creation.

Detect Idle Allocation

A workload can monopolize GPUs without performing useful work. Monitor GPU utilization, GPU memory behavior, workload phase, and idle allocation together.

Expire Temporary Exceptions

A temporary quota increase without an expiration date is usually a permanent quota increase with incomplete documentation.

Troubleshooting Common Scheduling Problems

SymptomLikely causeCorrective actionWorkload remains pending despite apparently free GPUsFree GPUs are in a different node pool or do not satisfy affinity, topology, taint, memory, or workload-size requirementsCheck selected node pools, ordering, node labels, affinity, tolerations, GPU type, and contiguous capacityNon-preemptible workload cannot start above quotaNon-preemptible workloads cannot rely on over-quota capacityIncrease guaranteed quota, reduce the request, or use an approved preemptible workloadProject cannot use a newly created node poolProject has zero quota, over-quota is disabled, maximum is zero, or policy blocks the poolReview department and project configuration for the new poolDevelopment workload runs on production GPUsNode-pool ordering, over-quota defaults, or policy permits accessSet project quota and maximum to zero for the production pool and restrict it through policyProduction workload is preemptedIt was submitted as preemptible or inherited an incorrect defaultCorrect the workload policy and resubmit as non-preemptible within deserved quotaTeam reports a quota utilization ratio over 100 percentThe project is consuming over-quota capacityReview allocation, guaranteed quota, maximum allocation, and over-quota weightOne project receives most unused GPUsOther projects are not eligible, have lower over-quota weight, are blocked by placement, or have no pending workloadsReview eligibility, weights, queue state, and node-pool constraintsDepartment guarantees appear ineffectiveProject guarantees exceed the parent department quotaReconcile department and project quota totals per node poolFrequent preemption wastes training progressCheckpoints are too infrequent, incomplete, or not restoredValidate checkpoint persistence and resume behavior before allowing large preemptible jobsGPUs are allocated but utilization remains lowWorkload is blocked on data, CPU, storage, network, initialization, or application logicCorrelate GPU metrics with CPU, storage, network, and workload logsHigh-priority development jobs dominate queue orderPriority policy is too permissiveRestrict allowed priority values at the development project or department scopeQuota changes cause unexpected scheduling behaviorSeveral quota, maximum, weight, and policy settings changed togetherRoll back to the previous baseline and change one control at a time

Operate Quota Changes as Controlled Platform Changes

Changing quotas can trigger workload movement and preemption. Treat quota changes as production changes.

Use the following sequence:

Capture current project, department, and node-pool allocation.

Record pending workloads and current preemptible workloads.

Confirm the parent department has capacity for the proposed project guarantee.

Check whether maximum allocations must also change.

Check over-quota eligibility and weight.

Identify workloads that may be preempted.

Verify checkpoint status for affected training jobs.

Apply the smallest required change.

Observe allocation, pending time, and preemption.

Confirm that production service objectives remain satisfied.

Record the result and expiration date.

Roll back if the expected entitlement outcome is not observed.

Do not simultaneously change quota, node-pool order, workload policy, and access rules unless the change has been validated in a non-production environment.

Define Operational Ownership

A shared GPU platform requires named owners for both technology and allocation decisions.

CapabilityAccountable ownerResponsible operatorCluster and scheduler healthAI platform ownerPlatform engineeringNode-pool labels and membershipInfrastructure ownerKubernetes or GPU platform teamDepartment quotaAI governance or capacity ownerCentral platform administratorProject quotaDepartment ownerProject administrator with approvalWorkload priority policyPlatform governance ownerRun:ai administratorIdentity groups and access lifecycleSecurity or IAM ownerIdentity operationsCheckpointing and restart behaviorApplication ownerML engineering teamProduction service capacityProduct service ownerProduction operationsUtilization reportingCapacity or FinOps ownerPlatform analyticsException approvalNamed governance authorityPlatform service manager

Quota ownership should not sit entirely with Kubernetes administrators. The administrator can implement a quota, but the business or service owner must justify the entitlement.

Establish an Exception Process

Exceptions are inevitable. Undocumented exceptions are optional.

A quota exception should record:

Requesting department:
Requesting project:
Business owner:
Technical owner:
Requested node pool:
Current guaranteed quota:
Temporary guaranteed quota:
Maximum requested allocation:
Over-quota requirement:
Preemptibility:
Workload priority:
Business justification:
Expected start:
Expiration:
Checkpoint validated:
Production impact assessment:
Approver:
Rollback action:

Use separate exception paths for:

Temporary guaranteed quota increases

Access to restricted node pools

Increased maximum allocation

Non-preemptible research workloads

Very-high priority workloads

Large distributed training runs

Temporary production recovery

Planned benchmark or validation activity

Every exception should expire automatically or enter a mandatory review state.

Recommended Production Baseline

A defensible starting baseline is:

Production

Separate production projects

Guaranteed quota sized for normal demand

Non-preemptible workloads

High or very-high priority

Restricted node pools

Explicit maximum allocation

No dependency on over-quota capacity

Restricted access groups

Strict workload policies

Documented service owner

Development

Separate development projects

Small guaranteed quota

Preemptible by default

Medium-low priority

Over-quota enabled on shared pools

Maximum allocation enforced

Idle workload monitoring

No access to production-only pools

Broader developer access

Mandatory checkpointing for long jobs

Research

Baseline guaranteed quota

Preemptible over-quota use

Medium priority

Higher over-quota weight only when justified

Maximum allocation below full cluster capacity

Tested checkpoint and resume

Time-bound exceptions for large experiments

Usage and outcome review

Shared Platform Services

Dedicated project or department

Small guaranteed reservation

Non-preemptible critical services

Clear platform ownership

Restricted administrative access

Capacity protected during tenant demand peaks

Conclusion

Multi-tenant GPU scheduling is not solved by dividing the number of GPUs by the number of teams.

A workable NVIDIA Run:ai design maps durable organizational boundaries into departments, isolates practical workload boundaries into projects, and assigns quota separately for each relevant node pool. Guaranteed quota provides predictability, while controlled over-quota use improves utilization when capacity would otherwise remain idle.

Fairness and preemption make borrowed capacity recoverable. Priority helps order work, but it should never replace quota design. Production workloads should receive quota-backed, non-preemptible capacity. Development and research workloads can use preemptible excess capacity when checkpointing and restart behavior are proven.

The operating model is as important as the scheduler configuration. Departments need accountable owners, projects need access boundaries, quota changes need evidence, and exceptions need expiration dates. When those controls are in place, a shared GPU cluster can support multiple teams without becoming either permanently underutilized or operationally unpredictable.

External References

NVIDIA Run:ai Documentation: Adapting AI Initiatives to Your OrganizationCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/aiinitiatives/adapting-ai-initiatives

NVIDIA Run:ai Documentation: DepartmentsCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/aiinitiatives/organization/departments

NVIDIA Run:ai Documentation: ProjectsCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/aiinitiatives/organization/projects

NVIDIA Run:ai Documentation: Node PoolsCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/aiinitiatives/resources/node-pools

NVIDIA Run:ai Documentation: The NVIDIA Run:ai Scheduler: Concepts and PrinciplesCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/runai-scheduler/scheduling/concepts-and-principles

NVIDIA Run:ai Documentation: How the Scheduler WorksCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/runai-scheduler/scheduling/how-the-scheduler-works

NVIDIA Run:ai Documentation: Workload Priority and PreemptionCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/runai-scheduler/scheduling/workload-priority-control

NVIDIA Run:ai Documentation: Over Quota, Fairness and PreemptionCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/runai-scheduler/scheduling/quick-starts/over-quota

NVIDIA Run:ai Documentation: Access RulesCanonical URL: https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/accessrules

NVIDIA Run:ai Documentation: RolesCanonical URL: https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/roles

NVIDIA Run:ai Documentation: Policies and RulesCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/policies/policies-and-rules

NVIDIA Run:ai Documentation: Metrics and TelemetryCanonical URL: https://run-ai-docs.nvidia.com/saas/platform-management/monitor-performance/metrics

NVIDIA Run:ai Documentation: Best Practices: Checkpointing Preemptible Training WorkloadsCanonical URL: https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/using-training/checkpointing-preemptible-workloads

How to Combine MCP and A2A in One Enterprise Agent Architecture
TL;DR MCP and A2A solve different integration problems. MCP standardizes how an agent discovers and invokes tools, APIs, resources, and data services….

The post How to Configure Multi-Tenant GPU Scheduling with NVIDIA Run:ai appeared first on Digital Thought Disruption.