apple / apple/coremltools

ValueError: Number of outputs provided, 1, do not match the number of outputs detected in the model, 2.

Open
#1,561 2 comments 0 reactions 0 assignees View on GitHub
bug PyTorch (traced) triaged
Dominant language
Python
Stars
5.4k
Forks
850
Avg merge
4d 5h
Merged PRs (30d)
10

Description

```python
import numpy as np
import torch
from transformers import AutoTokenizer, AutoModel
import coremltools as ct

name = "sentence-transformers/all-mpnet-base-v2"
length = 384

sentence = 'This is an example sentence'

tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModel.from_pretrained(name, torchscript=True).eval()

encoded_input = tokenizer(sentence, padding=True, truncation=True, return_tensors='pt')

tuple_input = (encoded_input.input_ids,
encoded_input.attention_mask)

traced_model = torch.jit.trace(model, tuple_input)

shape = torch.Size([1, length])

model = ct.convert(traced_model,
inputs=[ct.TensorType(name="input_ids", shape=shape, dtype=np.int32),
ct.TensorType(name="attention_mask", shape=shape, dtype=np.int32)],
outputs=[ct.TensorType(name="embeddings")],
minimum_deployment_target=ct.target.iOS15,
compute_units=ct.ComputeUnit.CPU_ONLY)
```

```
Traceback (most recent call last):
File "convert.py", line 57, in
model = ct.convert(traced_model,
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/_converters_entry.py", line 426, in convert
mlmodel = mil_convert(
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/mil/converter.py", line 182, in mil_convert
return _mil_convert(model, convert_from, convert_to, ConverterRegistry, MLModel, compute_units, **kwargs)
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/mil/converter.py", line 209, in _mil_convert
proto, mil_program = mil_convert_to_proto(
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/mil/converter.py", line 272, in mil_convert_to_proto
prog = frontend_converter(model, **kwargs)
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/mil/converter.py", line 104, in __call__
return load(*args, **kwargs)
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/load.py", line 52, in load
return _perform_torch_convert(converter, debug)
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/load.py", line 91, in _perform_torch_convert
prog = converter.convert()
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/converter.py", line 263, in convert
convert_nodes(self.context, self.graph)
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/ops.py", line 89, in convert_nodes
add_op(context, node)
File "/tmp/.pyvenv/st-coreml/lib/python3.8/site-packages/coremltools/converters/mil/frontend/torch/ops.py", line 3788, in min
assert(len(inputs) == 1)
AssertionError
```

https://github.com/apple/coremltools/blob/973eae67f2f273a29e80a9b009987516a070a58b/coremltools/converters/mil/frontend/torch/ops.py#L3771-L3790

May be linked to the change in https://github.com/apple/coremltools/pull/1482.

`macOS 12.4` `coremltools=6.0b1` `torch=1.11`

Contributor guide

Open the contributing guide

Research direction

Start with the supplied conversion script and the referenced min implementation in coremltools/converters/mil/frontend/torch/ops.py around lines 3771-3790. Compare that code with the change in pull request 1482, then run the reproduction using the listed coremltools and torch versions. Done means the conversion no longer fails at this operation and has regression coverage for the reported model output handling.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, pytorch
Domain
devtools, machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.