TrojanXu/GTC_S21736_materials

INVALID_ARGUMENT: getPluginCreator could not find plugin CustomEmbLayerNormPluginDynamic version 1

Opened this issue · 5 comments

Hi @TrojanXu, am trying to deploy the BERT TensorRT model with Triton following your steps but getting the below error:

Previously I built and copied the plugins to /opt/tritonserver
export LD_PRELOAD=/opt/tritonserver/libbert_plugins.so:/opt/tritontserver/libcommon.so

then I ran the triton server
sudo docker run --gpus all --rm --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p443:443 -p8080:8080 -v /home/triton_server/docs/examples/model_repository/:/models nvcr.io/nvidia/tritonserver:20.03.1-py3 tritonserver --model-repository=/models

Error:
E1009 01:05:16.971516 1 logging.cc:43] INVALID_ARGUMENT: getPluginCreator could not find plugin CustomEmbLayerNormPluginDynamic version 1 E1009 01:05:16.971577 1 logging.cc:43] safeDeserializationUtils.cpp (293) - Serialization Error in load: 0 (Cannot deserialize plugin since corresponding IPluginCreator not found in Plugin Registry) E1009 01:05:16.971903 1 logging.cc:43] INVALID_STATE: std::exception E1009 01:05:16.971987 1 logging.cc:43] INVALID_CONFIG: Deserialize the cuda engine failed. I1009 01:05:16.972723 1 onnx_backend.cc:203] Creating instance densenet_onnx_0_gpu1 on GPU 1 (7.5) using model.onnx E1009 01:05:17.004133 1 model_repository_manager.cc:891] failed to load 'bert_trt' version 1: Internal: unable to create TensorRT engine

Some recommendations on how to fix this issue or if there is a recent version of the SW that simplified the deployment?

Versions used:
TensorRT: release 6.0
Triton docker image: tritonserver:20.03.1-py3

Hi Vilmara, how you pass LD_PRELOAD to tritonserver inside the container?

Hi @TrojanXu, I have tried several methods without success:

Method 1: -e LD_PRELOAD=/opt/tritonserver/libbert_plugins.so:/opt/tritontserver/libcommon.so
sudo docker run --gpus all --rm --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p443:443 -p8080:8080 -v /home/triton_server/docs/examples/model_repository/:/models -e LD_PRELOAD=/opt/tritonserver/libbert_plugins.so:/opt/tritontserver/libcommon.so nvcr.io/nvidia/tritonserver:20.03.1-py3 tritonserver --model-repository=/models

Error:

ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
NOTE: Legacy NVIDIA Driver detected.  Compatibility mode ENABLED.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritonserver/libbert_plugins.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/opt/tritontserver/libcommon.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
E1009 15:18:10.005124 1 logging.cc:43] INVALID_ARGUMENT: getPluginCreator could not find plugin CustomEmbLayerNormPluginDynamic version 1
E1009 15:18:10.005213 1 logging.cc:43] safeDeserializationUtils.cpp (293) - Serialization Error in load: 0 (Cannot deserialize plugin since corresponding IPluginCreator not found in Plugin Registry)
E1009 15:18:10.005535 1 logging.cc:43] INVALID_STATE: std::exception
E1009 15:18:10.005628 1 logging.cc:43] INVALID_CONFIG: Deserialize the cuda engine failed.
E1009 15:18:10.140418 1 model_repository_manager.cc:891] failed to load 'bert_trt' version 1: Internal: unable to create TensorRT engine

Method 2: once inside the docker export LD_PRELOAD=/opt/tritonserver/libbert_plugins.so:/opt/tritontserver/libcommon.so
sudo docker run --gpus all --rm --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p443:443 -p8080:8080 -v /home/triton_server/docs/examples/model_repository/:/models nvcr.io/nvidia/tritonserver:20.03.1-py3

method 2 does nothing just starts the docker image and exits immediately without errors:

Triton Inference Server

NVIDIA Release 20.03.1 (build 12830698)

Copyright (c) 2018-2020, NVIDIA CORPORATION.  All rights reserved.

Various files include modifications (c) NVIDIA CORPORATION.  All rights reserved.
NVIDIA modifications are covered by the license terms that apply to the underlying
project or file.

NOTE: Legacy NVIDIA Driver detected.  Compatibility mode ENABLED.

home@server:~$

Further questions:
1- Do you recommend to try with the latest SW version, if so, which one?
2- What docker image should I use?, I see in your Triton presentation you used nvcr.io/nvidia/tensorrtserver instead of nvcr.io/nvidia/tritonserver

Yes, my question is how you put file libbert_plugins.so to /opt/tritonserver/ inside the docker container? Have you modified nvcr.io/nvidia/tensorrtserver image? From the command you provided, I only see you were using unmodified image nvcr.io/nvidia/tritonserver:20.03.1-py3 from ngc. But have you put libbert_plugins.so itself into the docker image?

hi @TrojanXu, what is the best way to put the files libbert_plugins.so and libcommon.so to /opt/tritonserver/ inside the docker container?. I modified the nvcr.io/nvidia/tensorrtserver image editing the Dockerfile as shown below but I got errors rebuilding the image:

Dockerfile addition:

RUN cp /opt/tensorrtserver/libbert_plugins.so /opt/tensorrtserver/
RUN cp /opt/tensorrtserver/libcommon.so /opt/tensorrtserver/
ENV LD_PRELOAD /opt/tensorrtserver/libbert_plugins.so:/opt/tensorrtserver/libcommon.so

Error when building the image:

cp: cannot stat '/opt/tensorrtserver/libbert_plugins.so': No such file or directory
The command '/bin/sh -c cp /opt/tensorrtserver/libbert_plugins.so /opt/tensorrtserver/' returned a non-zero code: 1

One best way is to launch this docker container interactively, and pass lib directory into the container via '-v' option. Actually this the way described in the method 2 you mentioned. But you need to add some additional flags, the full cmd should be,
sudo docker run --gpus all --rm -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p443:443 -p8080:8080 -v /home/triton_server/docs/examples/model_repository/:/models -v /path/to/your/libs/:/path/inside/container nvcr.io/nvidia/tritonserver:20.03.1-py3 bash
Then you can launch tritonserver manually inside the container by,
LD_PRELOAD=/path/inside/container/libxxx.so trtserver tritonserver --model-repository=/models