diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 81b5516235e..3ca896bbb55 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -373,11 +373,11 @@ jobs: elif [ "${{ matrix.VER_TORCH }}" != "" ] ; then PYTEST_TARGETS="$PYTEST_TARGETS ./TrainingExtensions/torch/test" fi - PYTEST_ARGS="" - if [ "${{ matrix.VER_CUDA }}" == "" ] ; then - PYTEST_ARGS="$PYTEST_ARGS -m \"not cuda\"" + PYTEST_ARGS="not blah" + if [ "${{ matrix.VER_CUDA }}" = "" ] ; then + PYTEST_ARGS="not cuda" fi - ./.conda/bin/conda run --live-stream --name "${{ matrix.id }}" python3 -m pytest $PYTEST_ARGS $PYTEST_TARGETS + ./.conda/bin/conda run --live-stream --name "${{ matrix.id }}" python3 -m pytest -m "$PYTEST_ARGS" $PYTEST_TARGETS docker-push-latest: needs: [docker-tag, variants, test] diff --git a/.github/workflows/pypi-release-pipeline.yml b/.github/workflows/pypi-release-pipeline.yml index 05d1554742e..fce2cc4ac99 100644 --- a/.github/workflows/pypi-release-pipeline.yml +++ b/.github/workflows/pypi-release-pipeline.yml @@ -326,11 +326,11 @@ jobs: elif [ "${{ matrix.VER_TORCH }}" != "" ] ; then PYTEST_TARGETS="$PYTEST_TARGETS ./NightlyTests/torch" fi - PYTEST_ARGS="" - if [ "${{ matrix.VER_CUDA }}" == "" ] ; then - PYTEST_ARGS="$PYTEST_ARGS -m \"not cuda\"" + PYTEST_ARGS="not blah" + if [ "${{ matrix.VER_CUDA }}" = "" ] ; then + PYTEST_ARGS="not cuda" fi - ./.conda/bin/conda run --live-stream --name "${{ matrix.id }}" python3 -m pytest $PYTEST_ARGS $PYTEST_TARGETS + ./.conda/bin/conda run --live-stream --name "${{ matrix.id }}" python3 -m pytest -m "$PYTEST_ARGS" $PYTEST_TARGETS publish: name: Publish the wheel packages diff --git a/TrainingExtensions/common/src/python/aimet_common/quantsim_config/utils.py b/TrainingExtensions/common/src/python/aimet_common/quantsim_config/utils.py index b82854b78ef..bae3368edef 100644 --- a/TrainingExtensions/common/src/python/aimet_common/quantsim_config/utils.py +++ b/TrainingExtensions/common/src/python/aimet_common/quantsim_config/utils.py @@ -46,3 +46,12 @@ def get_path_for_per_channel_config(): :return: path for default per channel config file """ return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'default_config_per_channel.json') + + +def get_path_for_per_tensor_config(): + """ + Returns path for default per tensor config file + + :return: path for default per tensor config file + """ + return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'default_config.json') diff --git a/TrainingExtensions/onnx/test/python/test_quantsim.py b/TrainingExtensions/onnx/test/python/test_quantsim.py index 9ca00d2ed46..e97c24e1803 100644 --- a/TrainingExtensions/onnx/test/python/test_quantsim.py +++ b/TrainingExtensions/onnx/test/python/test_quantsim.py @@ -381,25 +381,18 @@ def onnx_callback(session, inputs): with open(os.path.join(tempdir, 'onnx_sim_gpu.encodings')) as f: gpu_encodings = json.load(f) - for name in list(cpu_encodings['activation_encodings'].keys()): - assert (np.max(np.abs(cpu_encodings['activation_encodings'][name][0]['max'] - - gpu_encodings['activation_encodings'][name][0]['max'])) < 0.05) - assert (np.max(np.abs(cpu_encodings['activation_encodings'][name][0]['min'] - - gpu_encodings['activation_encodings'][name][0]['min'])) < 0.05) - assert (np.max(np.abs(cpu_encodings['activation_encodings'][name][0]['scale'] - - gpu_encodings['activation_encodings'][name][0]['scale'])) < 0.05) - assert cpu_encodings['activation_encodings'][name][0]['offset'] == \ - gpu_encodings['activation_encodings'][name][0]['offset'] - - for name in list(cpu_encodings['param_encodings'].keys()): - assert (np.max(np.abs(cpu_encodings['param_encodings'][name][0]['max'] - - gpu_encodings['param_encodings'][name][0]['max'])) < 0.05) - assert (np.max(np.abs(cpu_encodings['param_encodings'][name][0]['min'] - - gpu_encodings['param_encodings'][name][0]['min'])) < 0.05) - assert (np.max(np.abs(cpu_encodings['param_encodings'][name][0]['scale'] - - gpu_encodings['param_encodings'][name][0]['scale'])) < 0.05) - assert cpu_encodings['param_encodings'][name][0]['offset'] == \ - gpu_encodings['param_encodings'][name][0]['offset'] + for i, name in enumerate(cpu_encodings['activation_encodings']): + assert (np.max(np.abs(cpu_encodings['activation_encodings'][i]['scale'][0] - + gpu_encodings['activation_encodings'][i]['scale'][0])) < 0.05) + assert cpu_encodings['activation_encodings'][i]['offset'] == \ + gpu_encodings['activation_encodings'][i]['offset'] + + for i, name in enumerate(cpu_encodings['param_encodings']): + # Comparing the scale for first channel only + assert (np.max(np.abs(cpu_encodings['param_encodings'][i]['scale'][0] - + gpu_encodings['param_encodings'][i]['scale'][0])) < 0.05) + assert cpu_encodings['param_encodings'][i]['offset'] == \ + gpu_encodings['param_encodings'][i]['offset'] @pytest.mark.cuda def test_compare_encodings_cpu_gpu_fp16(self): diff --git a/TrainingExtensions/tensorflow/test/python/test_quantsim_keras.py b/TrainingExtensions/tensorflow/test/python/test_quantsim_keras.py index c8ce15b4433..0256d7e1656 100644 --- a/TrainingExtensions/tensorflow/test/python/test_quantsim_keras.py +++ b/TrainingExtensions/tensorflow/test/python/test_quantsim_keras.py @@ -33,6 +33,7 @@ # # @@-COPYRIGHT-END-@@ # ============================================================================= + import contextlib import json import os @@ -41,6 +42,7 @@ from typing import List import aimet_common.libpymo as libpymo +from aimet_common.quantsim_config.utils import get_path_for_per_tensor_config import numpy as np import pytest import tensorflow as tf @@ -1294,7 +1296,8 @@ def test_initialization_and_export_non_strict_symmetric(quant_scheme) -> None: tf.keras.layers.Flatten(), tf.keras.layers.Dense(2, activation='softmax', name="keras_model")]) - sim = QuantizationSimModel(model, quant_scheme=quant_scheme) + sim = QuantizationSimModel(model, quant_scheme=quant_scheme, + config_file=get_path_for_per_tensor_config()) # Enable input sim.compute_encodings(lambda m, _: m(np.random.randn(1, 32, 32, 4)), None)