apple / coremltools

Core ML tools contain supporting tools for Core ML model conversion, editing, and validation.
https://coremltools.readme.io
BSD 3-Clause "New" or "Revised" License
4.38k stars 631 forks source link

RuntimeError: BlobWriter not loaded #2361

Closed komocode closed 5 days ago

komocode commented 6 days ago

Installed: coremltools-8.0 torch-2.4.0 torchvision-0.19.0 ultralytics-8.3.6

Running Sequoia 15.0.1

export.py:

from ultralytics import YOLO

model = YOLO("yolo11x.pt")

model.export(format="coreml")

Fresh virtual environment. Python 3.12.4

% python export.py                                                    
Ultralytics 8.3.6 🚀 Python-3.12.4 torch-2.4.0 CPU (Apple M1 Max)
YOLO11n summary (fused): 238 layers, 2,616,248 parameters, 0 gradients, 6.5 GFLOPs

PyTorch: starting from 'yolo11n.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 84, 8400) (5.4 MB)
Fail to import BlobReader from libmilstoragepython. No module named 'coremltools.libmilstoragepython'
Failed to load _MLModelProxy: No module named 'coremltools.libcoremlpython'
Fail to import BlobWriter from libmilstoragepython. No module named 'coremltools.libmilstoragepython'

CoreML: starting export with coremltools 8.0...
Converting PyTorch Frontend ==> MIL Ops: 100%|██████████████████████████████████████████████████████████████████████████▉| 791/792 [00:00<00:00, 9090.20 ops/s]
Running MIL frontend_pytorch pipeline: 100%|███████████████████████████████████████████████████████████████████████████████| 5/5 [00:00<00:00, 163.84 passes/s]
Running MIL default pipeline: 100%|██████████████████████████████████████████████████████████████████████████████████████| 88/88 [00:00<00:00, 107.31 passes/s]
Running MIL backend_mlprogram pipeline: 100%|████████████████████████████████████████████████████████████████████████████| 12/12 [00:00<00:00, 180.72 passes/s]
CoreML: export failure ❌ 4.0s: BlobWriter not loaded
Traceback (most recent call last):
  File "/Users/dcode/Downloads/yolo export/export.py", line 7, in <module>
    model.export(format="coreml")  # creates 'yolo11n.mlpackage'
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/ultralytics/engine/model.py", line 734, in export
    return Exporter(overrides=args, _callbacks=self.callbacks)(model=self.model)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/torch/utils/_contextlib.py", line 116, in decorate_context
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/ultralytics/engine/exporter.py", line 318, in __call__
    f[4], _ = self.export_coreml()
              ^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/ultralytics/engine/exporter.py", line 140, in outer_func
    raise e
  File "/Users/dcode/venv2/lib/python3.12/site-packages/ultralytics/engine/exporter.py", line 135, in outer_func
    f, model = inner_func(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/ultralytics/engine/exporter.py", line 639, in export_coreml
    ct_model = ct.convert(
               ^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/coremltools/converters/_converters_entry.py", line 635, in convert
    mlmodel = mil_convert(
              ^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/coremltools/converters/mil/converter.py", line 188, in mil_convert
    return _mil_convert(model, convert_from, convert_to, ConverterRegistry, MLModel, compute_units, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/coremltools/converters/mil/converter.py", line 212, in _mil_convert
    proto, mil_program = mil_convert_to_proto(
                         ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/coremltools/converters/mil/converter.py", line 307, in mil_convert_to_proto
    out = backend_converter(prog, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/coremltools/converters/mil/converter.py", line 130, in __call__
    return backend_load(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/coremltools/converters/mil/backend/mil/load.py", line 1070, in load
    mil_proto = mil_proto_exporter.export()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dcode/venv2/lib/python3.12/site-packages/coremltools/converters/mil/backend/mil/load.py", line 503, in export
    raise RuntimeError("BlobWriter not loaded")
RuntimeError: BlobWriter not loaded
TobyRoseman commented 5 days ago

This is caused because we don't support Python 3.12 yet.

I'm going to close this as a duplicate to #2129.