File size: 3,851 Bytes
1078d3e
658ed86
1078d3e
dd83a20
1078d3e
 
5d931cc
 
f4868d7
9032e61
dd83a20
5d931cc
 
f4868d7
9032e61
1078d3e
d199d6c
 
1078d3e
 
 
 
 
 
 
 
 
 
 
 
 
d199d6c
658ed86
d35278a
658ed86
6c19e93
d199d6c
 
 
 
2b8c28b
d199d6c
 
2b8c28b
d199d6c
658ed86
72b6ca0
a653392
d199d6c
 
b6ab8aa
34c0a86
d199d6c
 
 
9218ebe
1078d3e
9032e61
 
 
8da1633
9032e61
1078d3e
 
9032e61
 
 
 
 
 
 
 
 
 
 
1b18003
1078d3e
9032e61
 
8da1633
 
 
1078d3e
8da1633
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9032e61
8da1633
 
1078d3e
8da1633
 
 
badda37
8da1633
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
name: Tests
on:
  # check on push/merge to main, PRs, and manual triggers
  push:
    branches:
      - "main"
    paths:
      - '**.py'
      - 'requirements.txt'
      - '.github/workflows/*.yml'
  pull_request:
      paths:
       - '**.py'
       - 'requirements.txt'
       - '.github/workflows/*.yml'
  workflow_dispatch:

jobs:
  pre-commit:
    name: pre-commit
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: "3.9"
          cache: 'pip' # caching pip dependencies
      - uses: pre-commit/action@v3.0.0

  pytest:
    name: PyTest
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python_version: ["3.9", "3.10", "3.11"]
    timeout-minutes: 10

    steps:
      - name: Check out repository code
        uses: actions/checkout@v3

      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python_version }}
          cache: 'pip' # caching pip dependencies

      - name: Install dependencies
        run: |
          pip3 install -U -e .
          pip3 install -r requirements-tests.txt

      - name: Run tests
        run: |
          pytest --ignore=tests/e2e/ tests/

  docker-e2e-tests:
    if: github.repository_owner == 'OpenAccess-AI-Collective'
    # this job needs to be run on self-hosted GPU runners...
    runs-on: [self-hosted, gpu, docker]
    timeout-minutes: 30
    needs: [pre-commit, pytest]

    strategy:
      fail-fast: false
      matrix:
        include:
          - cuda: 118
            cuda_version: 11.8.0
            python_version: "3.10"
            pytorch: 2.0.1
          - cuda: 121
            cuda_version: 12.1.0
            python_version: "3.10"
            pytorch: 2.1.2
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Docker metadata
        id: metadata
        uses: docker/metadata-action@v5
        with:
          images: winglian/axolotl-tests
      - name: Build Docker image
        run: |
          # Set up build arguments
          BASE_TAG="main-base-py${{ matrix.python_version }}-cu${{ matrix.cuda }}-${{ matrix.pytorch }}"
          CUDA="${{ matrix.cuda }}"
          PYTORCH_VERSION="${{ matrix.pytorch }}"
          # Build the Docker image
          docker build . \
            --file ./docker/Dockerfile-tests \
            --build-arg BASE_TAG=$BASE_TAG \
            --build-arg CUDA=$CUDA \
            --build-arg GITHUB_REF=$GITHUB_REF \
            --build-arg PYTORCH_VERSION=$PYTORCH_VERSION \
            --tag ${{ steps.metadata.outputs.tags }}-py${{ matrix.python_version }}-cu${{ matrix.cuda }}-${{ matrix.pytorch }} \
            --no-cache
      - name: Unit Tests w docker image
        run: |
          docker run --rm ${{ steps.metadata.outputs.tags }}-py${{ matrix.python_version }}-cu${{ matrix.cuda }}-${{ matrix.pytorch }} pytest --ignore=tests/e2e/ /workspace/axolotl/tests/
      - name: GPU Unit Tests w docker image
        run: |
          docker run --privileged --gpus "all" --env WANDB_DISABLED=true --rm ${{ steps.metadata.outputs.tags }}-py${{ matrix.python_version }}-cu${{ matrix.cuda }}-${{ matrix.pytorch }} pytest --ignore=tests/e2e/patched/ /workspace/axolotl/tests/e2e/
      - name: GPU Unit Tests monkeypatched w docker image
        run: |
          docker run --privileged --gpus "all" --env WANDB_DISABLED=true --rm ${{ steps.metadata.outputs.tags }}-py${{ matrix.python_version }}-cu${{ matrix.cuda }}-${{ matrix.pytorch }} pytest /workspace/axolotl/tests/e2e/patched/
      - name: Prune image from docker
        if: github.ref != 'refs/heads/main'
        run: |
          docker rmi -f ${{ steps.metadata.outputs.tags }}-py${{ matrix.python_version }}-cu${{ matrix.cuda }}-${{ matrix.pytorch }}