Установите tenorrt с настраиваемыми плагинами
Я могу установить желаемую версию TensorRT из официального руководства nvidia (https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#maclearn-net-repo-install)
sudo apt-get update && \
apt-get install -y libnvinfer7=7.1.3-1+cuda10.2 libnvonnxparsers7=7.1.3-1+cuda10.2 libnvparsers7=7.1.3-1+cuda10.2 libnvinfer-plugin7=7.1.3-1+cuda10.2 libnvinfer-dev=7.1.3-1+cuda10.2 libnvonnxparsers-dev=7.1.3-1+cuda10.2 libnvparsers-dev=7.1.3-1+cuda10.2 libnvinfer-plugin-dev=7.1.3-1+cuda10.2 python3-libnvinfer=7.1.3-1+cuda10.2 && \
sudo apt-mark hold libnvinfer7 libnvonnxparsers7 libnvparsers7 libnvinfer-plugin7 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev python3-libnvinfer
Но мне нужны специальные плагины. К счастью, я нашел нужный и добавил в папку плагин https://github.com/NVIDIA/TensorRT/tree/master/plugin и зарегистрировал его. Теперь я не понимаю, как собрать и установить tenorrt с добавленным плагином. В официальном репо на github https://github.com/NVIDIA/TensorRT есть инструкция, но в ней описаны шаги по созданию образа докера с помощью tensorrt.
Итак, вопрос в том, как собрать tenorrt с настраиваемым плагином и установить его на ubuntu?
2 ответа
Лучший способ установить плагин — следовать официальной документации репозитория tensorrt-plugin-generator. Вам просто нужно написать несколько функций класса, которые не могут быть сгенерированы автоматически. Остальная часть сценария, а также Makefile генерируется автоматически с помощью сценария Python и файла yaml.
Нет необходимости связывать библиотеки nvinfer_plugin. Это также лучший и самый быстрый способ создания плагина без повторной компиляции всей библиотеки nvinfer_plugin из репозитория TensorRT.
Вы можете включить библиотеку пользовательских плагинов (*.so), созданную Makefile, в trtexec с помощью команды --plugin.
Пользовательский плагин довольно легко «установить», если вы его зарегистрировали. Итак, шаги следующие:
Установить тензорРТ
sudo apt-get update && \ apt-get install -y libnvinfer7=7.1.3-1+cuda10.2 libnvonnxparsers7=7.1.3-1+cuda10.2 libnvparsers7=7.1.3-1+cuda10.2 libnvinfer-plugin7=7.1.3-1+cuda10.2 libnvinfer-dev=7.1.3-1+cuda10.2 libnvonnxparsers-dev=7.1.3-1+cuda10.2 libnvparsers-dev=7.1.3-1+cuda10.2 libnvinfer-plugin-dev=7.1.3-1+cuda10.2 python3-libnvinfer=7.1.3-1+cuda10.2 && \ sudo apt-mark hold libnvinfer7 libnvonnxparsers7 libnvparsers7 libnvinfer-plugin7 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev python3-libnvinfer
Примечание. Я установил v.7.1.3.1 tensorrt и cuda 10.2, если вы хотите установить другую версию, измените ее, но будьте осторожны, версия tensorRT и cuda совпадают, это означает, что не для всех версий tensorRT есть версия cuda.
Соберите библиотеку libnvinfer_plugin.so.xxx, как описано на странице https://github.com/NVIDIA/TensorRT .
Примечание: xxx — это версия библиотеки, в моем случае — 7.1.3.
Удалите существующие библиотеки в /usr/lib/x86_64-linux-gnu, если у вас архитектура x86, или в /usr/lib/aarch64-linux-gnu для arm64:libnvinfer_plugin.so.7.1.3libnvinfer_plugin.so.7libnvinfer_plugin.so
Опять же, имена файлов зависят от версии tensorRT.
Скопируйте библиотеку libnvinfer_plugin.so.7.1.3 в папку /usr/lib/x86_64-linux-gnu если у вас архитектура x86 или /usr/lib/aarch64-linux-gnu для arm64
Сделать симлинки для библиотек:
sudo ln -s libnvinfer_plugin.so.7 sudo ln -s libnvinfer_plugin.so.7 libnvinfer_plugin.so