Установите 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.

Пользовательский плагин довольно легко «установить», если вы его зарегистрировали. Итак, шаги следующие:

  1. Установить тензорРТ

            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.

  2. Соберите библиотеку libnvinfer_plugin.so.xxx, как описано на странице https://github.com/NVIDIA/TensorRT .

    Примечание: xxx — это версия библиотеки, в моем случае — 7.1.3.

  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.

  4. Скопируйте библиотеку libnvinfer_plugin.so.7.1.3 в папку /usr/lib/x86_64-linux-gnu если у вас архитектура x86 или /usr/lib/aarch64-linux-gnu для arm64

  5. Сделать симлинки для библиотек:

            sudo ln -s  libnvinfer_plugin.so.7 
    sudo ln -s libnvinfer_plugin.so.7 libnvinfer_plugin.so
    
Другие вопросы по тегам