ValueError: Number of outputs provided, 1, do not match the number of outputs detected in the model, 2.
- 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
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