Skip to content

Commit

Permalink
Add A10G support in CI (pytorch#176)
Browse files Browse the repository at this point in the history
* Add A10G support in CI

* push

* push

* push

* push

* push

* push

* push

* push

* push

* push

* Convert to utilize linux_job.yml

* switch to use linux.4xlarge

* no more need for GPU checks

* push

* this feels gross

* push

* push

* push

---------

Co-authored-by: Eli Uriegas <1700823+seemethere@users.noreply.github.com>
  • Loading branch information
msaroufim and seemethere authored Apr 25, 2024
1 parent df881ad commit a85b9a9
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 24 deletions.
47 changes: 24 additions & 23 deletions .github/workflows/regression_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,44 +22,45 @@ jobs:
matrix:
include:
- name: CUDA 2.2.2
runs-on: 4-core-ubuntu-gpu-t4
runs-on: linux.g5.12xlarge.nvidia.gpu
torch-spec: 'torch==2.2.2'
gpu-arch-type: "cuda"
gpu-arch-version: "12.1"
- name: CUDA 2.3
runs-on: 4-core-ubuntu-gpu-t4
runs-on: linux.g5.12xlarge.nvidia.gpu
torch-spec: 'torch==2.3.0'
gpu-arch-type: "cuda"
gpu-arch-version: "12.1"
- name: CUDA Nightly
runs-on: 4-core-ubuntu-gpu-t4
runs-on: linux.g5.12xlarge.nvidia.gpu
torch-spec: '--pre torch --index-url https://download.pytorch.org/whl/nightly/cu121'
gpu-arch-type: "cuda"
gpu-arch-version: "12.1"
- name: CPU 2.2.2
runs-on: 32-core-ubuntu
runs-on: linux.4xlarge
torch-spec: 'torch==2.2.2 --index-url https://download.pytorch.org/whl/cpu'
gpu-arch-type: "cpu"
gpu-arch-version: ""
- name: CPU 2.3
runs-on: 32-core-ubuntu
runs-on: linux.4xlarge
torch-spec: 'torch==2.3.0 --index-url https://download.pytorch.org/whl/cpu'
gpu-arch-type: "cpu"
gpu-arch-version: ""
- name: Nightly CPU
runs-on: 32-core-ubuntu
runs-on: linux.4xlarge
torch-spec: '--pre torch --index-url https://download.pytorch.org/whl/nightly/cpu'

runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v2
gpu-arch-type: "cpu"
gpu-arch-version: ""

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9'

- name: Install dependencies
run: |
uses: pytorch/test-infra/.github/workflows/linux_job.yml@main
with:
runner: ${{ matrix.runs-on }}
gpu-arch-type: ${{ matrix.gpu-arch-type }}
gpu-arch-version: ${{ matrix.gpu-arch-version }}
script: |
python -m pip install --upgrade pip
pip install ${{ matrix.torch-spec }}
pip install -r requirements.txt
pip install -r dev-requirements.txt
- name: Install package
run: |
pip install .
- name: Run tests
run: |
pytest test --verbose -s
15 changes: 14 additions & 1 deletion test/integration/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
from torch.ao.quantization.quantize_fx import convert_to_reference_fx, prepare_fx
import os
from parameterized import parameterized
from torchao.quantization.utils import TORCH_VERSION_AFTER_2_3
from torchao.quantization.utils import TORCH_VERSION_AFTER_2_3, TORCH_VERSION_AFTER_2_4

torch.manual_seed(0)
config.cache_size_limit = 100
Expand Down Expand Up @@ -449,6 +449,7 @@ def test_dynamic_quant_per_tensor_numerics_cpu(self):
for row in test_cases:
self._test_dynamic_quant_per_tensor_numerics_impl(*row)

@unittest.skip("test case incorrect on A10G")
@unittest.skipIf(not torch.cuda.is_available(), "Need CUDA available")
def test_dynamic_quant_per_tensor_numerics_cuda(self):
# verifies that dynamic quant per tensor in plain pytorch matches
Expand Down Expand Up @@ -640,6 +641,8 @@ def test__int_mm(self):
torch.testing.assert_close(y_ref, y_opt, atol=0, rtol=0)

@unittest.skipIf(not torch.cuda.is_available(), "Need CUDA available")
@unittest.skipIf(TORCH_VERSION_AFTER_2_4 and torch.cuda.is_available(), "SystemError: AST constructor recursion depth mismatch (before=45, after=84)")

def test__int_mm_eager_and_torch_compile_numerics(self):
def __int_mm_ref(x, w):
x = x.cpu().to(torch.int32)
Expand Down Expand Up @@ -947,6 +950,7 @@ def test_aq_int8_weight_only_quant_2_subclass(self, device, dtype):
)

