Skip to content

Commit

Permalink
Revert "Run GPU Tests on Rapids Nightly at midnight UTC (NVIDIA#463)" (
Browse files Browse the repository at this point in the history
…NVIDIA#489)

This reverts commit 6c739e9.
  • Loading branch information
sarahyurick authored Jan 18, 2025
1 parent 6c739e9 commit 2a39616
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 34 deletions.
35 changes: 13 additions & 22 deletions .github/workflows/gpuci.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
name: "GPU CI/CD"

on:
schedule:
- cron: '0 0 * * *' # scheduled trigger for nightly builds, runs at midnight UTC every day
push:
branches:
- main
Expand All @@ -23,41 +21,34 @@ concurrency:
jobs:
# First, we build and push a NeMo-Curator container
build-container:
# "build-container" job is run if the "gpuci" label is added to the PR / merge to main / scheduled run
if: ${{ github.event.label.name == 'gpuci' || github.ref == 'refs/heads/main' || github.event_name == 'schedule' }}
# "build-container" job is run if the "gpuci" label is added to the PR
if: ${{ github.event.label.name == 'gpuci' || github.ref == 'refs/heads/main' }}
uses: NVIDIA/NeMo-FW-CI-templates/.github/workflows/[email protected]
with:
image-name: nemo_curator_container
dockerfile: Dockerfile
# Use different image-label / build-args based on event type
# Given we only use "schedule" event for nightly builds, we use that in our conditions to distinguish nightly vs stable
image-label: ${{ github.event_name == 'schedule' && 'nemo-curator-nightly' || 'nemo-curator' }}
image-label: nemo-curator
build-args: |
IMAGE_LABEL=${{ github.event_name == 'schedule' && 'nemo-curator-nightly' || 'nemo-curator' }}
IMAGE_LABEL=nemo-curator
REPO_URL=https://github.com/${{ github.repository }}.git
CURATOR_COMMIT=${{ github.sha }}
BUILD_TYPE=${{ github.event_name == 'schedule' && 'nightly' || 'stable' }}
prune-filter-timerange: 24h
# We don't want to use cache for Nighlty Runs, as we want to build a fresh image each time
use_cache: ${{ github.event_name != 'schedule' }}

# Then, we run our PyTests in the container we just built
run-gpu-tests:
needs: build-container
# This is the tag on our Azure runner found in Actions -> Runners -> Self-hosted runners
# It has 2 A100 GPUs
runs-on: self-hosted-azure
# "run-gpu-tests" job is run if the "gpuci" label is added to the PR / merged to main / scheduled run
if: ${{ github.event.label.name == 'gpuci' || github.ref == 'refs/heads/main' || github.event_name == 'schedule' }}
env:
CONTAINER_NAME: ${{ github.event_name == 'schedule' && 'nemo-curator-nightly-container' || 'nemo-curator-container' }}
# "run-gpu-tests" job is run if the "gpuci" label is added to the PR
if: ${{ github.event.label.name == 'gpuci' || github.ref == 'refs/heads/main' }}

steps:
# If something went wrong during the last cleanup, this step ensures any existing container is removed
- name: Remove existing container if it exists
run: |
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
docker rm -f $CONTAINER_NAME
if [ "$(docker ps -aq -f name=nemo-curator-container)" ]; then
docker rm -f nemo-curator-container
fi
# This runs the container which was pushed by build-container, which we call "nemo-curator-container"
Expand All @@ -66,33 +57,33 @@ jobs:
# `bash -c "sleep infinity"` keeps the container running indefinitely without exiting
- name: Run Docker container
run: |
docker run --gpus all --name $CONTAINER_NAME -d nemoci.azurecr.io/nemo_curator_container:${{ github.run_id }} bash -c "sleep infinity"
docker run --gpus all --name nemo-curator-container -d nemoci.azurecr.io/nemo_curator_container:${{ github.run_id }} bash -c "sleep infinity"
# Expect `whoami` to be "azureuser"
# Expect `nvidia-smi` to show our 2 A100 GPUs
- name: Check GPUs
run: |
whoami
docker exec $CONTAINER_NAME nvidia-smi
docker exec nemo-curator-container nvidia-smi
# In the virtual environment (called "curator") we created in the container,
# list all of our packages. Useful for debugging
- name: Verify installations
run: |
docker exec $CONTAINER_NAME pip list
docker exec nemo-curator-container pip list
# In the virtual environment (called "curator") we created in the container,
# run our PyTests marked with `@pytest.mark.gpu`
# We specify the `rootdir` to help locate the "pyproject.toml" file (which is in the root directory of the repository),
# and then the directory where the PyTests are located
- name: Run PyTests with GPU mark
run: |
docker exec $CONTAINER_NAME pytest -m gpu --rootdir /opt/NeMo-Curator /opt/NeMo-Curator/tests
docker exec nemo-curator-container pytest -m gpu --rootdir /opt/NeMo-Curator /opt/NeMo-Curator/tests
# After running `docker stop`, the container remains in an exited state
# It is still present on our system and could be restarted with `docker start`
# Thus, we use `docker rm` to permanently removed it from the system
- name: Cleanup
if: always()
run: |
docker stop $CONTAINER_NAME && docker rm $CONTAINER_NAME
docker stop nemo-curator-container && docker rm nemo-curator-container
14 changes: 2 additions & 12 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ ARG PYTHON_VER=3.10
ARG IMAGE_LABEL
ARG REPO_URL
ARG CURATOR_COMMIT
ARG BUILD_TYPE=stable

FROM rapidsai/ci-conda:cuda${CUDA_VER}-${LINUX_VER}-py${PYTHON_VER} as curator-update
# Needed to navigate to and pull the forked repository's changes
Expand All @@ -31,7 +30,6 @@ WORKDIR /opt

# Re-declare ARGs after new FROM to make them available in this stage
ARG CUDA_VER
ARG BUILD_TYPE

# Install the minimal libcu* libraries needed by NeMo Curator
RUN conda create -y --name curator -c nvidia/label/cuda-${CUDA_VER} -c conda-forge \
Expand All @@ -52,23 +50,15 @@ RUN \
--mount=type=bind,source=/opt/NeMo-Curator/pyproject.toml,target=/opt/NeMo-Curator/pyproject.toml,from=curator-update \
cd /opt/NeMo-Curator && \
source activate curator && \
if [ "$BUILD_TYPE" = "nightly" ]; then \
pip install ".[all_nightly]"; \
else \
pip install ".[all]"; \
fi
pip install ".[all]"

COPY --from=curator-update /opt/NeMo-Curator/ /opt/NeMo-Curator/

# Clone the user's repository, find the relevant commit, and install everything we need
RUN bash -exu <<EOF
source activate curator
cd /opt/NeMo-Curator/
if [ "$BUILD_TYPE" = "nightly" ]; then \
pip install --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple ".[all_nightly]"; \
else \
pip install --extra-index-url https://pypi.nvidia.com ".[all]"; \
fi
pip install --extra-index-url https://pypi.nvidia.com ".[all]"
EOF

ENV PATH /opt/conda/envs/curator/bin:$PATH

0 comments on commit 2a39616

Please sign in to comment.