AMD publishes two families of Primus training Docker image:
| Image | Backends | Documented in |
|---|---|---|
rocm/primus:<version> |
Megatron-LM, TorchTitan, Megatron Bridge | Megatron-LM, TorchTitan |
rocm/jax-training:maxtext-<version> |
MaxText (JAX) | JAX MaxText |
The two families share a version number but are not built in lockstep — the same vNN.N tag can be weeks apart between families, and the MaxText family also ships patch releases (v26.3.1, v26.3.2) with no rocm/primus counterpart. Always read the section for the exact tag you are running.
This page is the single source of truth for image contents. Other pages link here instead of repeating version tables, so there is exactly one place to update per release. If you add a page that names an image tag, link to the relevant section below rather than restating the stack.
Every version below was read out of the published image itself. For v26.4 through v26.6 the values were additionally cross-checked against the release Dockerfiles in .github/workflows/docker-release/; earlier releases predate those files and are image-derived only. See Verifying the stack in an image to reproduce any table.
Megatron-LM, TorchTitan, and Megatron Bridge backends.
| Image ID | 4fcb3f210dc6 |
| Built | 2026-08-25 |
| Size | 54.0 GB |
| Manifest | f756f2279d8ab57b6549bcbd50d249755b69a407 |
| Dockerfile | Dockerfile.primus-v26.6 |
| Software component | Version |
|---|---|
| ROCm | 7.15.0 (rocm-sdk 7.15.0a20260727) |
| Python | 3.12.3 |
| PyTorch | 2.12.0+rocm7.15.0a20260727 |
| Transformer Engine | 2.17.0+rocm7.15.0a20260727.e028a6c |
| Flash Attention | 2.8.1 |
| hipBLASLt | 1.4.1-bbb68174 |
| Triton | 3.8.0+git4cff872c.rocm7.15.0a20260727 |
| RCCL | 2.30.4 |
| torchvision | 0.27.0+rocm7.15.0a20260727 |
| torchaudio | 2.11.0+rocm7.15.0a20260728 |
| APEX | 1.15.0a0+rocm10.1.0a20260822 |
| AITER | 0.1.14.post1 |
| Primus-Turbo | 0.4.1.dev26 |
| torchao | 0.15.0+gite9c7bead9 |
| FBGEMM | 2026.8.25 |
| mamba-ssm / causal-conv1d / grouped_gemm | 2.3.1 / 1.5.0.post8 / 1.1.4 |
| transformers / datasets | 5.5.0 / 3.6.0 |
| NumPy | 2.5.2 |
MaxText (JAX) backend. The published tag is the MaxDiffusion-combined image (/workspace/maxdiffusion at 68e06965); MaxText remains at /workspace/maxtext.
| Image ID | a71d8dbb045e |
| Built | 2026-08-28 |
| Size | 42.6 GB |
| Manifest | 31a3a21d0a37cbd0b5de0342535f65d557ff77ba |
| Dockerfile | Dockerfile.jax-v26.6 |
| Software component | Version |
|---|---|
| ROCm | 7.14.0 |
| Python | 3.12.3 |
| JAX / jaxlib | 0.11.0 |
| jax-rocm7-pjrt / jax-rocm7-plugin | 0.11.0.post1 |
| Transformer Engine | 2.17.0+rocm7.14.0.50a84ad |
| hipBLASLt | 1.4.1-cd957402 |
| RCCL | 2.30.4 (built from rocm-systems 9e5e4084) |
| Flax | 0.12.8 |
| TensorFlow | 2.21.0 (CPU-only, rebuilt from the ROCm fork) |
| Optax / Orbax / Grain / tensorstore | 0.2.8 / 0.12.4 / 0.2.18 / 0.1.85 |
| MaxText | b47d74bf (release/v26.6) |
| transformers / datasets | 4.57.3 / 4.8.5 |
| NumPy | 2.5.2 |
Note:
transformersis 4.57.3 because the published image includes the MaxDiffusion stage, which pins transformers back to 4.x (Flax CLIP / T5). That is a step down from v26.5 (5.9.0). Transformer Engine is taggedrocm7.14.0and matches the image ROCm, unlike v26.5 where the TE wheel was arocm7.15build on ROCm 7.14.0.
Use the release/v26.6 branch for both images:
git clone --recurse-submodules https://github.com/AMD-AGI/Primus.git
cd Primus
git checkout release/v26.6
git submodule update --init --recursive| Branch tip | 2aa05ead (2026-08-25) |
| Megatron-LM | d3528a21 |
| TorchTitan | 73a0e697 |
| Megatron Bridge | 9577b128 |
| MaxText | b47d74bf |
| Emerging-Optimizers | 93d9eb3a |
| HummingbirdXT | ed7b7bd0 |
Prefer a
release/v26.6checkout over the Primus copy baked into the images.
rocm/primus:v26.6was built from2aa05ead(2026-08-25), which is the currentrelease/v26.6tip, so the in-image/workspace/Primuscurrently matches. Cloning the branch still keeps you current if later commits land on it.rocm/jax-training:maxtext-v26.6was built frommainat4d2f7a74(2026-08-28), because its Dockerfile pinsPRIMUS_BRANCH=mainrather than a commit. Unlike v26.5, its bundledthird_party/maxtextdoes match/workspace/maxtext(b47d74bf). Userelease/v26.6for MaxText training so you get the Primus recipes validated against this image rather than whatevermainwas on the build day.
rocm/primus:
| Component | v26.5 | v26.6 |
|---|---|---|
| ROCm nightly | 7.15.0a20260720 | 7.15.0a20260727 |
| PyTorch | 2.12.0+rocm7.15.0a20260720 | 2.12.0+rocm7.15.0a20260727 |
| Transformer Engine | 2.15.0.dev0+rocm7.15.0a20260716.a07e607 | 2.17.0+rocm7.15.0a20260727.e028a6c |
| Flash Attention | 2.8.3 | 2.8.1 |
| Triton | 3.7.1+git0263a6a6 | 3.8.0+git4cff872c |
| hipBLASLt | 1.4.1-1aa46415 | 1.4.1-bbb68174 |
| Primus-Turbo | 0.3.2.dev48 | 0.4.1.dev26 |
| APEX | 1.14.0a0+rocm7.15.0a20260721 | 1.15.0a0+rocm10.1.0a20260822 |
| transformers | 4.55.0 | 5.5.0 |
| FBGEMM | 2026.7.22 | 2026.8.25 |
| NumPy | 2.5.1 | 2.5.2 |
| Image size | 54.7 GB | 54.0 GB |
rocm/jax-training:maxtext:
| Component | v26.5 | v26.6 |
|---|---|---|
| JAX / jaxlib | 0.10.0 | 0.11.0 |
| jax-rocm7-pjrt / jax-rocm7-plugin | 0.10.0+rocm7.14.0 | 0.11.0.post1 |
| Transformer Engine | 2.15.0.dev0+rocm7.15.0a20260707.72d01a0 | 2.17.0+rocm7.14.0.50a84ad |
| Flax | 0.12.2 | 0.12.8 |
| Orbax / Grain / tensorstore | 0.11.39 / 0.2.16 / 0.1.82 | 0.12.4 / 0.2.18 / 0.1.85 |
| MaxText | a7c6c7e5 |
b47d74bf |
| transformers | 5.9.0 | 4.57.3 |
| NumPy | 2.0.2 | 2.5.2 |
| Image size | 45.7 GB | 42.6 GB |
JAX 0.11.0 still requires Shardy. Set
shardy=Trueduring the training run on v26.6. See the Shardy migration guide.
Megatron-LM, TorchTitan, and Megatron Bridge backends.
| Image ID | 3040bf42974d |
| Built | 2026-07-22 |
| Size | 54.7 GB |
| Manifest | 8e124a76fbe33cbcc26062f05da3ca5e6419b163 |
| Dockerfile | Dockerfile.primus-v26.5 |
| Software component | Version |
|---|---|
| ROCm | 7.15.0 (rocm-sdk 7.15.0a20260720) |
| Python | 3.12.3 |
| PyTorch | 2.12.0+rocm7.15.0a20260720 |
| Transformer Engine | 2.15.0.dev0+rocm7.15.0a20260716.a07e607 |
| Flash Attention | 2.8.3 |
| hipBLASLt | 1.4.1-1aa46415 |
| Triton | 3.7.1+git0263a6a6.rocm7.15.0a20260720 |
| RCCL | 2.30.4 |
| torchvision | 0.27.0+rocm7.15.0a20260720 |
| torchaudio | 2.11.0+rocm7.15.0a20260721 |
| APEX | 1.14.0a0+rocm7.15.0a20260721 |
| AITER | 0.1.14.post1 |
| Primus-Turbo | 0.3.2.dev48 |
| torchao | 0.15.0+gite9c7bead9 |
| FBGEMM | 2026.7.22 |
| mamba-ssm / causal-conv1d / grouped_gemm | 2.3.1 / 1.5.0.post8 / 1.1.4 |
| transformers / datasets | 4.55.0 / 3.6.0 |
| NumPy | 2.5.1 |
MaxText (JAX) backend.
| Image ID | b034a6769b58 |
| Built | 2026-07-17 |
| Size | 45.7 GB |
| Manifest | 5ffe026e7bb969c42ce9f3c9f5c4a3c3164c8a8c |
| Dockerfile | Dockerfile.jax-v26.5 |
| Software component | Version |
|---|---|
| ROCm | 7.14.0 |
| Python | 3.12.3 |
| JAX / jaxlib | 0.10.0 |
| jax-rocm7-pjrt / jax-rocm7-plugin | 0.10.0+rocm7.14.0 |
| Transformer Engine | 2.15.0.dev0+rocm7.15.0a20260707.72d01a0 |
| hipBLASLt | 1.4.1-cd957402 |
| RCCL | 2.30.4 (built from rocm-systems 9e5e4084) |
| Flax | 0.12.2 |
| TensorFlow | 2.21.0 (CPU-only, rebuilt from the ROCm fork) |
| Optax / Orbax / Grain / tensorstore | 0.2.8 / 0.11.39 / 0.2.16 / 0.1.82 |
| MaxText | a7c6c7e5 (release/v26.5) |
| transformers / datasets | 5.9.0 / 4.8.5 |
| NumPy | 2.0.2 |
| amdsmi | 7.0.2 |
Note: The Transformer Engine wheel is tagged
rocm7.15.0a…even though the image ships ROCm 7.14.0. This is intentional and matches the Dockerfile.
Use the release/v26.5 branch for both images:
git clone --recurse-submodules https://github.com/AMD-AGI/Primus.git
cd Primus
git checkout release/v26.5
git submodule update --init --recursive| Branch tip | ca7ddda3 (2026-07-30) |
| Megatron-LM | d3528a21 |
| TorchTitan | 73a0e697 |
| Megatron Bridge | 9577b128 |
| MaxText | a7c6c7e5 |
| Emerging-Optimizers | 93d9eb3a |
| HummingbirdXT | ed7b7bd0 |
Do not use the Primus checkout baked into the images. Both images contain a
/workspace/Primus, but neither tracksrelease/v26.5:
rocm/primus:v26.5was built fromb511d1b6(2026-07-22). Three commits have landed onrelease/v26.5since, which bumped the MaxText submodule from80f431d0toa7c6c7e5and added support for the v26.5 MaxText API.rocm/jax-training:maxtext-v26.5was built frommainat8b5e8091(2026-07-17), because its Dockerfile pinsPRIMUS_BRANCH=mainrather than a commit. Its bundledthird_party/maxtextis80f431d0, which does not match the/workspace/maxtextcheckout (a7c6c7e5) the image was validated against.Cloning
release/v26.5yourself avoids both problems and gives you the MaxText the image was built around.
rocm/primus:
| Component | v26.4 | v26.5 |
|---|---|---|
| ROCm | 7.14.0 | 7.15.0 |
| PyTorch | 2.12.0+rocm7.14.0a20260608 | 2.12.0+rocm7.15.0a20260720 |
| Transformer Engine | 2.14.0.dev0+e6ede467 | 2.15.0.dev0+rocm7.15.0a20260716.a07e607 |
| Triton | 3.7.0+gitb4e20bbe | 3.7.1+git0263a6a6 |
| RCCL | 2.29.7 | 2.30.4 |
| hipBLASLt | 1.4.1-be5adb9b | 1.4.1-1aa46415 |
| AITER | 0.1.12.post2.dev214+gb5e03ed19 | 0.1.14.post1 |
| Primus-Turbo | 0.3.0+3c39ef2 | 0.3.2.dev48 |
| APEX | 1.11.0+rocm7.14.0a20260618 | 1.14.0a0+rocm7.15.0a20260721 |
| NumPy | 2.4.6 | 2.5.1 |
| Image size | 75.9 GB | 54.7 GB |
rocm/jax-training:maxtext:
| Component | v26.4 | v26.5 |
|---|---|---|
| JAX / jaxlib | 0.9.1 | 0.10.0 |
| jax-rocm7-pjrt / jax-rocm7-plugin | 0.9.1+rocm7.14.0a20260526 | 0.10.0+rocm7.14.0 |
| Transformer Engine | 2.12.0.dev0+635d7c08 | 2.15.0.dev0+rocm7.15.0a20260707.72d01a0 |
| hipBLASLt | 1.4.0-807283e5 | 1.4.1-cd957402 |
| RCCL | 2.28.9 | 2.30.4 |
| TensorFlow | 2.20.0 | 2.21.0 |
| MaxText | 80f431d0 |
a7c6c7e5 |
| transformers | 5.8.1 | 5.9.0 |
| Image size | 63.6 GB | 45.7 GB |
JAX 0.10.0 requires Shardy. Set
shardy=Trueduring the training run on v26.5. See the Shardy migration guide.
| Image ID | 8c8ecc6fe14b |
| Built | 2026-06-18 |
| Size | 75.9 GB |
| Manifest | a2d4c7239d874501f864080baf2a8131236b0221 |
| Also published as | rocm/primus:pytorch-2.12.0-rocm7.14.0a20260608_te-2.14.0.dev0-e6ede467_v26.4 (same image) |
| Dockerfile | Dockerfile.primus-v26.4 |
| Software component | Version |
|---|---|
| ROCm | 7.14.0 (rocm-sdk 7.14.0a20260608) |
| Python | 3.12.3 |
| PyTorch | 2.12.0+rocm7.14.0a20260608 |
| Transformer Engine | 2.14.0.dev0+e6ede467 |
| Flash Attention | 2.8.3 |
| hipBLASLt | 1.4.1-be5adb9b |
| Triton | 3.7.0+gitb4e20bbe.rocm7.14.0a20260608 |
| RCCL | 2.29.7 |
| torchvision | 0.27.0+rocm7.14.0a20260608 |
| torchaudio | 2.11.0+rocm7.14.0a20260617 |
| APEX | 1.11.0+rocm7.14.0a20260618 |
| AITER | 0.1.12.post2.dev214+gb5e03ed19 |
| Primus-Turbo | 0.3.0+3c39ef2 |
| torchao | 0.15.0+gite9c7bead9 |
| FBGEMM | 2026.6.18 |
| mamba-ssm / causal-conv1d / grouped_gemm | 2.3.1 / 1.5.0.post8 / 1.1.4 |
| transformers / datasets | 4.55.0 / 3.6.0 |
| NumPy | 2.4.6 |
| Image ID | 9b263b38c159 |
| Built | 2026-05-27 |
| Size | 63.6 GB |
| Manifest | b0b705ce0533ead5490070daa402ca625f1489b5 |
| Also published as | rocm/jax-training:maxtext-v26.4-jax0.9.1-te2.12.0 (same image) |
| Dockerfile | Dockerfile.jax-v26.4 |
| Software component | Version |
|---|---|
| ROCm | 7.14.0 |
| Python | 3.12.3 |
| JAX / jaxlib | 0.9.1 |
| jax-rocm7-pjrt / jax-rocm7-plugin | 0.9.1+rocm7.14.0a20260526 |
| Transformer Engine | 2.12.0.dev0+635d7c08 |
| hipBLASLt | 1.4.0-807283e5 |
| RCCL | 2.28.9 |
| Flax | 0.12.2 |
| TensorFlow | 2.20.0 (CPU-only) |
| Optax / Orbax / Grain / tensorstore | 0.2.8 / 0.11.39 / 0.2.16 / 0.1.82 |
| MaxText | 80f431d0 |
| transformers / datasets | 5.8.1 / 4.8.5 |
| NumPy | 2.0.2 |
| amdsmi | 7.0.2 |
rocm/primus:v26.4 bakes Primus at 236cfa9d, which is the commit the published v26.4 benchmark recipes pin:
git clone --recurse-submodules https://github.com/AMD-AGI/Primus.git
cd Primus
git checkout 236cfa9d
git submodule update --init --recursiveHeadline versions only. Read the in-image manifest for the full stack of any image below — except v26.2 and v26.1, which predate the manifest (use pip list there).
The three MaxText v26.3.x images ship an identical software stack; they differ only in MaxText and Primus content.
| Image | Python | ROCm | Framework | Transformer Engine | RCCL |
|---|---|---|---|---|---|
rocm/primus:v26.3 |
3.12.3 | 7.2.1 | PyTorch 2.10.0+git94c6e04 | 2.12.0.dev0+40434cf6 | 2.27.7 |
rocm/primus:v26.2 |
3.12.3 | 7.2.0 | PyTorch 2.10.0a0+git449b176 | 2.8.0.dev0+51f74fa7 | 2.27.7 |
rocm/primus:v26.1 |
3.10.12 | 7.1.0 | PyTorch 2.10.0.dev20251112+rocm7.1 | 2.6.0.dev0+f141f34b | 2.27.7 |
rocm/jax-training:maxtext-v26.3.2 |
3.12.3 | 7.2.1 | JAX 0.8.2 | 2.8.0.dev0+9b312832 | 2.27.7 |
rocm/jax-training:maxtext-v26.3.1 |
3.12.3 | 7.2.1 | JAX 0.8.2 | 2.8.0.dev0+9b312832 | 2.27.7 |
rocm/jax-training:maxtext-v26.3 |
3.12.3 | 7.2.1 | JAX 0.8.2 | 2.8.0.dev0+9b312832 | 2.27.7 |
rocm/jax-training:maxtext-v26.2 |
3.12.3 | 7.1.1 | JAX 0.8.2 | 2.8.0.dev0+aec00a7f | 2.27.7 |
Images from v26.3 onward ship a manifest at /workspace/.manifest/ recording exactly what was installed at build time:
| File | Contents |
|---|---|
requirements.txt |
full pip list |
dpkg-list.txt |
full dpkg -l |
env.txt |
every environment variable baked into the image |
training_docker_version |
the build's commit tag |
Dockerfile |
the Dockerfile the image was built from (docker-build-recipe.txt in rocm/jax-training:maxtext-v26.6) |
docker run --rm --entrypoint bash rocm/primus:v26.6 -c 'cat /workspace/.manifest/requirements.txt'Native library versions are not pip packages; read them from the ROCm headers:
docker run --rm --entrypoint bash rocm/primus:v26.6 -c '
grep -E "HIPBLASLT_VERSION_(MAJOR|MINOR|PATCH|TWEAK)" $(find $ROCM_PATH /opt/rocm -name hipblaslt-version.h 2>/dev/null | head -1)
grep -E "define NCCL_(MAJOR|MINOR|PATCH)" $(find $ROCM_PATH /opt/rocm -name rccl.h 2>/dev/null | head -1)'Images older than v26.3 predate the manifest; query them with pip list directly.