Jetson running Docker with DeepStream 6.0 and Triton Server

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU)
Jetson
• DeepStream Version
6.0
• JetPack Version (valid for Jetson only)
4.6
• TensorRT Version
8.0.1.6-1+cuda10.2
• Issue Type( questions, new requirements, bugs)
Question / Bug
• How to reproduce the issue? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)

  1. Download and flash sd-card with JetPack 4.6, configure system basics.
  2. Pull tag for docker: docker pull nvcr.io/nvidia/deepstream-l4t:6.0-triton
  3. Get into the docker container with this command
sudo docker run -it --rm --net=host --runtime nvidia  -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream-6.0 -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/deepstream-l4t:6.0-triton
  1. Run application example, see output below.

• Description

I have been developing applications with dGPU x86-64 with DeepStream 6.0 EA and Triton Server inside a Docker container.

I’m having many troubles running the applications in the Jetson Nano, with Nvidia Docker DeepStream 6.0 + Triton Server. I would like to use the same python applications running on dGPU on the Jetson. Running PythonApps, can’t find nvinferserver plugins, streammux, etc.

So, I went to the deepstream-app C++ basic example. And it can’t find nvstreammux.

I noticed similar issues with 6.0 EA containers for Jetson. On x86-64 dGPU everything works fine.

What error I may have done? Step missed?
Why I can’t find nvstreammux or nvinferserver?
How do I check that Triton server is installed and reachable by DeepStream?

Things I’ve tried:
rm -rf gst cache stuff
check gst inspect: plugins are missing, blacklisted.

Also, in this container which has Triton tag, I don’t see any evidence that it is actually installed.
Check /opt for tritonserver: missing!

• Outputs

root@63c4c44f4010:/opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app-triton# deepstream-app -c source1_primary_detector_nano.txt 
0:00:00.000136879    81     0x22b29e00 INFO                GST_INIT gst.c:586:init_pre: Initializing GStreamer Core Library version 1.14.5
0:00:00.000225422    81     0x22b29e00 INFO                GST_INIT gst.c:587:init_pre: Using library installed in /usr/lib/aarch64-linux-gnu
0:00:00.000267246    81     0x22b29e00 INFO                GST_INIT gst.c:607:init_pre: Linux 63c4c44f4010 4.9.253-tegra #1 SMP PREEMPT Mon Jul 26 12:13:06 PDT 2021 aarch64
0:00:00.000899136    81     0x22b29e00 INFO                GST_INIT gstmessage.c:127:_priv_gst_message_initialize: init messages
0:00:00.002041559    81     0x22b29e00 INFO                GST_INIT gstcontext.c:84:_priv_gst_context_initialize: init contexts
0:00:00.002474382    81     0x22b29e00 INFO      GST_PLUGIN_LOADING gstplugin.c:317:_priv_gst_plugin_initialize: registering 0 static plugins
0:00:00.002736471    81     0x22b29e00 INFO      GST_PLUGIN_LOADING gstplugin.c:225:gst_plugin_register_static: registered static plugin "staticelements"
0:00:00.002780795    81     0x22b29e00 INFO      GST_PLUGIN_LOADING gstplugin.c:227:gst_plugin_register_static: added static plugin "staticelements", result: 1
0:00:00.002850276    81     0x22b29e00 INFO            GST_REGISTRY gstregistry.c:1727:ensure_current_registry: reading registry cache: /root/.cache/gstreamer-1.0/registry.aarch64.bin
0:00:00.045395809    81     0x22b29e00 INFO            GST_REGISTRY gstregistrybinary.c:621:priv_gst_registry_binary_read_cache: loaded /root/.cache/gstreamer-1.0/registry.aarch64.bin in 0.042467 seconds
0:00:00.045576647    81     0x22b29e00 INFO            GST_REGISTRY gstregistry.c:1583:scan_and_update_registry: Validating plugins from registry cache: /root/.cache/gstreamer-1.0/registry.aarch64.bin
0:00:00.052244929    81     0x22b29e00 INFO            GST_REGISTRY gstregistry.c:1685:scan_and_update_registry: Registry cache has not changed
0:00:00.052294149    81     0x22b29e00 INFO            GST_REGISTRY gstregistry.c:1762:ensure_current_registry: registry reading and updating done, result = 1
0:00:00.052330296    81     0x22b29e00 INFO                GST_INIT gst.c:807:init_post: GLib runtime version: 2.56.4
0:00:00.052353265    81     0x22b29e00 INFO                GST_INIT gst.c:809:init_post: GLib headers version: 2.56.4
0:00:00.052369203    81     0x22b29e00 INFO                GST_INIT gst.c:810:init_post: initialized GStreamer successfully
0:00:00.053548762    81     0x22b29e00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "pipeline" named "pipeline"
0:00:00.053796268    81     0x22b29e00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "bin" named "multi_src_bin"
0:00:00.053877572    81     0x22b29e00 WARN     GST_ELEMENT_FACTORY gstelementfactory.c:456:gst_element_factory_make: no such element factory "nvstreammux"!
** ERROR: <create_multi_source_bin:1423>: Failed to create element 'src_bin_muxer'
** ERROR: <create_multi_source_bin:1516>: create_multi_source_bin failed
** ERROR: <create_pipeline:1323>: create_pipeline failed
** ERROR: <main:639>: Failed to create pipeline
Quitting
0:00:00.154257697    81     0x22b29e00 INFO              GST_STATES gstelement.c:2676:gst_element_continue_state:<pipeline> completed state change to NULL
0:00:01.054291604    81     0x22b29e00 INFO         GST_REFCOUNTING gstelement.c:3251:gst_element_dispose:<pipeline> 0x22d5e110 dispose
0:00:01.054462285    81     0x22b29e00 INFO         GST_REFCOUNTING gstelement.c:3297:gst_element_dispose:<pipeline> 0x22d5e110 parent class dispose
0:00:01.054666040    81     0x22b29e00 INFO         GST_REFCOUNTING gstelement.c:3328:gst_element_finalize:<pipeline> 0x22d5e110 finalize
0:00:01.054889222    81     0x22b29e00 INFO         GST_REFCOUNTING gstelement.c:3334:gst_element_finalize:<pipeline> 0x22d5e110 finalize parent
App run failed
0:00:01.055415693    81     0x22b29e00 INFO                GST_INIT gst.c:1083:gst_deinit: deinitializing GStreamer
0:00:01.069807021    81     0x22b29e00 INFO                GST_INIT gst.c:1231:gst_deinit: deinitialized GStreamer

