mirror of
https://github.com/hpcaitech/ColossalAI.git
synced 2025-04-28 03:43:01 +00:00
* remove triton version * remove torch 2.2 * remove torch 2.1 * debug * remove 2.1 build tests * require torch >=2.2 --------- Co-authored-by: Edenzzzz <wtan45@wisc.edu>
122 lines
4.5 KiB
YAML
122 lines
4.5 KiB
YAML
name: Test Example on PR
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- "main"
|
|
- "develop"
|
|
- "feature/**"
|
|
# any change in the examples folder will trigger check for the corresponding example.
|
|
paths:
|
|
- "examples/**"
|
|
- "!examples/**.md"
|
|
- ".github/workflows/example_check_on_pr.yml"
|
|
|
|
jobs:
|
|
# This is for changed example files detect and output a matrix containing all the corresponding directory name.
|
|
detect-changed-example:
|
|
if: |
|
|
github.event.pull_request.draft == false &&
|
|
github.event.pull_request.base.repo.full_name == 'hpcaitech/ColossalAI' && github.event_name == 'pull_request'
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
matrix: ${{ steps.setup-matrix.outputs.matrix }}
|
|
anyChanged: ${{ steps.setup-matrix.outputs.anyChanged }}
|
|
anyExtensionFileChanged: ${{ steps.find-extension-change.outputs.any_changed }}
|
|
name: Detect changed example files
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-detect-change
|
|
cancel-in-progress: true
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- name: Locate base commit
|
|
id: locate-base-sha
|
|
run: |
|
|
curBranch=$(git rev-parse --abbrev-ref HEAD)
|
|
commonCommit=$(git merge-base origin/main $curBranch)
|
|
echo $commonCommit
|
|
echo "baseSHA=$commonCommit" >> $GITHUB_OUTPUT
|
|
|
|
- name: Find the changed extension-related files
|
|
id: find-extension-change
|
|
uses: tj-actions/changed-files@v35
|
|
with:
|
|
base_sha: ${{ steps.locate-base-sha.outputs.baseSHA }}
|
|
files: |
|
|
op_builder/**
|
|
colossalai/kernel/**
|
|
setup.py
|
|
|
|
- name: Get all changed example files
|
|
id: changed-files
|
|
uses: tj-actions/changed-files@v35
|
|
with:
|
|
base_sha: ${{ steps.locate-base-sha.outputs.baseSHA }}
|
|
|
|
- name: setup matrix
|
|
id: setup-matrix
|
|
run: |
|
|
changedFileName=""
|
|
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
|
changedFileName="${file}:${changedFileName}"
|
|
done
|
|
echo "$changedFileName was changed"
|
|
res=`python .github/workflows/scripts/example_checks/detect_changed_example.py --fileNameList $changedFileName`
|
|
echo "All changed examples are $res"
|
|
|
|
if [ "$res" == "[]" ]; then
|
|
echo "anyChanged=false" >> $GITHUB_OUTPUT
|
|
echo "matrix=null" >> $GITHUB_OUTPUT
|
|
else
|
|
dirs=$( IFS=',' ; echo "${res[*]}" )
|
|
echo "anyChanged=true" >> $GITHUB_OUTPUT
|
|
echo "matrix={\"directory\":$(echo "$dirs")}" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
# If no file is changed, it will prompt an error and shows the matrix do not have value.
|
|
check-changed-example:
|
|
# Add this condition to avoid executing this job if the trigger event is workflow_dispatch.
|
|
if: |
|
|
github.event.pull_request.draft == false &&
|
|
github.event.pull_request.base.repo.full_name == 'hpcaitech/ColossalAI' && github.event_name == 'pull_request' &&
|
|
needs.detect-changed-example.outputs.anyChanged == 'true'
|
|
name: Test the changed example
|
|
needs: detect-changed-example
|
|
runs-on: [self-hosted, gpu]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix: ${{fromJson(needs.detect-changed-example.outputs.matrix)}}
|
|
container:
|
|
image: hpcaitech/pytorch-cuda:2.2.2-12.1.0
|
|
options: --gpus all --rm -v /data/scratch/examples-data:/data/ -v /dev/shm
|
|
timeout-minutes: 30
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-run-example-${{ matrix.directory }}
|
|
cancel-in-progress: true
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Restore Colossal-AI Cache
|
|
if: needs.detect.outputs.anyExtensionFileChanged != 'true'
|
|
run: |
|
|
if [ -d /github/home/cuda_ext_cache ] && [ ! -z "$(ls -A /github/home/cuda_ext_cache/)" ]; then
|
|
cp -p -r /github/home/cuda_ext_cache/* /__w/ColossalAI/ColossalAI/
|
|
fi
|
|
|
|
- name: Install Colossal-AI
|
|
run: |
|
|
BUILD_EXT=1 pip install -v -e .
|
|
|
|
- name: Store Colossal-AI Cache
|
|
run: |
|
|
cp -p -r /__w/ColossalAI/ColossalAI/build /github/home/cuda_ext_cache/
|
|
|
|
- name: Test the example
|
|
run: |
|
|
example_dir=${{ matrix.directory }}
|
|
cd "${PWD}/examples/${example_dir}"
|
|
bash test_ci.sh
|