Jetson Thor 部署 VSS(Video Search and Summarization)全教程

 公司新闻     |      2026-04-13 12:12:22    |      system

Jetson Thor 部署 VSS(Video Search and Summarization)全教程


准备工作


设备版本:

Jetson核心板:Jetson Thor T5000

JetPack版本:JetPack 7.1 (L4T 38.4.0)


安装Docker


1,# docker

2,sudo apt-get update

3,sudo apt-get install -y ca-certificates curl

4,sudo install -m 0755 -d /etc/apt/keyrings

5,sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

6,sudo chmod a+r /etc/apt/keyrings/docker.asc

7,

8,echo \

9,  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \

10,  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \

11, sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

12,sudo apt-get update

13,sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

14,

15,# nvidia-container

16,curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \

17, && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \

18,    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \

19,    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

20,sudo apt-get update

21,export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1

22,sudo apt-get install -y \

 23,   nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \

 24,   nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \

 25, libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \

26,  libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

27,

28,sudo apt install -y jq

29,jq -n --indent 4 '{"runtimes": {"nvidia": {"args": [], "path": "nvidia-container-runtime"}}}' > daemon.json && \

30,  sudo mv daemon.json /etc/docker/daemon.json

31,sudo systemctl daemon-reload && sudo systemctl restart docker

32,

33,sudo usermod -aG docker $USER

34,newgrp docker


获取NGC API Key


- 进入https://ngc.nvidia.com/并登录账号

- 在用户配置栏中进入https://org.ngc.nvidia.com/setup/api-keys页面

- 进入Legacy API Key页面,点击Generate Legacy Key生成API Key

- 根据提示复制保存生成的API Key


获取 Hugging Face 令牌


- 登录 Hugging Face 平台:访问网址 https://huggingface.co/,登录你的账号。

- 进入 API 密钥页面:跳转至 API Keys 专属页面。

- 生成 API 密钥:如下图所示,点击 “生成新令牌(Generate New Token)” 按钮。复制生成的令牌,并将其妥善保存在安全位置,以备后续使用。


配置VSS Event Reviewer


- 下载Video Search and Summarization

1,git clone https://github.com/NVIDIA-AI-Blueprints/video-search-and-summarization.git -b v2.4.1

2,cd video-search-and-summarization/

- 修改Event Reviewer功能的API Key

1,cd deploy/docker/event_reviewer

2,vim .env

3,

4,# update to download Cosmos-Reason2 / other models from HuggingFace

5,HF_TOKEN=hf_***

6,

7,# update to download Cosmos-Reason1 from NGC

8,NGC_API_KEY=nvapi-***


- 修改docker compose配置(可选)

1,## 添加模型本地缓存

2,mkdir models

3,

4,# 打开compose.yaml

5,vim compose.yaml


  修改compose.yaml文件

1,services:

2,via-server:

3, image: ${VSS_IMAGE:-nvcr.io/nvidia/blueprint/vss-engine:2.4.1${IS_SBSA:+-sbsa}}

4, networks:

5, - vss-shared-network

6, shm_size: '16gb'

7,runtime: nvidia

8, ports:

9,  - "${VSS_BACKEND_PORT:-8000}:${VSS_BACKEND_PORT:-8000}"

10, - "${VSS_FRONTEND_PORT:-9000}:${VSS_FRONTEND_PORT:-9000}"

11, volumes:

12,  - "${MODEL_ROOT_DIR:-/dummy}${MODEL_ROOT_DIR:+:${MODEL_ROOT_DIR:-}}"

13, ## 注释以下两行

14,  # - via-ngc-model-cache:/root/.via/ngc_model_cache 

15,  # - via-hf-cache:/tmp/huggingface

16,  ## 添加模型缓存目录

17,  - ./models/via-ngc-model-cache:/root/.via/ngc_model_cache

18, - ./models/via-hf-cache:/tmp/huggingface

19, - "${ALERT_REVIEW_MEDIA_BASE_DIR:-/dummy}${ALERT_REVIEW_MEDIA_BASE_DIR:+:${ALERT_REVIEW_MEDIA_BASE_DIR:-}}"

20,

21, environment:

22,  BACKEND_PORT: "${VSS_BACKEND_PORT:-8000}"