Infer server libs

# gst-inspect-1.0 libnvdsgst_inferserver.so
Plugin Details:
  Name                     libnvdsgst_inferserver.so
  Description              Plugin for blacklisted file
  Filename                 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferserver.so
  Version                  0.0.0
  License                  BLACKLIST
  Source module            BLACKLIST
  Binary package           BLACKLIST
  Origin URL               BLACKLIST
# ls /opt/nvidia/deepstream/deepstream-6.0/lib/                  
cvcore_libs                  libhiredis_ssl.a           libnvds_azure_edge_proto.so            libnvds_infer_server.so       libnvds_msgconv.so.1.0.0         libnvds_utils.so
gst-plugins                  libhiredis_ssl.so          libnvds_azure_proto.so                 libnvds_infercustomparser.so  libnvds_msgconv_audio.so         libnvdsgst_helper.so
libcustom_audioimpl.so       libhiredis_ssl.so.1.0.0    libnvds_batch_jpegenc.so               libnvds_inferlogger.so        libnvds_msgconv_audio.so.1.0.0   libnvdsgst_inferbase.so
libcustom_videoimpl.so       libiothub_client.so        libnvds_csvparser.so                   libnvds_inferutils.so         libnvds_nvmultiobjecttracker.so  libnvdsgst_meta.so
libhiredis.a                 libiothub_client.so.1      libnvds_custom_sequence_preprocess.so  libnvds_kafka_proto.so        libnvds_nvtxhelper.so            libnvdsgst_smartrecord.so
libhiredis.so                libnvbufsurface.so         libnvds_dewarper.so                    libnvds_logger.so             libnvds_opticalflow_dgpu.so      libnvdsgst_tensor.so
libhiredis.so.1.0.0          libnvbufsurftransform.so   libnvds_dsanalytics.so                 libnvds_meta.so               libnvds_opticalflow_jetson.so    libtritonserver.so
libhiredis.so.1.0.1-dev      libnvds_amqp_proto.so      libnvds_infer.so                       libnvds_msgbroker.so          libnvds_osd.so                   triton_backends
libhiredis.so.1.0.1-dev-ssl  libnvds_audiotransform.so  libnvds_infer_custom_parser_audio.so   libnvds_msgconv.so            libnvds_redis_proto.so

