tensorrt
tensorrt copied to clipboard
Converting BERT to TensorRT FP16 model added a lot of inputs named "unknown"
Versions:
- Tensorflow 2.2 (TensorRT 6, CUDA 10)
After pulling a transformer model, specifically albert-base-v2 from Huggingface:
albert = TFAlbertModel.from_pretrained('albert-base-v2')
I wanted to run TensorRT inference on the model, so, I tried to convert it using Tensorflow's API
params = tf.experimental.tensorrt.ConversionParams(
precision_mode="FP16",
maximum_cached_engines=128,
# 8GB workspace size to accomendate for big models
max_workspace_size_bytes=8000000000,
)
converter = tf.experimental.tensorrt.Converter(
input_saved_model_dir=input_model_path,
input_saved_model_tags=tag_constants.SERVING,
input_saved_model_signature_key="serving_default",
conversion_params=params)
converter.convert()
converter.build(input_fn=my_input_fn)
converter.save(output_model_path)
def my_input_fn():
# (Optional) Generate more TRT engines offline (same as the previous
# option), to avoid the cost of generating them during inference.
for model_input, _ in ds_test:
yield model_input[0], model_input[1], model_input[2]
However, the conversion is unsuccessful, with the following output:
Traceback (most recent call last):
File "/anaconda/envs/azureml_py36/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 1628, in _call_impl
args.append(kwargs.pop(compat.as_str(keyword)))
KeyError: 'unknown'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ryanli/code/tensorflow-lm-tensorrt/tensorflow_trt.py", line 126, in <module>
convert_saved_model_to_trt(INPUT_MODEL, TRT_MODEL_FP16, precision_mode="FP16")
File "/home/ryanli/code/tensorflow-lm-tensorrt/tensorflow_trt.py", line 53, in convert_saved_model_to_trt
converter.build(input_fn=my_input_fn)
File "/anaconda/envs/azureml_py36/lib/python3.6/site-packages/tensorflow/python/compiler/tensorrt/trt_convert.py", line 1174, in build
func(*map(ops.convert_to_tensor, inp))
File "/anaconda/envs/azureml_py36/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 1605, in __call__
return self._call_impl(args, kwargs)
File "/anaconda/envs/azureml_py36/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 1637, in _call_impl
list(set(self._arg_keywords) - set(specified_keywords))))
TypeError: Expected argument names ['mask_inputs', 'seg_inputs', 'token_inputs', 'unknown', 'unknown_0', 'unknown_1', 'unknown_2', 'unknown_3', 'unknown_4', 'unknown_5', 'unknown_6', 'unknown_7', 'unknown_8', 'unknown_9', 'unknown_10', 'unknown_11', 'unknown_12', 'unknown_13', 'unknown_14', 'unknown_15', 'unknown_16', 'unknown_17', 'unknown_18', 'unknown_19', 'unknown_20', 'unknown_21', 'unknown_22', 'unknown_23', 'unknown_24', 'unknown_25', 'unknown_26', 'unknown_27'] but got values for ['mask_inputs', 'seg_inputs', 'token_inputs']. Missing: ['unknown_6', 'unknown_17', 'unknown_22', 'unknown_9', 'unknown_2', 'unknown_12', 'unknown_15', 'unknown_3', 'unknown_21', 'unknown_10', 'unknown_1', 'unknown_7', 'unknown_5', 'unknown_13', 'unknown_19', 'unknown_4', 'unknown_0', 'unknown_24', 'unknown_16', 'unknown_11', 'unknown', 'unknown_25', 'unknown_8', 'unknown_18', 'unknown_23', 'unknown_26', 'unknown_14', 'unknown_20', 'unknown_27'].
So, somehow, the converted model suddenly is taking a ton of extra arguments called unknown. Anyone have any idea why?
A similar issue: https://github.com/tensorflow/serving/issues/1675
@sanjoy @bixia1 Can you PTAL? Thanks!
Any updates please?
Did you solve this problem? thx
I've encountered the same issue, any update on this problem? May I ask how did you solve the problem then? @statikkkkk