Skip to content

[power_model] rate B300 HGX GPUs at 1,100 W / [power_model] 将 B300 HGX GPU 额定功耗改为 1,100 W - #4960

Merged
edwingao28 merged 1 commit into
mainfrom
fix/b300-power-model-tdp
Nov 10, 2026
Merged

edwingao28 merged 1 commit into
mainfrom
fix/b300-power-model-tdp

Conversation

@edwingao28

@edwingao28 edwingao28 commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

B300HGXBoard accepts only gpu_tdp_w=1200, a pre-launch estimate. The air-cooled HGX B300 is rated 1,100 W per GPU (Supermicro HGX B300 datasheet). The InferenceX-app GPU registry already rates B300 at 1,100 W, so the dashboard draws a 1,100 W TDP line while this model sizes B300 cooling for 1,200 W.

NormalizedHGXFanPower sizes fans from GPU count times GPU TDP, so the higher rating gives a larger design heat and a lower fan duty at the same load. B300 design heat drops from 11,048 W to 10,248 W per chassis. For one B300 chassis at 100 W per GPU, idle, modeled IT power moves from 2,034.83 W to 2,035.94 W.

Changes:

Testing:

  • pytest power_model/tests: 401 passed.
  • On the base commit, the new B300 1200 rejection case fails (1 failed, 21 passed in test_incomplete_or_inconsistent_board_component_power_is_rejected).
  • The new test_hgx_fans_psu.py B300 row matches a hand check. Design heat is 8 × 1,100 + 1,448 = 10,248 W, and fans are 10,248 × 563.2 / 9,500 = 607.54 W.
  • In test_boards.py, each changed total equals its changed fan watts (+2.557 W idle, +3.277 W active, three chassis), so only cooling moved.
  • python -m infx.matrix.changed --base origin/main: 0 of 186 config keys changed, so there is no perf-changelog.yaml entry. ruff check and ruff format --check pass.

Limits:

  • The fan model is still a shared comparison baseline, not a measured B300 chassis profile.
  • Liquid-cooled B300 parts, rated up to 1,400 W, are not modeled.

Delivery:

  1. Land this PR first, with matching tests.
  2. Open the app PR, cross-linked both ways, with matching tests: [PowerX] rate B300 HGX GPUs at 1,100 W in the power model port / [PowerX] 功耗模型移植版将 B300 HGX GPU 额定功耗改为 1,100 W InferenceX-app#1736.
  3. In the app PR, pin this PR's merge commit.
  4. In the app PR, regenerate the port manifest and the parity fixture.
PR checklist and change type

Type of Change

  • Bug fix
  • New feature
  • Configuration change
  • Documentation update
  • Other (please describe)

Checklist

  • I have completed the AI model disclosure and kept it current
  • I have tested my changes locally
  • I have updated documentation if necessary
  • If python -m infx.matrix.changed --base origin/main lists affected config keys, I have appended one new entry covering them to the physical end of inferencex-e2e/perf-changelog.yaml; if it lists none, I have added none. I have not edited historical entries
  • If this PR appends an inferencex-e2e/perf-changelog.yaml entry, it carries exactly one primary sweep label (a maintainer applies it on fork PRs): full-sweep-fail-fast (recommended), full-sweep-enabled, or non-canary-full-sweep-enabled. Optional modifiers all-evals, evals-only, and agentx-fast require a primary label; the last two block reuse while applied.
  • Before merging via reuse, an authorized maintainer (OWNER/MEMBER/COLLABORATOR) has commented /use <run_id> (or the legacy /reuse-sweep-run) on this PR. Do this only once there is a final full sweep that is all green with evals passing, since after this comment the primary sweep label will no longer automatically kick off new sweeps. Remove and re-add the primary sweep label to force a new sweep.

1,200 W was a pre-launch estimate; the air-cooled HGX B300 is rated 1,100 W per GPU, the part our B300 cluster runs.

@claude claude Bot 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.

I reviewed this PR and didn't find any bugs. The changed paths fall under the repo-wide CODEOWNERS entry, and whether B300 should be rated at 1,100 W is a modeling choice, so a maintainer should still take a look.

What was reviewed:

  • Recomputed the B300 rows in test_hgx_fans_psu.py by hand. Design heat is 8 × 1,100 + 1,448 = 10,248 W, and fans at design are about 607.54 W. Also recomputed the test_boards.py fan values with the controlled cubic policy (0.1·L³/D² per chassis, three chassis), which gives 18.322 W idle and 23.475 W active. All of these match the new expected values.
  • Searched power_model/src for other B300 references to 1,200 W and found none. B300_BOARD_BASELINE doesn't state a TDP. The only 1,200 W left is the GB200 Bianca board, which is correct.
  • Not checked: the test_cli.py and test_hgx_inventory.py totals that include PSU loss, and the cross-repo app PR. The description still has the APP_PR_URL placeholder there.
Extended reasoning...

The change lowers the B300HGXBoard default GPU TDP from 1200 W to 1100 W, bumps the HGX_FAN_BASELINE provenance to version 2 with updated assumption text, and re-pins the B300 expected values in four test files. It touches no security-sensitive surface. The fan-sizing math checks out for the design-heat and controlled-policy test rows. I deferred because the repo-wide CODEOWNERS entry covers these paths, the 1,100 W rating is a domain decision for a maintainer, and the required app port PR isn't linked yet.

@edwingao28
edwingao28 merged commit dc5035e into main Nov 10, 2026
9 checks passed
@edwingao28
edwingao28 deleted the fix/b300-power-model-tdp branch November 10, 2026 00:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant