Skip to content

docs(installation-jax): add bare-metal JAX/MaxText install guide and scripts#918

Open
amd-fuyuajin wants to merge 2 commits into
mainfrom
dev/baremetal-install-jax
Open

docs(installation-jax): add bare-metal JAX/MaxText install guide and scripts#918
amd-fuyuajin wants to merge 2 commits into
mainfrom
dev/baremetal-install-jax

Conversation

@amd-fuyuajin

Copy link
Copy Markdown
Collaborator

Summary

Adds a no-Docker, no-sudo bare-metal installation path for the Primus JAX /
MaxText training backend
, mirroring the v26.5 JAX training Dockerfile. This is
the JAX counterpart to the existing PyTorch tools/installation/ recipe, for
users who (for policy or operational reasons) cannot run containers.

What's added

  • tools/installation-jax/setup.sh — re-runnable staged installer: ROCm
    release tarball → MaxText → TensorFlow-CPU (from source) → ROCm JAX/PJRT/plugin
    → TransformerEngine → Primus → RCCL (from source).
  • tools/installation-jax/env.sh — sources the venv and exports all ROCm /
    NVTE_* / XLA build+runtime env.
  • tools/installation-jax/README.md — rationale and stage reference.
  • docs/01-getting-started/bare-metal-installation-jax.md — full manual
    guide: pinned versions, a version-requirements table (Python/glibc/toolchain/GPU
    prerequisites), and a single- vs multi-node breakdown.
  • Cross-links from installation.md and bare-metal-installation.md (PyTorch
    guide relabeled).

Notable design points

  • Matches the v26.5 Dockerfile pins: ROCm 7.14 tarball, JAX 0.10.0, TE 2.15,
    TensorFlow upstream-v2.21.0, RCCL 9e5e408, MaxText release/v26.5.
  • Portable across hosts: GPU arch auto-detected (gfx942/gfx950 via
    rocminfo → KFD sysfs); the te stage auto-falls-back to a from-source
    build on glibc < 2.38
    (e.g. Ubuntu 22.04); the TF source build derives its
    wheel tag from the venv Python (cp312/cp313).
  • PRIMUS_JAX_BASE is required (no default) — the scripts fail fast with a
    clear message if it is unset.
  • No sudo: ROCm is extracted into a user-writable dir instead of /opt/rocm.

Not included (documented as manual/root steps)

  • System (apt) packages (guide Section 2) and the multi-node networking stack
    (UCX/OpenMPI/AINIC, guide Section 4).

Test plan

  • Validated end-to-end for single-node MaxText pretraining on MI325X and MI355X
    Ubuntu 22.04 (glibc 2.35) / Python 3.12.
  • bash setup.sh --list and staged re-runs; bash -n clean.
  • pre-commit (shellcheck, black, isort, trailing-whitespace, …) passes on
    all changed files.
  • Depends on Primus main's MaxText v26.5 2-value initialize()/run() support
    (fix(maxtext): handle v26.5 2-value initialize()/run() API #912), already merged.

amd-fuyuajin and others added 2 commits July 24, 2026 14:59
…scripts (v26.5)

Add a no-Docker, no-sudo bare-metal installation path for the Primus JAX /
MaxText training backend, mirroring the v26.5 JAX training Dockerfile.

New tools/installation-jax/:
- env.sh: sources the venv and exports ROCm (TheRock tarball), NVTE, and XLA
  runtime env; auto-detects the GPU arch (rocminfo -> KFD sysfs) so it works on
  gfx942/gfx950 without hand-editing; prefers Python 3.12 (prebuilt wheels are
  cp312).
- setup.sh: re-runnable staged installer (ROCm tarball, MaxText, TensorFlow-CPU
  from source, ROCm JAX/PJRT/plugin, TransformerEngine, Primus, RCCL from
  source). The 'te' stage auto-falls-back to a from-source build on glibc < 2.38
  hosts (e.g. Ubuntu 22.04); the tf_source build derives its Python wheel tag
  from the venv interpreter (cp312/cp313).
- README.md: rationale and stage reference.

New docs/01-getting-started/bare-metal-installation-jax.md: full manual guide
with pinned versions, a version-requirements table (Python/glibc/toolchain/GPU
prerequisites), and single- vs multi-node breakdown. Cross-linked from
installation.md and bare-metal-installation.md (PyTorch guide relabeled).

Validated end-to-end for single-node MaxText pretraining on gfx942 / Ubuntu
22.04 (glibc 2.35) / Python 3.12. Primus main already handles MaxText v26.5's
2-value initialize()/run() API (#912).

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

1 participant