diff --git a/src/winml/modelkit/commands/compile.py b/src/winml/modelkit/commands/compile.py index eb849d044..818a99771 100644 --- a/src/winml/modelkit/commands/compile.py +++ b/src/winml/modelkit/commands/compile.py @@ -26,6 +26,7 @@ from rich.console import Console from ..config.precision import _DEVICE_TO_PROVIDER, VALID_EPS +from ..onnx import is_compiled_onnx from ..utils.logging import configure_logging @@ -159,6 +160,12 @@ def compile( if model is None: raise click.UsageError("Missing option '--model' / '-m'.") + if is_compiled_onnx(model): + raise click.ClickException( + f"{model} is already a compiled EPContext model and cannot be re-compiled. " + "Run 'winml compile' on the original ONNX model." + ) + # Import compiler (late import to speed up CLI) from ..compiler import WinMLCompileConfig, compile_onnx diff --git a/src/winml/modelkit/commands/optimize.py b/src/winml/modelkit/commands/optimize.py index c1f704da7..7e410760a 100644 --- a/src/winml/modelkit/commands/optimize.py +++ b/src/winml/modelkit/commands/optimize.py @@ -30,7 +30,7 @@ import click from rich.console import Console -from ..onnx import load_onnx, save_onnx +from ..onnx import is_compiled_onnx, load_onnx, save_onnx if TYPE_CHECKING: @@ -382,6 +382,12 @@ def optimize( if model is None: raise click.UsageError("Missing option '--model' / '-m'.") + if is_compiled_onnx(model): + raise click.ClickException( + f"{model} is a compiled EPContext model and cannot be optimized. " + "Run 'winml optimize' on the original ONNX model before compilation." + ) + # Inherit debug mode from parent if ctx.obj and ctx.obj.get("debug"): verbose = True diff --git a/src/winml/modelkit/commands/quantize.py b/src/winml/modelkit/commands/quantize.py index 5437837eb..5dae75b4b 100644 --- a/src/winml/modelkit/commands/quantize.py +++ b/src/winml/modelkit/commands/quantize.py @@ -25,6 +25,7 @@ import click from rich.console import Console +from ..onnx import is_compiled_onnx from ..utils.logging import configure_logging @@ -141,6 +142,12 @@ def quantize( configure_logging(verbose=verbose) + if is_compiled_onnx(model): + raise click.ClickException( + f"{model} is a compiled EPContext model and cannot be quantized. " + "Run 'winml quantize' on the original ONNX model before compilation." + ) + # Import quantizer (late import to speed up CLI) from ..quant import WinMLQuantizationConfig, quantize_onnx