23, DISABLE_CA_RAG: "true"

24, DISABLE_FRONTEND: "true"

25, DISABLE_GUARDRAILS: "true"

26, DISABLE_CV_PIPELINE: "true"

27, FRONTEND_PORT: "${VSS_FRONTEND_PORT:-9000}"

28,MODEL_PATH: "${MODEL_PATH:-git:https://huggingface.co/nvidia/Cosmos-Reason2-8B}"

29,VLM_MODEL_TO_USE: "${VLM_MODEL_TO_USE:-cosmos-reason2}"

30, VLLM_GPU_MEMORY_UTILIZATION: "${VLLM_GPU_MEMORY_UTILIZATION:-}"

31,VLM_MAX_MODEL_LEN: "${VLM_MAX_MODEL_LEN:-}"

32, VSS_LOG_LEVEL: "${VSS_LOG_LEVEL:-}"

33,VSS_EXTRA_ARGS: "${VSS_EXTRA_ARGS:-}"

34, VLM_DEFAULT_NUM_FRAMES_PER_CHUNK: "${VLM_DEFAULT_NUM_FRAMES_PER_CHUNK:-}"

35,  ALERT_REVIEW_MEDIA_BASE_DIR: "${ALERT_REVIEW_MEDIA_BASE_DIR:-}"

36,VLM_SYSTEM_PROMPT: "You are a helpful assistant. Answer the user's question. "

37, VLM_INPUT_WIDTH: "${VLM_INPUT_WIDTH:-}"

38, VLM_INPUT_HEIGHT: "${VLM_INPUT_HEIGHT:-}"

39, NVIDIA_VISIBLE_DEVICES: "${NVIDIA_VISIBLE_DEVICES:-}"

40, NGC_API_KEY: "${NGC_API_KEY:-}"

41, HF_TOKEN: "${HF_TOKEN:-}"

42, ## 添加科学上网代理(如果需要)

43, HTTP_PROXY: "http://xxx.xxx.xxx.xxx:7890"

44,HTTPS_PROXY: "http://xxx.xxx.xxx.xxx:7890"

45,ulimits:

46,  memlock:

47, soft: -1

48, hard: -1

49, stack: 67108864

50,  ipc: host

51,healthcheck:

52,test: ["CMD", "curl", "-f", "http://localhost:${VSS_BACKEND_PORT:-8000}/health/live"]

53,  interval: 30s

54,timeout: 20s

55,retries: 25

56,  start_period: 90s


- 运行VSS Event Reviewer

1,# 创建VSS Event Reviewer网络

2,docker network create vss-shared-network

3,

4,# 如果升级了vss需清空vst数据

