diff --git a/.github/container/Dockerfile.maxtext.amd64 b/.github/container/Dockerfile.maxtext.amd64 index 8289a6099..26370d2a5 100644 --- a/.github/container/Dockerfile.maxtext.amd64 +++ b/.github/container/Dockerfile.maxtext.amd64 @@ -3,6 +3,9 @@ ARG BASE_IMAGE=ghcr.io/nvidia/jax-mealkit:jax ARG URLREF_MAXTEXT=https://github.com/google/maxtext.git#main ARG SRC_PATH_MAXTEXT=/opt/maxtext +ARG URLREF_JETSTREAM=https://github.com/google/jetstream.git#main +ARG SRC_PATH_JETSTREAM=/opt/jetstream + ############################################################################### ## Download source and add auxiliary scripts @@ -23,6 +26,17 @@ EOF ADD test-maxtext.sh /usr/local/bin +############################################################################### +## Add JetStream +############################################################################### +ARG URLREF_JETSTREAM +ARG SRC_PATH_JETSTREAM + +RUN <<"EOF" bash -ex +git-clone.sh ${URLREF_JETSTREAM} ${SRC_PATH_JETSTREAM} +echo "-r ${SRC_PATH_JETSTREAM}/requirements.txt" >> /opt/pip-tools.d/requirements-jetstream.in +EOF + ############################################################################### ## Install accumulated packages from the base image and the previous stage ############################################################################### diff --git a/.github/container/Dockerfile.maxtext.arm64 b/.github/container/Dockerfile.maxtext.arm64 index bd64c5b6d..3000541c0 100644 --- a/.github/container/Dockerfile.maxtext.arm64 +++ b/.github/container/Dockerfile.maxtext.arm64 @@ -64,6 +64,17 @@ EOF ADD test-maxtext.sh /usr/local/bin +############################################################################### +## Add JetStream +############################################################################### +ARG URLREF_JETSTREAM +ARG SRC_PATH_JETSTREAM + +RUN <<"EOF" bash -ex +git-clone.sh ${URLREF_JETSTREAM} ${SRC_PATH_JETSTREAM} +echo "-r ${SRC_PATH_JETSTREAM}/requirements.txt" >> /opt/pip-tools.d/requirements-jetstream.in +EOF + ############################################################################### ## Install accumulated packages from the base image and the previous stage ############################################################################### diff --git a/.github/workflows/_ci.yaml b/.github/workflows/_ci.yaml index 17ad5f06b..381ca2f16 100644 --- a/.github/workflows/_ci.yaml +++ b/.github/workflows/_ci.yaml @@ -588,3 +588,35 @@ jobs: with: MAXTEXT_IMAGE: ${{ needs.build-maxtext.outputs.DOCKER_TAG_FINAL }} secrets: inherit + + test-jetstream: + needs: build-maxtext + if: inputs.ARCHITECTURE == 'amd64' # no arm64 gpu runners + uses: ./.github/workflows/_test_unit.yaml + with: + TEST_NAME: jetstream + EXECUTE: | + docker run --shm-size=1g --gpus all ${{ needs.build-maxtext.outputs.DOCKER_TAG_FINAL }} \ + bash <<"EOF" |& tee test-jetstream.log + cd /opt/jetstream + pip install -r requirements.txt + export CUDA_VISIBLE_DEVICES=0 + python -m unittest -v jetstream.tests.core.test_orchestrator + python -m jetstream.engine.mock_engine_test + python -m jetstream.core.orchestrator_test + python -m jetstream.core.server_test + EOF + STATISTICS_SCRIPT: | + summary_line=$(tail -n1 test-jetstream.log) + errors=$(echo $summary_line | grep -oE '[0-9]+ error' | awk '{print $1} END { if (!NR) print 0}') + failed_tests=$(echo $summary_line | grep -oE '[0-9]+ failed' | awk '{print $1} END { if (!NR) print 0}') + passed_tests=$(echo $summary_line | grep -oE '[0-9]+ passed' | awk '{print $1} END { if (!NR) print 0}') + total_tests=$((failed_tests + passed_tests)) + echo "TOTAL_TESTS=${total_tests}" >> $GITHUB_OUTPUT + echo "ERRORS=${errors}" >> $GITHUB_OUTPUT + echo "PASSED_TESTS=${passed_tests}" >> $GITHUB_OUTPUT + echo "FAILED_TESTS=${failed_tests}" >> $GITHUB_OUTPUT + ARTIFACTS: | + test-jetstream.log + secrets: inherit +