Skip to content

Commit 2c4b6ea

Browse files
committed
refactor: reject unsupported palettization combos in kmeans CoreML export
Wire validate_coreml_palettization_compatibility into prepare_for_mil_export so finalize(backend=CoreML) raises immediately for a combo it can't fuse into a single compatible op chain, rather than emitting an invalid model or crashing deep inside ct.convert.
1 parent 69d9a53 commit 2c4b6ea

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

src/coreai_opt/palettization/kmeans/_prepare_for_export.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,14 @@
1414
from coreai_opt._utils.export_utils import (
1515
clear_parametrization_original as _clear_parametrization_original,
1616
prepare_mmap_dir as _prepare_mmap_dir,
17-
validate_coreml_compatibility,
17+
validate_coreml_palettization_compatibility,
1818
)
1919
from coreai_opt._utils.import_utils import lazy_import_coreai_torch
2020
from coreai_opt._utils.metadata_utils import CompressionType, MILCompressionMetadata
2121
from coreai_opt._utils.torch_utils import (
2222
mmap_module_state_dict as _mmap_module_state_dict,
2323
)
2424
from coreai_opt.common import ExportBackend
25-
from coreai_opt.config.spec import CompressionTargetTensor
2625
from coreai_opt.palettization.spec.fake_palettize import (
2726
_FakePalettizeImplBase,
2827
)
@@ -430,12 +429,16 @@ def prepare_for_mil_export(model: nn.Module) -> nn.Module:
430429
continue
431430
for param_name, parametrizations in module.parametrizations.items():
432431
_, fake_palett_mod = _find_fake_palett_parametrization(parametrizations)
433-
if fake_palett_mod is not None and fake_palett_mod.lut_qspec is not None:
434-
validate_coreml_compatibility(
435-
CompressionTargetTensor.LUT,
436-
fake_palett_mod.lut_qspec.dtype,
437-
f"LUT of parameter '{param_name}' of module '{module_name}'",
438-
)
432+
if fake_palett_mod is None:
433+
continue
434+
435+
context = f"parameter '{param_name}' of module '{module_name}'"
436+
validate_coreml_palettization_compatibility(
437+
fake_palett_mod.cluster_dim,
438+
fake_palett_mod.lut_qspec,
439+
fake_palett_mod.enable_per_channel_scale,
440+
context,
441+
)
439442

440443
_process_weight_palettization(model, backend=ExportBackend.CoreML)
441444

0 commit comments

Comments
 (0)