Add docker image to use hermetic llvm and sysroot#782
Conversation
Gate every caller workflow job by `github.repository_owner` so that forks only run the CI subset they have infrastructure for. Non-ROCm jobs: `github.repository_owner == 'jax-ml'` ROCm jobs: `github.repository_owner == 'jax-ml' || github.repository_owner == 'ROCm'`
job naming, and nightly build workflow Version-tier S3 artifact layout: - Add rocm-release-version tier to S3 artifact paths to prevent wheel collisions across ROCm versions. - Add per-repo/branch/version LATEST pointer for wheel resolution. - Parameterize manylinux container image in build_rocm_artifacts.yml. - Plumb s3_download_uri through bazel_rocm.yml. Standardize CI job naming and matrix schema: - Unify ROCm matrix entries across all caller workflows to use a canonical schema with label, wheel-version, release-version, and tag fields. - Update job names to use matrix.rocm.label. - Add rocm-release-version input to pytest_rocm, bazel_rocm, and download-jax-rocm-wheels to decouple wheel filename matching from S3 path construction. - Add manylinux-image input to build_rocm_artifacts so callers can override the container image. Nightly workflow: - Add a dedicated build-rocm-artifacts job to the nightly workflow that builds wheels with pinned XLA (clone_main_xla: 0) and uploads to a nightly-specific S3 path. - Update nightly pytest and bazel ROCm jobs to depend on the new build.
Extends the wheel test continuous and nightly release workflows to run against TheRock 7.13.0 and TheRock latest builds in addition to ROCm 7.2.0.
5ab7632 to
80c6d34
Compare
|
@mminutoli should we keep docker files here now that rocm-jax would be depricated. Or do we still want to keep all the infra related files there? |
| run: | | ||
| working-directory: ./build/rocm/docker/ |
There was a problem hiding this comment.
Probably a typo, it needs to be its own line. As it is now, the script will fail
| # - jammy | ||
| # - el7 | ||
| # - el8 | ||
| set -x |
There was a problem hiding this comment.
| set -x | |
| set -euo pipefail | |
| set -x |
|
|
||
| jobs: | ||
| build-docker: | ||
| runs-on: ${{ fromJSON(inputs.runner-label) }} |
There was a problem hiding this comment.
| runs-on: ${{ fromJSON(inputs.runner-label) }} | |
| runs-on: ${{ inputs.runner-label }} |
| required: false | ||
| default: 'plugin_wheels' | ||
| type: string | ||
| extra-cr-tag: |
| df -h | ||
| rocm-smi -a || true | ||
| rocminfo | grep gfx || true | ||
| - uses: actions/checkout@v4 |
There was a problem hiding this comment.
We should be using v6+ on actions/checkou or pinned hashes
| rocminfo | grep gfx || true | ||
| - uses: actions/checkout@v4 | ||
| - name: Download wheel artifacts | ||
| uses: actions/download-artifact@v4 |
There was a problem hiding this comment.
Same. Needs a relevant version and pinned hash
| ROCM_DEB_REPO=${ROCM_DEB_REPO_HOME}${ROCM_VERS}/ | ||
| AMDGPU_DEB_REPO=${AMDGPU_DEB_REPO_HOME}${AMDGPU_REPO_VERS}/ | ||
|
|
||
| DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated update |
There was a problem hiding this comment.
git diff --check says there's a trailing whitspace
|
do we need to put this to jax upstream? not sure what's sync policy in rocm/jax? |
|
We keep our infra in another repository. So maybe we should close this PR and open one there. Nevertheless, the right approach seems to have hermetic root in the build, right @alekstheod ? |
mminutoli
left a comment
There was a problem hiding this comment.
As said above, this should be closed IMHO.
729ed31 to
88e42dc
Compare
cb097f7 to
d347a4f
Compare
3f9e8b4 to
f25f2b4
Compare
Add docker image to build and test JAX and XLA using hermetic llvm and sysroot based on ub22 image used for ml-build images