Repository navigation
Support NVIDIA MIG slices in the Kubernetes backend - #4389
Draft
peterschmidt85 wants to merge 9 commits into
Draft
peterschmidt85 wants to merge 9 commits into
peterschmidt85 wants to merge 9 commits into
Conversation
Offer MIG slices created by the NVIDIA GPU Operator (single and mixed strategies) as GPUs of the parent model with the profile's memory, e.g. a 1g.10gb slice of an A100 is A100:10GB. - Single strategy: a node whose nvidia.com/gpu.product is <model>-MIG-<profile> is offered as that many slices. - Mixed strategy: each nvidia.com/mig-<profile> resource on a node is offered separately next to the node's whole GPUs; the pod requests that resource and its node affinity uses the parent product label. - Runs get slices only when the GPU memory spec has an upper bound, so gpu: A100 never lands on a slice; --full-offers shows everything. - After a failed scheduling attempt, skip only offers for the same GPU resource in the cluster, so a 3g.20gb failure doesn't rule out the cluster's 4g.20gb slices or whole GPUs. Tested on GKE 1.36 with GPU Operator v26.7.2 (driver 595) and A100 40GB nodes across single, mixed and MIG-only layouts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDgQBSHAm1rxrhSUXWziy3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDgQBSHAm1rxrhSUXWziy3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDgQBSHAm1rxrhSUXWziy3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDgQBSHAm1rxrhSUXWziy3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDgQBSHAm1rxrhSUXWziy3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDgQBSHAm1rxrhSUXWziy3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDgQBSHAm1rxrhSUXWziy3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDgQBSHAm1rxrhSUXWziy3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDgQBSHAm1rxrhSUXWziy3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Design doc and real-cluster results: MIG support for the Kubernetes backend
Summary
singleor themixedstrategy, are offeredas GPUs of the parent model with the slice's memory. For example, a
1g.10gbslice of an A100 isA100:10GB.gpu: A100:10GB). A run withgpu: A100getsonly whole GPUs.
--full-offersshows everything.mixedstrategy, eachnvidia.com/mig-<profile>resource on a node is its own offer, next to thenode's whole GPUs. The pod requests that resource.
cluster was skipped, so a failed
3g.20gbattempt also ruled out the cluster's4g.20gbslices and whole GPUs.section under the Kubernetes backend.
Out of scope
3g.40gbvs4g.40gb. Slices are matched by memory only.dstack metrics(a follow-up).gpu-partition-size) without the GPU Operator.Testing
On GKE (A100 40GB, GPU Operator v26.7.2, driver 595), these layouts all passed:
The results are in the design doc.
Generated by Claude Code