Fix ONNX test_quantize unittest (#6716)
This commit is contained in:
2
.github/workflows/self-push.yml
vendored
2
.github/workflows/self-push.yml
vendored
@@ -45,7 +45,7 @@ jobs:
|
|||||||
source .env/bin/activate
|
source .env/bin/activate
|
||||||
pip install --upgrade pip
|
pip install --upgrade pip
|
||||||
pip install torch!=1.6.0
|
pip install torch!=1.6.0
|
||||||
pip install .[sklearn,testing]
|
pip install .[sklearn,testing,onnxruntime]
|
||||||
|
|
||||||
- name: Are GPUs recognized by our DL frameworks
|
- name: Are GPUs recognized by our DL frameworks
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
2
.github/workflows/self-scheduled.yml
vendored
2
.github/workflows/self-scheduled.yml
vendored
@@ -42,7 +42,7 @@ jobs:
|
|||||||
source .env/bin/activate
|
source .env/bin/activate
|
||||||
pip install --upgrade pip
|
pip install --upgrade pip
|
||||||
pip install torch!=1.6.0
|
pip install torch!=1.6.0
|
||||||
pip install .[sklearn,testing]
|
pip install .[sklearn,testing,onnxruntime]
|
||||||
|
|
||||||
- name: Are GPUs recognized by our DL frameworks
|
- name: Are GPUs recognized by our DL frameworks
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
5
setup.py
5
setup.py
@@ -74,16 +74,17 @@ extras["tf"] = [
|
|||||||
# "onnxconverter-common",
|
# "onnxconverter-common",
|
||||||
# "keras2onnx"
|
# "keras2onnx"
|
||||||
"onnxconverter-common @ git+git://github.com/microsoft/onnxconverter-common.git@f64ca15989b6dc95a1f3507ff6e4c395ba12dff5#egg=onnxconverter-common",
|
"onnxconverter-common @ git+git://github.com/microsoft/onnxconverter-common.git@f64ca15989b6dc95a1f3507ff6e4c395ba12dff5#egg=onnxconverter-common",
|
||||||
"keras2onnx @ git+git://github.com/onnx/keras-onnx.git@cbdc75cb950b16db7f0a67be96a278f8d2953b48#egg=keras2onnx"
|
"keras2onnx @ git+git://github.com/onnx/keras-onnx.git@cbdc75cb950b16db7f0a67be96a278f8d2953b48#egg=keras2onnx",
|
||||||
]
|
]
|
||||||
extras["tf-cpu"] = [
|
extras["tf-cpu"] = [
|
||||||
"tensorflow-cpu",
|
"tensorflow-cpu",
|
||||||
# "onnxconverter-common",
|
# "onnxconverter-common",
|
||||||
# "keras2onnx"
|
# "keras2onnx"
|
||||||
"onnxconverter-common @ git+git://github.com/microsoft/onnxconverter-common.git@f64ca15989b6dc95a1f3507ff6e4c395ba12dff5#egg=onnxconverter-common",
|
"onnxconverter-common @ git+git://github.com/microsoft/onnxconverter-common.git@f64ca15989b6dc95a1f3507ff6e4c395ba12dff5#egg=onnxconverter-common",
|
||||||
"keras2onnx @ git+git://github.com/onnx/keras-onnx.git@cbdc75cb950b16db7f0a67be96a278f8d2953b48#egg=keras2onnx"
|
"keras2onnx @ git+git://github.com/onnx/keras-onnx.git@cbdc75cb950b16db7f0a67be96a278f8d2953b48#egg=keras2onnx",
|
||||||
]
|
]
|
||||||
extras["torch"] = ["torch"]
|
extras["torch"] = ["torch"]
|
||||||
|
extras["onnxruntime"] = ["onnxruntime>=1.4.0", "onnxruntime-tools>=1.4.2"]
|
||||||
|
|
||||||
extras["serving"] = ["pydantic", "uvicorn", "fastapi", "starlette"]
|
extras["serving"] = ["pydantic", "uvicorn", "fastapi", "starlette"]
|
||||||
extras["all"] = extras["serving"] + ["tensorflow", "torch"]
|
extras["all"] = extras["serving"] + ["tensorflow", "torch"]
|
||||||
|
|||||||
@@ -364,32 +364,29 @@ def quantize(onnx_model_path: Path) -> Path:
|
|||||||
|
|
||||||
Returns: The Path generated for the quantized
|
Returns: The Path generated for the quantized
|
||||||
"""
|
"""
|
||||||
try:
|
import onnx
|
||||||
import onnx
|
from onnxruntime.quantization import QuantizationMode, quantize
|
||||||
from onnxruntime.quantization import QuantizationMode, quantize
|
|
||||||
|
|
||||||
onnx_model = onnx.load(onnx_model_path.as_posix())
|
onnx_model = onnx.load(onnx_model_path.as_posix())
|
||||||
|
|
||||||
# Discussed with @yufenglee from ONNX runtime, this will be address in the next release of onnxruntime
|
# Discussed with @yufenglee from ONNX runtime, this will be address in the next release of onnxruntime
|
||||||
print(
|
print(
|
||||||
"As of onnxruntime 1.4.0, models larger than 2GB will fail to quantize due to protobuf constraint.\n"
|
"As of onnxruntime 1.4.0, models larger than 2GB will fail to quantize due to protobuf constraint.\n"
|
||||||
"This limitation will be removed in the next release of onnxruntime."
|
"This limitation will be removed in the next release of onnxruntime."
|
||||||
)
|
)
|
||||||
|
|
||||||
quantized_model = quantize(
|
quantized_model = quantize(
|
||||||
model=onnx_model, quantization_mode=QuantizationMode.IntegerOps, force_fusions=True, symmetric_weight=True,
|
model=onnx_model, quantization_mode=QuantizationMode.IntegerOps, force_fusions=True, symmetric_weight=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Append "-quantized" at the end of the model's name
|
# Append "-quantized" at the end of the model's name
|
||||||
quantized_model_path = generate_identified_filename(onnx_model_path, "-quantized")
|
quantized_model_path = generate_identified_filename(onnx_model_path, "-quantized")
|
||||||
|
|
||||||
# Save model
|
# Save model
|
||||||
print(f"Quantized model has been written at {quantized_model_path}: \N{heavy check mark}")
|
print(f"Quantized model has been written at {quantized_model_path}: \N{heavy check mark}")
|
||||||
onnx.save_model(quantized_model, quantized_model_path.as_posix())
|
onnx.save_model(quantized_model, quantized_model_path.as_posix())
|
||||||
|
|
||||||
return quantized_model_path
|
return quantized_model_path
|
||||||
except Exception as ie:
|
|
||||||
print(f"Error while quantizing the model:\n{str(ie)}")
|
|
||||||
|
|
||||||
|
|
||||||
def verify(path: Path):
|
def verify(path: Path):
|
||||||
|
|||||||
Reference in New Issue
Block a user