Hi! Please run ldd on a few libs and see if there are any missing dependencies:
ldd /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libnvdsgst_multistream.so
ldd /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libnvdsgst_inferserver.so

Hi @zhliunycm2, thanks for the feedback!

root@fc9aa8838b02:/opt/nvidia/deepstream/# ldd /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libnvdsgst_multistream.so
	linux-vdso.so.1 (0x0000007f80c96000)
	/usr/lib/aarch64-linux-gnu/libgomp.so.1 (0x0000007f80b84000)
	libnvbufsurface.so.1.0.0 => /usr/lib/aarch64-linux-gnu/tegra/libnvbufsurface.so.1.0.0 (0x0000007f80adf000)
	libnvdsgst_helper.so => /opt/nvidia/deepstream/deepstream-6.0/lib/libnvdsgst_helper.so (0x0000007f80ac8000)
	libnvdsbufferpool.so.1.0.0 => /usr/lib/aarch64-linux-gnu/tegra/libnvdsbufferpool.so.1.0.0 (0x0000007f80ab3000)
	libnvds_meta.so => /opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_meta.so (0x0000007f80a9c000)
	libnvdsgst_meta.so => /opt/nvidia/deepstream/deepstream-6.0/lib/libnvdsgst_meta.so (0x0000007f80a87000)
	libnvbufsurftransform.so.1.0.0 => /usr/lib/aarch64-linux-gnu/tegra/libnvbufsurftransform.so.1.0.0 (0x0000007f7f344000)
	libgstreamer-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 (0x0000007f7f214000)
	libglib-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000007f7f105000)
	libgobject-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0 (0x0000007f7f0a8000)
	libgstvideo-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstvideo-1.0.so.0 (0x0000007f7f012000)
	libgstaudio-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstaudio-1.0.so.0 (0x0000007f7ef9e000)
	libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007f7ee0a000)
	libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007f7edf5000)
	libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f7edc9000)
	librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000007f7edb2000)
	libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f7ec59000)
	/lib/ld-linux-aarch64.so.1 (0x0000007f80c6a000)
	libnvrm.so => /usr/lib/aarch64-linux-gnu/tegra/libnvrm.so (0x0000007f7ec16000)
	libEGL.so.1 => /usr/lib/aarch64-linux-gnu/libEGL.so.1 (0x0000007f7ebf5000)
	libnvos.so => /usr/lib/aarch64-linux-gnu/tegra/libnvos.so (0x0000007f7ebd7000)
	libnvbuf_fdmap.so.1.0.0 => /usr/lib/aarch64-linux-gnu/tegra/libnvbuf_fdmap.so.1.0.0 (0x0000007f7ebc4000)
	libgstrtp-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstrtp-1.0.so.0 (0x0000007f7eb96000)
	libnvrm_graphics.so => /usr/lib/aarch64-linux-gnu/tegra/libnvrm_graphics.so (0x0000007f7eb76000)
	libnvddk_vic.so => /usr/lib/aarch64-linux-gnu/tegra/libnvddk_vic.so (0x0000007f7eb58000)
	libnvddk_2d_v2.so => /usr/lib/aarch64-linux-gnu/tegra/libnvddk_2d_v2.so (0x0000007f7eb33000)
	libcuda.so.1 => /usr/lib/aarch64-linux-gnu/tegra/libcuda.so.1 (0x0000007f7dbf0000)
	libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f7dbcc000)
	libgmodule-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0 (0x0000007f7dbb8000)
	libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f7daff000)
	libpcre.so.3 => /lib/aarch64-linux-gnu/libpcre.so.3 (0x0000007f7da8d000)
	libffi.so.6 => /usr/lib/aarch64-linux-gnu/libffi.so.6 (0x0000007f7da75000)
	libgstbase-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstbase-1.0.so.0 (0x0000007f7d9fe000)
	liborc-0.4.so.0 => /usr/lib/aarch64-linux-gnu/liborc-0.4.so.0 (0x0000007f7d985000)
	libgsttag-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgsttag-1.0.so.0 (0x0000007f7d93e000)
	libGLdispatch.so.0 => /usr/lib/aarch64-linux-gnu/libGLdispatch.so.0 (0x0000007f7d812000)
	libnvrm_gpu.so => /usr/lib/aarch64-linux-gnu/tegra/libnvrm_gpu.so (0x0000007f7d7ce000)
	libnvidia-fatbinaryloader.so.440.18 => /usr/lib/aarch64-linux-gnu/tegra/libnvidia-fatbinaryloader.so.440.18 (0x0000007f7d75f000)
	libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000007f7d732000)