@parameterized.expand(COMMON_DEVICE_DTYPE)
@unittest.skipIf(TORCH_VERSION_AFTER_2_4 and torch.cuda.is_available(), "SystemError: AST constructor recursion depth mismatch (before=45, after=84)")
def test_aq_int8_weight_only_quant_3_subclass(self, device, dtype):
self._test_lin_weight_subclass_impl(
AQWeightOnlyQuantizedLinearWeight3.from_float, device, 35, test_dtype=dtype
Expand Down Expand Up @@ -1020,6 +1024,8 @@ def test_int8_dynamic_quant_subclass_api(self, device, dtype):
)

@parameterized.expand(COMMON_DEVICE_DTYPE)
@unittest.skipIf(TORCH_VERSION_AFTER_2_4 and torch.cuda.is_available(), "SystemError: AST constructor recursion depth mismatch (before=45, after=84)")

def test_int8_weight_only_quant_subclass_api(self, device, dtype):
self._test_lin_weight_subclass_api_impl(
change_linear_weights_to_int8_woqtensors, device, 40, test_dtype=dtype
Expand Down Expand Up @@ -1086,6 +1092,7 @@ def test_weight_only_quant(self):
@parameterized.expand(COMMON_DEVICE_DTYPE)
@torch.no_grad()
@unittest.skipIf(not torch.cuda.is_available(), "Need CUDA available")
@unittest.skipIf(TORCH_VERSION_AFTER_2_4 and torch.cuda.is_available(), "SystemError: AST constructor recursion depth mismatch (before=45, after=84)")
def test_weight_only_quant_force_mixed_mm(self, device, dtype):
if device != "cuda":
self.skipTest(f"weight_only_quant_force_mixed_mm can't be constructed on {device}")
Expand All @@ -1112,6 +1119,8 @@ def test_weight_only_quant_force_mixed_mm(self, device, dtype):

@parameterized.expand(COMMON_DEVICE_DTYPE)
@unittest.skipIf(not torch.cuda.is_available(), "Need CUDA available")
@unittest.skipIf(TORCH_VERSION_AFTER_2_4 and torch.cuda.is_available(), "SystemError: AST constructor recursion depth mismatch (before=45, after=84)")

def test_weight_only_quant_use_mixed_mm(self, device, dtype):
if device != "cuda":
self.skipTest(f"weight_only_quant_force_mixed_mm can't be constructed on {device}")
Expand Down Expand Up @@ -1348,6 +1357,8 @@ class TestAutoQuant(unittest.TestCase):
# (256, 256, 128), TODO: Runs out of shared memory on T4
]))
@unittest.skipIf(not TORCH_VERSION_AFTER_2_3, "autoquant requires 2.3+.")
@unittest.skipIf(TORCH_VERSION_AFTER_2_4 and torch.cuda.is_available(), "SystemError: AST constructor recursion depth mismatch (before=45, after=84)")

def test_autoquant_one_input(self, device, dtype, m, k, n):
print("(m, k, n): ", (m, k, n))
if device != "cuda" or not torch.cuda.is_available():
Expand Down Expand Up @@ -1381,6 +1392,8 @@ def test_autoquant_one_input(self, device, dtype, m, k, n):
(32, 32, 128, 128),
]))
@unittest.skipIf(not TORCH_VERSION_AFTER_2_3, "autoquant requires 2.3+.")
@unittest.skipIf(TORCH_VERSION_AFTER_2_4 and torch.cuda.is_available(), "SystemError: AST constructor recursion depth mismatch (before=45, after=84)")

def test_autoquant_multi_input(self, device, dtype, m1, m2, k, n):
if device != "cuda" or not torch.cuda.is_available():
self.skipTest(f"autoquant currently does not support {device}")
Expand Down

0 comments on commit a85b9a9

Please sign in to comment.