Add: test code for CoreMLExecutionProvider on a trial basis
Currently ONNXRuntime's CoreML support is not very good, and on my environment, I get errors like “coreml_execution_provider.cc:192 operator() Input (/sdp/flows.3/GatherND_2_output_0) has a dynamic shape ({-1,-1}) but the runtime shape ({0,10}) has zero elements. This is not supported by the CoreML EP.” and inference fails.
I hope this will be fixed in a future version of ONNXRuntime, and leave the test code as it is.
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -5,6 +5,8 @@ dist/
|
|||||||
.coverage*
|
.coverage*
|
||||||
.ipynb_checkpoints/
|
.ipynb_checkpoints/
|
||||||
.ruff_cache/
|
.ruff_cache/
|
||||||
|
.DS_Store
|
||||||
|
._*
|
||||||
|
|
||||||
/*.yml
|
/*.yml
|
||||||
!/default_config.yml
|
!/default_config.yml
|
||||||
|
|||||||
@@ -109,6 +109,8 @@ test = "pytest -s tests/test_main.py::test_synthesize_onnx_cpu"
|
|||||||
test-cuda = "pytest -s tests/test_main.py::test_synthesize_onnx_cuda"
|
test-cuda = "pytest -s tests/test_main.py::test_synthesize_onnx_cuda"
|
||||||
# Usage: `hatch run test-onnx:test-directml`
|
# Usage: `hatch run test-onnx:test-directml`
|
||||||
test-directml = "pytest -s tests/test_main.py::test_synthesize_onnx_directml"
|
test-directml = "pytest -s tests/test_main.py::test_synthesize_onnx_directml"
|
||||||
|
# Usage: `hatch run test-onnx:test-coreml`
|
||||||
|
test-coreml = "pytest -s tests/test_main.py::test_synthesize_onnx_coreml"
|
||||||
# Usage: `hatch run test-onnx:coverage`
|
# Usage: `hatch run test-onnx:coverage`
|
||||||
test-cov = "coverage run -m pytest -s tests/test_main.py::test_synthesize_onnx_cpu"
|
test-cov = "coverage run -m pytest -s tests/test_main.py::test_synthesize_onnx_cpu"
|
||||||
# Usage: `hatch run test-onnx:cov-report`
|
# Usage: `hatch run test-onnx:cov-report`
|
||||||
|
|||||||
@@ -5,10 +5,12 @@ def torch_device_to_onnx_providers(
|
|||||||
device: str,
|
device: str,
|
||||||
) -> Sequence[Union[str, tuple[str, dict[str, Any]]]]:
|
) -> Sequence[Union[str, tuple[str, dict[str, Any]]]]:
|
||||||
if device.startswith("cuda"):
|
if device.startswith("cuda"):
|
||||||
|
return [
|
||||||
# cudnn_conv_algo_search を DEFAULT にすると推論速度が大幅に向上する
|
# cudnn_conv_algo_search を DEFAULT にすると推論速度が大幅に向上する
|
||||||
# ref: https://medium.com/neuml/debug-onnx-gpu-performance-c9290fe07459
|
# ref: https://medium.com/neuml/debug-onnx-gpu-performance-c9290fe07459
|
||||||
return [
|
|
||||||
("CUDAExecutionProvider", {"cudnn_conv_algo_search": "DEFAULT"}),
|
("CUDAExecutionProvider", {"cudnn_conv_algo_search": "DEFAULT"}),
|
||||||
|
# CUDA が利用できない場合、可能であれば DirectML を利用する
|
||||||
|
("DmlExecutionProvider", {"device_id": 0}),
|
||||||
("CPUExecutionProvider", {}),
|
("CPUExecutionProvider", {}),
|
||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -125,3 +125,12 @@ def test_synthesize_onnx_directml():
|
|||||||
("DmlExecutionProvider", {"device_id": 0}),
|
("DmlExecutionProvider", {"device_id": 0}),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_synthesize_onnx_coreml():
|
||||||
|
synthesize(
|
||||||
|
inference_type="onnx",
|
||||||
|
onnx_providers=[
|
||||||
|
("CoreMLExecutionProvider", {}),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user