root@fc9aa8838b02:/opt/nvidia/deepstream/# ldd /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libnvdsgst_inferserver.so
	linux-vdso.so.1 (0x0000007f8300d000)
	/usr/lib/aarch64-linux-gnu/libgomp.so.1 (0x0000007f82d7e000)
	libnvds_meta.so => /opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_meta.so (0x0000007f82d40000)
	libglib-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000007f82c31000)
	libgobject-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0 (0x0000007f82bd4000)
	libgstbase-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstbase-1.0.so.0 (0x0000007f82b5d000)
	libgstreamer-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 (0x0000007f82a2d000)
	libnvdsgst_helper.so => /opt/nvidia/deepstream/deepstream-6.0/lib/libnvdsgst_helper.so (0x0000007f82a16000)
	libnvdsgst_meta.so => /opt/nvidia/deepstream/deepstream-6.0/lib/libnvdsgst_meta.so (0x0000007f82a01000)
	libnvds_infer_server.so => /opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_infer_server.so (0x0000007f8233e000)
	libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007f821aa000)
	libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007f82195000)
	libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f82169000)
	librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000007f82152000)
	libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f81ff9000)
	/lib/ld-linux-aarch64.so.1 (0x0000007f82fe1000)
	libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f81fd5000)
	libpcre.so.3 => /lib/aarch64-linux-gnu/libpcre.so.3 (0x0000007f81f63000)
	libffi.so.6 => /usr/lib/aarch64-linux-gnu/libffi.so.6 (0x0000007f81f4b000)
	libgmodule-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0 (0x0000007f81f37000)
	libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f81e7e000)
	libgstrtp-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstrtp-1.0.so.0 (0x0000007f81e50000)
	libnvbufsurface.so.1.0.0 => /usr/lib/aarch64-linux-gnu/tegra/libnvbufsurface.so.1.0.0 (0x0000007f81dd2000)
	libnvbufsurftransform.so.1.0.0 => /usr/lib/aarch64-linux-gnu/tegra/libnvbufsurftransform.so.1.0.0 (0x0000007f8068f000)
	libtritonserver.so => /opt/nvidia/deepstream/deepstream-6.0/lib/libtritonserver.so (0x0000007f801a0000)
	libcuda.so.1 => /usr/lib/aarch64-linux-gnu/tegra/libcuda.so.1 (0x0000007f7f25d000)
	libssl.so.1.1 => /usr/lib/aarch64-linux-gnu/libssl.so.1.1 (0x0000007f7f1d3000)
	libcrypto.so.1.1 => /usr/lib/aarch64-linux-gnu/libcrypto.so.1.1 (0x0000007f7ef90000)
	libnvrm.so => /usr/lib/aarch64-linux-gnu/tegra/libnvrm.so (0x0000007f7ef4d000)
	libEGL.so.1 => /usr/lib/aarch64-linux-gnu/libEGL.so.1 (0x0000007f7ef2c000)
	libnvos.so => /usr/lib/aarch64-linux-gnu/tegra/libnvos.so (0x0000007f7ef0e000)
	libnvbuf_fdmap.so.1.0.0 => /usr/lib/aarch64-linux-gnu/tegra/libnvbuf_fdmap.so.1.0.0 (0x0000007f7eefb000)
	libnvrm_graphics.so => /usr/lib/aarch64-linux-gnu/tegra/libnvrm_graphics.so (0x0000007f7eedb000)
	libnvddk_vic.so => /usr/lib/aarch64-linux-gnu/tegra/libnvddk_vic.so (0x0000007f7eebd000)
	libnvddk_2d_v2.so => /usr/lib/aarch64-linux-gnu/tegra/libnvddk_2d_v2.so (0x0000007f7ee98000)
	libnuma.so.1 => /usr/lib/aarch64-linux-gnu/libnuma.so.1 (0x0000007f7ee7a000)
	libnvinfer.so.8 => /usr/lib/aarch64-linux-gnu/libnvinfer.so.8 (0x0000007f738dc000)
	libnvinfer_plugin.so.8 => /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.8 (0x0000007f7275b000)
	libnvrm_gpu.so => /usr/lib/aarch64-linux-gnu/tegra/libnvrm_gpu.so (0x0000007f72717000)
	libnvidia-fatbinaryloader.so.440.18 => /usr/lib/aarch64-linux-gnu/tegra/libnvidia-fatbinaryloader.so.440.18 (0x0000007f726a8000)
	libGLdispatch.so.0 => /usr/lib/aarch64-linux-gnu/libGLdispatch.so.0 (0x0000007f7257c000)
	libnvdla_compiler.so => /usr/lib/aarch64-linux-gnu/tegra/libnvdla_compiler.so (0x0000007f7216f000)
	libnvmedia.so => /usr/lib/aarch64-linux-gnu/tegra/libnvmedia.so (0x0000007f72104000)
	libcudnn.so.8 => /usr/lib/aarch64-linux-gnu/libcudnn.so.8 (0x0000007f720cb000)
	libcublas.so.10 => /usr/local/cuda-10.2/lib64/libcublas.so.10 (0x0000007f6d363000)
	libcublasLt.so.10 => /usr/local/cuda-10.2/lib64/libcublasLt.so.10 (0x0000007f6b34d000)
	libnvdc.so => /usr/lib/aarch64-linux-gnu/tegra/libnvdc.so (0x0000007f6b32b000)
	libnvtvmr.so => /usr/lib/aarch64-linux-gnu/tegra/libnvtvmr.so (0x0000007f6b29b000)
	libnvparser.so => /usr/lib/aarch64-linux-gnu/tegra/libnvparser.so (0x0000007f6b25f000)
	libnvdla_runtime.so => /usr/lib/aarch64-linux-gnu/tegra/libnvdla_runtime.so (0x0000007f6b1c1000)
	libnvimp.so => /usr/lib/aarch64-linux-gnu/tegra/libnvimp.so (0x0000007f6b1ac000)