5,rm -rf vst/vst_volume/*

6,

7,# 运行VSS Event Reviewer,包含Alert Bridge, VLM Pipeline, Alert Inspector UI和Video Storage Toolkit功能

8,ALERT_REVIEW_MEDIA_BASE_DIR=/tmp/alert-media-dir docker compose up -d

注意:

1.第一次运行需要下载docker镜像,可能会有些docker镜像无法正常下载,需要手动下载对应的tar包进行加载,并在compose.yaml中修改为当前使用的docker镜像名称

2.进入容器里会自动下载模型并进行加载

  

- 关闭VSS Event Reviewer

1,cd deploy/docker/event_reviewer

2,

3,ALERT_REVIEW_MEDIA_BASE_DIR=/tmp/alert-media-dir docker compose down


调用大模型后可能会造成内存占用,需要运行命令进行清理,可执行脚本:

1,sudo sh deploy/scripts/sys_cache_cleaner.sh



配置cv-event-detector



- 进入cv-event-detector目录

1,# change directory to example of CV detector

2,cd video-search-and-summarization/examples/cv-event-detector

- 修改docker compose配置(可选)

1,## 添加模型本地缓存

2,mkdir models

3,

4,# 打开compose.yaml

5,vim compose.yaml

  修改compose.yaml文件

1,services:

2,

3, nv-cv-event-detector:

4, image: ${NV_CV_EVENT_DETECTOR_IMAGE:-nvcr.io/nvidia/blueprint/nv-cv-event-detector:2.4.0${IS_SBSA:+-sbsa}}

5,networks:

6,  - vss-shared-network

7,shm_size: '16gb'

8,runtime: nvidia

9, ports:

10, - "${NV_CV_EVENT_DETECTOR_API_PORT:-23491}:${NV_CV_EVENT_DETECTOR_API_PORT:-23491}"

11, entrypoint: ["/opt/nvidia/nv-cv-event-detector/start_nv_cv_event_detector.sh"]

12,

13,volumes:

14, ## 注释以下两行

15,  # - via-ngc-model-cache:/root/.via/ngc_model_cache

16,  # - via-hf-cache:/tmp/huggingface

17,## 添加模型缓存目录

18, - ./models/via-ngc-model-cache:/root/.via/ngc_model_cache

19, - ./models/via-hf-cache:/tmp/huggingface

20, - "${ALERT_REVIEW_MEDIA_BASE_DIR:-/dummy}${ALERT_REVIEW_MEDIA_BASE_DIR:+:${ALERT_REVIEW_MEDIA_BASE_DIR:-}}"

21,  - cv-input-dir:/tmp

22,  - ./gdinoconfig_grpc.txt:/opt/nvidia/nv-cv-event-detector/gdinoconfig_grpc.txt

23,

24,  environment:

25,NV_CV_EVENT_DETECTOR_API_PORT: ${NV_CV_EVENT_DETECTOR_API_PORT:-23491}

26, INSTALL_PROPRIETARY_CODECS: "true"

27,  USE_GDINO: "${USE_GDINO:-true}"

28,  DISABLE_SOM_OVERLAY: "${DISABLE_SOM_OVERLAY:-false}"

29,  USE_TRACKER_CONFIG: "${USE_TRACKER_CONFIG:-/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_perf.yml}"

30,  CLIP_CACHE_PRE_EV_TIME: "${CLIP_CACHE_PRE_EV_TIME:-5}" #5s

31, CLIP_CACHE_POST_EV_TIME: "${CLIP_CACHE_POST_EV_TIME:-20}" #25s

32,  ENABLE_FILE_STREAMING_MODE: "${ENABLE_FILE_STREAMING_MODE:-false}"

33,NVIDIA_VISIBLE_DEVICES: "${NVIDIA_VISIBLE_DEVICES:-}"

34, LD_LIBRARY_PATH: "/opt/nvidia/deepstream/deepstream/lib:/opt/tritonserver/lib/"

35,  ## 添加科学上网代理(如果需要)

36,  HTTP_PROXY: "http://xxx.xxx.xxx.xxx:7890"

37, HTTPS_PROXY: "http://xxx.xxx.xxx.xxx:7890"

38, ulimits:

39, memlock:

40,  soft: -1

41,  hard: -1

42, nofile:

43, soft: 65535

44,hard: 65535

45, stack: 67108864

46,ipc: host

47,  healthcheck:

48,test: ["CMD", "curl", "-f", "http://localhost:${NV_CV_EVENT_DETECTOR_API_PORT:-23491}/health"]

49,interval: 30s

50, timeout: 20s

51,  retries: 50

52, start_period: 90s


- 运行cv-event-detector

1,# 运行cv-event-detector,包含cv-ui功能

2,ALERT_REVIEW_MEDIA_BASE_DIR=/tmp/alert-media-dir docker compose -f compose.yaml -f compose.thor.yaml up -d

第一次运行需要下载docker镜像并下载并加载模型

- 关闭cv-event-detector

1,# change directory to example of CV detector

2,cd examples/cv-event-detector

3,

4,ALERT_REVIEW_MEDIA_BASE_DIR=/tmp/alert-media-dir docker compose down


进入Inspector WebUI



设置视频Pipeline

1. 打开浏览器,输入http://0.0.0.0:7862进入Computer Vision Pipeline Manager页面

2. 选择Examples中的视频文件,可修改Detection Parameters和Alert Prompts

3. 点击Process Video开始处理视频


查看Alert结果

1. 在浏览器中输入http://0.0.0.0:7860进入Alert Inspector页面

2. 在DASHBOARD中选择想进行查看的视频流,点击条目最右侧的Chat图标进入CHAT功能并播放视频

3. 可在聊天框中输入问题点击Ask获取VLM的结果