Hi! I found out that this is common unresolved problem.
So, I need to convert transformers’ DistilBERT to TensorFlows SavedModel format. I've converted it, but I can
t inference it.
Conversion code
import tensorflow as tf
from transformers import TFAutoModel, AutoTokenizer
dir = "distilbert_savedmodel"
model = TFAutoModel.from_pretrained('distilbert-base-uncased')
model.save(dir)
Inference code
tokenizer = AutoTokenizer.from_pretrained('distilbert-base-uncased')
encoded = tokenizer.encode('Hello, world!', add_special_tokens=True, return_tensors="tf")
model = tf.keras.models.load_model(dir)
model(encoded)
Error
ValueError: Could not find matching function to call loaded from the SavedModel. Got:
Positional arguments (1 total):
* Tensor("inputs:0", shape=(1, 6), dtype=int32)
Keyword arguments: {'training': False}
Expected these arguments to match one of the following 4 option(s):
Option 1:
Positional arguments (1 total):
* {'input_ids': TensorSpec(shape=(None, 5), dtype=tf.int32, name='input_ids')}
Keyword arguments: {'training': False}
Option 2:
Positional arguments (1 total):
* {'input_ids': TensorSpec(shape=(None, 5), dtype=tf.int32, name='input_ids')}
Keyword arguments: {'training': True}
Option 3:
Positional arguments (1 total):
* {'input_ids': TensorSpec(shape=(None, 5), dtype=tf.int32, name='inputs/input_ids')}
Keyword arguments: {'training': True}
Option 4:
Positional arguments (1 total):
* {'input_ids': TensorSpec(shape=(None, 5), dtype=tf.int32, name='inputs/input_ids')}
Keyword arguments: {'training': False}
Related issues
huggingface/transformers#4004
huggingface/transformers#2135
huggingface/transformers#2021
Please, help me!