Hi @xtianhb.glb ,
I tried nvcr.io/nvidia/deepstream-l4t:6.0-triton on Jetson-Xavier Jetpack4.6, the command you used above works well, I can see the render on HDMI TV.

Did you install DeepStream 6.0 GA outside the docker?
Did you refer to the /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app-triton/README to install the required components, i.e.

cd /opt/nvidia/deepstream/deepstream-6.0/samples
./triton_backend_setup.sh
apt-get update && apt-get install ffmpeg
./prepare_classification_test_video.sh
./prepare_ds_triton_model_repo.sh
cd /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app-triton
deepstream-app -c source1_primary_detector_nano.txt

Hi @mchi thanks for the feedback!

I went through the readme file you metion:

  • ./triton_backend_setup.sh.

README
Deepstream Triton container image has Triton Inference Server and supported backend libraries pre-installed.

As my environment is this container: nvcr.io/nvidia/deepstream-l4t:6.0-triton in this case, no need to run triton_backend_setup.sh . Ok

  • Install ffmpeg. Ok

  • ./prepare_classification_test_video.sh. I think we won’t use it but Ok

  • Next one ./prepare_ds_triton_model_repo.sh. It took quite some time, but Ok

  • Run the application:

$cd /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app-triton
$deepstream-app -c source1_primary_detector_nano.txt

And it worked!

It would be super nice that this list of steps was mentioned in the DeepStream release notes or other high-level documentation. It is easy to miss especially when you come from x86 where things are more straightforward using containers. Optimally, these steps should be already included in the docker image. Just a sugggestion.

Thank you very much as always!

1 Like

It was in the Docs:
https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html#deepstream-triton-inference-server-usage-guidelines

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.