Skip to content

[air] Add GPU_8xB300 support to the experimental AIR CLI - #6649

Merged
caroline-db merged 3 commits into
mainfrom
air/b300-support
Sep 17, 2026
Merged

caroline-db merged 3 commits into
mainfrom
air/b300-support

Conversation

@caroline-db

@caroline-db caroline-db commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Changes

  • Add GPU_8xB300 support to the experimental AIR CLI with eight GPUs per node and positive accelerator counts that are multiples of eight.
  • Carry B300 through submission, display, filtering, and node-count calculation, with coverage for numeric v6 and databricks_ai_v6 environment routing.
  • Reject B300 conversion through convert-to-dabs until DAB support lands in a separate PR.

Why

Enable direct B300 workloads without coupling the experimental AIR change to Bundle-owned schema and validation changes. Jobs remains authoritative for supported environment versions, including the B300 minimum, for now. A follow-up may incorporate that validation into --dry-run once its final behavior is defined.

Tests

  • Added unit and acceptance coverage for parsing, casing, accelerator counts, v6 submission payloads, display, filtering, and conversion rejection.
  • Passed full Go lint, 10,024 unit tests, and 5,134 acceptance tests.
  • Successfully completed a live B300 smoke workload; streamed device output reported NVIDIA B300 SXM6 AC.

This PR was written with Codex.

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 95e3389

Run: 35258235526

Env ✅​pass 🙈​skip Time
✅​ aws linux 276 17 4:17
✅​ aws windows 278 15 3:42
✅​ azure linux 275 17 4:08
✅​ azure windows 277 15 4:53
✅​ gcp linux 276 17 4:24
✅​ gcp windows 278 15 5:49
Top 3 slowest tests (at least 2 minutes):
duration env testname
5:47 gcp windows TestAccept
3:40 aws windows TestAccept
3:39 azure windows TestAccept

@caroline-db
caroline-db force-pushed the air/b300-support branch 4 times, most recently from 689bdff to c51a90b Compare September 11, 2026 18:40

@ben-hansen-db ben-hansen-db left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, note Pardis' work on using our internal list api, we should do that here as well but this is fine for now

@maggiewang-db maggiewang-db left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good. Should we have some backend validation to reject client image version < 6 when specified B300?

Comment thread experimental/air/cmd/convert_to_dabs.go Outdated
// code_source; the emitted `tgz` artifact packages it at deploy.
func convertToDabs(ctx context.Context, cfg *runConfig, configPath, bundleDir string) (map[string]dyn.Value, []uploadItem, error) {
if gpuType(cfg.Compute.AcceleratorType) == gpuType8xB300 {
return nil, nil, errors.New("GPU_8xB300 is not yet supported by convert-to-dabs; use air run until DAB support is available")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it hard to support that? why is it blocked?
note that I made a b300 dab successfully today

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

go sdk does not yet have the b300 accelerator type enum and this will print a warning so I just added this guard.

but you're right, I confirmed it will still work and run successfully, just with a printed warning. removed this guard, and the warning will be removed when the go sdk is updated

gpuType1xA10 gpuType = "GPU_1xA10"
gpuType8xH100 gpuType = "GPU_8xH100"
gpuType1xH100 gpuType = "GPU_1xH100"
gpuType8xB300 gpuType = "GPU_8xB300"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rather than adding b300 directly like this, we should switch the impl to match python side what I am doing here: https://github.com/databricks-eng/universe/pull/2598845/changes

reason: B300 OD is a gated pupr feature. Backend knows which customers have access and which don't. we should call the backend for a given profile and let the backend tell us the dynamically generated list of gpu types that are available for a given workspace for a given user

@caroline-db caroline-db Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adding list compute options in a separate PR as a follow up and will request your review. this will require setting up an ai-training proxy to the aicm api btw.

@caroline-db
caroline-db force-pushed the air/b300-support branch 2 times, most recently from 8b450bc to cc0186a Compare September 16, 2026 21:51
@caroline-db

Copy link
Copy Markdown
Contributor Author

@maggiewang-db

Should we have some backend validation to reject client image version < 6 when specified B300?

Backend already has validation to reject client image < 6 for B300s. I want --dry-run to also be able to handle this validation but that will be a separate decision / PR.

@caroline-db
caroline-db added this pull request to the merge queue Sep 17, 2026
Merged via the queue into main with commit 18bbd98 Sep 17, 2026
32 checks passed
@caroline-db
caroline-db deleted the air/b300-support branch September 17, 2026 19:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants