DeepStream 在 WSL 上#
适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,允许您在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双启动。WSL 2 是它的最新版本。此页面介绍了在 WSL2 中运行 Deepstream docker 容器的步骤。
先决条件:#
1. 带有 NVIDIA GPU 的 Windows 11 系统
注意:WSL 不支持 Tesla/Datacenter GPU。仅支持 WDDM 模式下的 GeForce 和 Quadro GPU。请查看链接了解更多信息:https://docs.nvda.net.cn/cuda/wsl-user-guide/index.html#wsl-2-support-constraints
2. 与您的 GPU 兼容的 NVIDIA 驱动程序(Windows 版本)
您可以从此处下载基于您的 Windows 操作系统和 GPU 类型的兼容驱动程序:https://www.nvidia.com/Download/index.aspx
当前验证的驱动程序版本和 GPU 信息:GameReady 驱动程序版本 546.65,配备 RTX-3080、RTX-3090 和 RTX-A6000
注意:这是您需要在 Windows 上安装的唯一驱动程序。请勿在 WSL 内部安装任何 Linux 显示驱动程序。
3. WSL (Windows 应用商店版本)
从 microsoft/WSL 下载并安装最新稳定版本的 WSL2。
注意:在某些 Windows 构建版本中,“wsl –install”命令将安装作为 Windows 映像一部分的 WSL,其功能有限。请勿安装该版本。
为 WSL 安装 Ubuntu 操作系统:#
打开终端并安装 Ubuntu 22
以管理员权限打开 Windows 终端。(右键单击并以管理员身份运行)检查 wsl 可安装的所有操作系统映像。
$ wsl --list --online
安装 Deepstream 7.1 所需的 Ubuntu 版本。
$ wsl --install Ubuntu-22.04
上述步骤可能会首先安装运行 WSL 的依赖项,然后再安装 Ubuntu,并可能要求重启 Windows 计算机。在这种情况下,重启计算机,以管理员权限打开 Windows 终端,并使用以下命令检查 Ubuntu 是否已正确安装。
$ wsl --list
如果找不到已安装的 Ubuntu 版本,请再次使用“wsl –install Ubuntu-22.04”命令安装。在提示时设置 Ubuntu 的用户名和密码。
在 Ubuntu 内部安装 Docker Engine 和依赖项:#
在 WSL 内部启动 Ubuntu
以管理员权限打开 Windows 终端(右键单击并以管理员身份运行)。
使用 WSL 启动 Ubuntu。(仅当您尚未登录 Ubuntu 时才需要此步骤)
$ wsl -d Ubuntu-22.04
从 WSL 环境中验证驱动程序安装
$ nvidia-smi
注意:如果“nvidia-smi”未按预期工作,则 Windows 中的驱动程序安装存在一些问题,在解决此问题之前,我们无法继续进行。
安装 Docker Engine 和依赖项
$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io --fix-missing
验证 docker 安装
这应该打印“Hello from Docker!”
$ sudo docker run hello-world
注意:如果您由于 docker 服务未运行而无法运行上述命令,请先启动 docker 服务。
$ sudo dockerd &
启用 Docker 存储库并安装 NVIDIA 容器工具包
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
$ curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker
运行 Deepstream 容器:#
拉取所需的 deepstream docker 容器
$ sudo docker pull nvcr.io/nvidia/deepstream:7.1-triton-multiarch
启动 docker 容器
$ sudo apt install x11-xserver-utils
$ xhost +
$ sudo docker run -it --privileged --rm --name=docker --net=host --gpus all -e DISPLAY=$DISPLAY -e CUDA_CACHE_DISABLE=0 --device /dev/snd -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/deepstream:7.1-triton-multiarch
验证 deepstream 功能
$ deepstream-app --version
预期输出:它应该打印当前安装在 docker 上的 deepstream 版本。
$ cd /opt/nvidia/deepstream/deepstream/samples/streams
$ gst-launch-1.0 filesrc location= sample_720p.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! nveglglessink -v
预期输出:sample_720p.mp4 的播放应该正常进行。示例如下屏幕截图

注意:显示窗口大小可能因不同系统支持的屏幕分辨率而异。您可以拖动并调整显示窗口以适合您的屏幕。
$ cd /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app
$ deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display_int8.txt
预期输出:deepstream-app 应该正常运行。示例如下屏幕截图

注意
显示窗口大小可能因不同系统支持的屏幕分辨率而异。您可以拖动并调整显示窗口以适合您的屏幕。