OCI: offer the H100, H200, L40S and A100-v2 shapes - #4302
fede-kamel wants to merge 2 commits into
Conversation
`SUPPORTED_SHAPE_FAMILIES` in the OCI backend still listed only the GPU shapes that existed when Bare Metal support was added (dstackai#1325): GPU3, GPU4 and A10. Every newer NVIDIA shape from the gpuhunt catalog was filtered out by `_supported_instances`, so `dstack apply` could never select an OCI H100, H200, L40S, A100-v2, B200, B300 or RTX PRO 6000 instance even with quota in place. dstackai#2343 asked for H100 and was closed as not a priority; the only real blocker at the time, Fabric Manager in the OS images (dstackai#2348), was fixed in dstackai#2355, and the images now install the open kernel modules and Fabric Manager for the whole CUDA driver line. Add those families. They are all x86-64 hosts with NVIDIA GPUs, which is what the published `dstack-cuda-*` Marketplace images run. Two groups of GPU shapes from the catalog are intentionally still left out, with the reason recorded next to the list so it is not mistaken for an omission: * BM.GPU.MI300X.8 and BM.GPU.MI355X.8 (AMD Instinct): dstack publishes no ROCm image in OCI Marketplace, and `create_instance` picks the CUDA image for every GPU offer. * BM.GPU.GB200.4 and BM.GPU.GB300.4 (Grace superchips): arm64 hosts, and the OCI images are x86-64 only. Also document why `SUPPORTED_REGIONS` is a fixed set of seven regions: the Marketplace community listings that carry the dstack images are regional, and those are the regions they are published in (verified: the `dstack-cuda-0.14` listing is visible in us-chicago-1 and absent in ca-toronto-1). Widening the set requires publishing the images first. Note that the catalog side needs dstackai/gpuhunt to collect the newer shapes; without that, this change only affects H100, H200, L40S and A100-v2, which the catalog already carries.
|
@fede-kamel, thanks for both of the PRs, we appreciate the effort! Have you had a chance to test each of these new shapes end-to-end against real hardware? If not, would you have a chance to do so? The testing sequence I would use is:
We'd love to test them ourselves as well, just to make sure they'll work as expected for our users, but we don't currently have the right quotas. |
BM.GPU.B200.*, BM.GPU.B300.* and BM.GPU.RTXPRO.* are x86-64 NVIDIA hosts that the published images should run, and the images carry an R580 driver, which supports Blackwell. None of them has been run through dstack on real hardware though, so hold them back rather than advertise offers nobody has confirmed. The families that stay (A100-v2, L40S, H100, H200) are the ones the gpuhunt catalog already carries today.
|
Thanks for the review, and for being specific about what you wanted tested - it turned out to be the right question. Short answer: no, not for the shapes these PRs add. I do not have access to H100, H200, L40S, A100-v2, B200, B300 or RTX PRO hardware, and could not get any for this. I would rather say that plainly than imply coverage I do not have. What I could test, I did. I ran your sequence on A10, on both a VM and a bare metal host in
Everything advertised matched the machine. The row I care about is That covers the bare metal path the new families use, but it is not evidence about the new families themselves. So I have scoped this PR down. Dropped Two bugs turned up before I could test anything, both of which stopped the backend from being usable at all against my account. Filed separately since they are independent of the shape list:
Both have repro steps, unit tests, and 453 passing in the backends suite. On testing these: if you would rather hold them until someone can run one independently, that is a reasonable call and I would not argue with it. |
@fede-kamel Either or both options would be actually really cool:
|
|
Follow-up on the testing question, since I could not get hardware for these four. I cross-checked what the catalog produces for them against Oracle's Compute Shapes documentation, which is an OCI source independent of the Cost Estimator the gpuhunt provider reads. Every field matches:
The documentation also confirms all four shape names exactly as the allowlist matches them, which was the other thing that could silently be wrong - the Cost Estimator does decorate some names, This is not a substitute for running a job on one, and I am not presenting it as one. What it does rule out is the failure mode where the offer advertises specs that do not exist. Whether that is enough to land this, or whether you would rather wait for an actual run, is your call - I am happy either way, and the quota conversation is in your court too. |
|
One more thing that I should have made explicit earlier, because it bears on how much the missing hardware test actually costs us here. The backend does not branch on GPU model. Tracing what this PR changes:
And that one branch resolves identically for the shape I tested and for the four this PR adds: So the That narrows what is genuinely untested for these four shapes to two things, and both have now been checked against Oracle's published documentation:
What remains unverified is whether OCI's Hopper hosts have some host-level quirk the A10 hosts do not. That is a real residual, and it is why I am not claiming this is equivalent to a run. But it is a much smaller gap than "untested", and it does not grow with each shape added, since they all share one path. The same reasoning applies to B200/B300/RTX PRO, which also resolve to |
Closes #4301.
SUPPORTED_SHAPE_FAMILIESin the OCI backend still lists only the GPU shapes that existed when Bare Metal support landed (#1325): GPU3, GPU4, A10. Every newer NVIDIA shape from the gpuhunt catalog was filtered out by_supported_instances, sodstack applycould never select an OCI H100, H200, L40S or A100-v2 even with quota. #2343 asked for H100; its blocker (Fabric Manager, #2348) was fixed in #2355 and the images now install open kernel modules and Fabric Manager.This adds those four families. They are all x86-64 hosts with NVIDIA GPUs, which is what the published
dstack-cuda-*Marketplace images run, and they are the newer NVIDIA shapes the gpuhunt catalog already carries today.Deliberately excluded, with the reason recorded next to the list and in tests:
BM.GPU.MI300X.*,BM.GPU.MI355X.*) - no ROCm image is published, andcreate_instancealways picks the CUDA image.BM.GPU.GB200.*,BM.GPU.GB300.*) - arm64 hosts, the images are x86-64 only.BM.GPU.B200.*,BM.GPU.B300.*,BM.GPU.RTXPRO.*) - x86-64 NVIDIA hosts that the images should run, but not tested on real hardware, so held back. See the testing note below.It also documents why
SUPPORTED_REGIONSis fixed: the Marketplace listings carrying the images are regional, so widening requires publishing images first.Testing
On real hardware. Provisioned through this backend in
us-phoenix-1and ran a dstack task on each:VM.GPU.A10.1BM.GPU.A10.4x86x86_64x86_64A10:24GB:1/:4device_count()==1, CUDA tensor OKdevice_count()==4, CUDA tensor OKDriver on the published image:
580.167.08.This exercises the offer -> provision -> run path, including the bare metal path these families use, but it does not cover the four shapes this PR adds - I do not have access to that hardware. If you would rather hold this until someone can run an H100 through it, that is fair.
Two bugs blocked the backend from being usable at all before any of this could be tested; they are separate PRs, not needed for this one:
Unit.
src/tests/_internal/core/backends/oci/test_compute.py(10 supported / 13 unsupported shapes). OCI backend suite 43 passed, whole backends suite 473 passed,ruff checkandruff formatclean.Catalog side
In dstackai/gpuhunt#262. Without it this change already affects H100, H200, L40S and A100-v2, which the catalog carries today.
Known gap, not fixed here
BM.GPU.B4.8(8 x A100 40GB, 128 OCPUs) is a distinct shape fromBM.GPU4.8and is returned by the Compute API, but it is absent from the Cost Estimator feed gpuhunt reads, so the catalog has no row and no price for it. AddingBM.GPU.B4.to this list alone would be dead code, so it needs the gpuhunt side first. Noted in #4301.