Invalid mlmodel from SKLearn KN Neighbors conversion
- Dominant language
- Python
- Stars
- 5.4k
- Forks
- 850
- Avg merge
- 4d 5h
- Merged PRs (30d)
- 10
Description
The `*.mlmodel` produced by converting from a `KNeighborsClassifier` is invalid. I encountered it with a custom data set but it's reproducible with SKLearn's Wine Dataset. I encountered the issue when running the script in Google Colab.
## Trace
```
coremlc: warning: unable to read document: /Users/tristian/Downloads/KNN.mlmodel
detail: validator error: Pipeline: the input '__feature_vector__' of model 'CoreML.Specification.ModelDescription' does not match the type previously specified by the pipeline input or the output of a previous model. For the second case, make sure the input and previous model's output has the matching name and shapes.
coremlc: error: Error reading protobuf spec. validator error: Pipeline: the input '__feature_vector__' of model 'CoreML.Specification.ModelDescription' does not match the type previously specified by the pipeline input or the output of a previous model. For the second case, make sure the input and previous model's output has the matching name and shapes.
```
## To Reproduce
Setup the env:
```bash
pyenv install 3.6.9
pyenv global 3.6.9
mkdir coremltools-issue && cd coremltools-issue
pip install virtualenv
virtualenv venv
source ./venv/bin/activate
# Here I downloaded and built LLVM 10.0.1 prior to the install
export LLVM_CONFIG=../llvm-project-10.0.1/build/bin/llvm-config
pip install numpy scipy pandas
unset LLVM_CONFIG
pip install scikit-learn==0.19.2 keras==2.2.4 coremltools==4.0
```
Then after running the script below the `KNN.mlmodel` won't be valid when opened with Xcode 12.1
```python
import sys
import pandas as pd
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import coremltools
from coremltools.converters import sklearn
print("Python", sys.version)
print("Pandas", pd.__version__)
print("Numpy", np.__version__)
print("CoreMLTools", coremltools.__version__)
"""# Create KN-Neighbors Model"""
wine = datasets.load_wine()
X_train, X_test, y_train, y_test = train_test_split(wine.data, wine.target, test_size=0.3)
print("X Features", wine.data.shape, wine.feature_names)
print("Y Features", wine.target.shape, wine.target_names)
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
"""## Convert Model"""
coreml_model = sklearn.convert(knn, wine.feature_names, "class")
coreml_model.save("KNN.mlmodel")
```
This is the base64 encoded `KNN.mlmodel`:
Base64 Data
CAESiAMKDQoHYWxjb2hvbBoCEgAKEAoKbWFsaWNfYWNpZBoCEgAKCQoDYXNoGgISAAoXChFhbGNhbGluaXR5X29mX2FzaBoCEgAKDwoJbWFnbmVzaXVtGgISAAoTCg10b3RhbF9waGVub2xzGgISAAoQCgpmbGF2YW5vaWRzGgISAAoaChRub25mbGF2YW5vaWRfcGhlbm9scxoCEgAKFQoPcHJvYW50aG9jeWFuaW5zGgISAAoVCg9jb2xvcl9pbnRlbnNpdHkaAhIACgkKA2h1ZRoCEgAKIgocb2QyODAvb2QzMTVfb2ZfZGlsdXRlZF93aW5lcxoCEgAKDQoHcHJvbGluZRoCEgBSCwoFY2xhc3MaAgoAWgVjbGFzc6IGbKIGOwojY29tLmdpdGh1Yi5hcHBsZS5jb3JlbWx0b29scy5zb3VyY2USFHNjaWtpdC1sZWFybj09MC4xOS4yogYrCiRjb20uZ2l0aHViLmFwcGxlLmNvcmVtbHRvb2xzLnZlcnNpb24SAzQuMMIMmzwKmDwKmgQIARKmAgoNCgdhbGNvaG9sGgISAAoQCgptYWxpY19hY2lkGgISAAoJCgNhc2gaAhIAChcKEWFsY2FsaW5pdHlfb2ZfYXNoGgISAAoPCgltYWduZXNpdW0aAhIAChMKDXRvdGFsX3BoZW5vbHMaAhIAChAKCmZsYXZhbm9pZHMaAhIAChoKFG5vbmZsYXZhbm9pZF9waGVub2xzGgISAAoVCg9wcm9hbnRob2N5YW5pbnMaAhIAChUKD2NvbG9yX2ludGVuc2l0eRoCEgAKCQoDaHVlGgISAAoiChxvZDI4MC9vZDMxNV9vZl9kaWx1dGVkX3dpbmVzGgISAAoNCgdwcm9saW5lGgISAFIfChJfX2ZlYXR1cmVfdmVjdG9yX18aCSoHCgENEMCABNIl6wEKCwoHYWxjb2hvbBABCg4KCm1hbGljX2FjaWQQAQoHCgNhc2gQAQoVChFhbGNhbGluaXR5X29mX2FzaBABCg0KCW1hZ25lc2l1bRABChEKDXRvdGFsX3BoZW5vbHMQAQoOCgpmbGF2YW5vaWRzEAEKGAoUbm9uZmxhdmFub2lkX3BoZW5vbHMQAQoTCg9wcm9hbnRob2N5YW5pbnMQAQoTCg9jb2xvcl9pbnRlbnNpdHkQAQoHCgNodWUQAQog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
Decode like so (on macOS) after copying to clipboard:
```bash
pbpaste | base64 -d -i - > KNN.mlmodel
```
## System environment (please complete the following information):
- CoreMLTools: 4.0
- macOS version: 10.15.7 Catalina
- XCode version: 12.1
- How you install python (anaconda, virtualenv, system):
- I installed python 3.6.9 using [pyenv](https://github.com/pyenv/pyenv)
Contributor guide
Research direction
Start by running the supplied Python reproduction with scikit-learn 0.19.2 and coremltools 4.0, then validate KNN.mlmodel with coremlc or Xcode 12.1. Trace sklearn.convert and the generated pipeline around the __feature_vector__ input to identify the type mismatch; done means the converted model passes validation and opens successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, scikit-learn
- Domain
- machine-learning
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100