Jetson Thor 部(bù)署(shǔ) VSS(Video Search and Summarization)全(quán)教程

 公(gōng)司新(xīn)聞     |      2026-04-13 12:12:22    |      system

Jetson Thor 部(bù)署(shǔ) VSS(Video Search and Summarization)全(quán)教程


準備工作(zuò)


設備版本(běn):

Jetson核心板:Jetson Thor T5000

JetPack版本(běn):JetPack 7.1 (L4T 38.4.0)


安(ān)裝(zhuāng)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


獲取(qǔ)NGC API Key


- 進(jìn)入(rù)https://ngc.nvidia.com/並(bìng)登录(lù)賬号(hào)

- 在(zài)用(yòng)戶配置欄中(zhōng)進(jìn)入(rù)https://org.ngc.nvidia.com/setup/api-keys页(yè)面(miàn)

- 進(jìn)入(rù)Legacy API Key页(yè)面(miàn),點(diǎn)擊Generate Legacy Key生(shēng)成(chéng)API Key

- 根(gēn)據(jù)提(tí)示複制保存生(shēng)成(chéng)的(de)API Key


獲取(qǔ) Hugging Face 令牌(pái)


- 登录(lù) Hugging Face 平台(tái):訪問(wèn)网(wǎng)址 https://huggingface.co/,登录(lù)你的(de)賬号(hào)。

- 進(jìn)入(rù) API 密鑰页(yè)面(miàn):跳轉(zhuǎn)至(zhì) API Keys 專屬页(yè)面(miàn)。

- 生(shēng)成(chéng) API 密鑰:如(rú)下(xià)图(tú)所(suǒ)示,點(diǎn)擊 “生(shēng)成(chéng)新(xīn)令牌(pái)(Generate New Token)” 按鈕。複制生(shēng)成(chéng)的(de)令牌(pái),並(bìng)将其(qí)妥善保存在(zài)安(ān)全(quán)位(wèi)置,以備後(hòu)續使用(yòng)。


配置VSS Event Reviewer


- 下(xià)载(zài)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功能(néng)的(de)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配置(可(kě)選)

1,## 添加模型本(běn)地(dì)緩存

2,mkdir models

3,

4,# 打(dǎ)開(kāi)compose.yaml

5,vim compose.yaml


  修改compose.yaml文(wén)件(jiàn)

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, ## 注釋以下(xià)两(liǎng)行

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

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

16,  ## 添加模型緩存目录(lù)

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, ## 添加科學(xué)上(shàng)网(wǎng)代(dài)理(lǐ)(如(rú)果(guǒ)需要(yào))

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网(wǎng)络

2,docker network create vss-shared-network

3,

4,# 如(rú)果(guǒ)升(shēng)級了(le)vss需清(qīng)空(kōng)vst數據(jù)

5,rm -rf vst/vst_volume/*

6,

7,# 運行VSS Event Reviewer,包(bāo)含Alert Bridge, VLM Pipeline, Alert Inspector UI和(hé)Video Storage Toolkit功能(néng)

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

注意(yì):

1.第(dì)一(yī)次(cì)運行需要(yào)下(xià)载(zài)docker鏡(jìng)像,可(kě)能(néng)会(huì)有(yǒu)些(xiē)docker鏡(jìng)像無法(fǎ)正(zhèng)常下(xià)载(zài),需要(yào)手(shǒu)动下(xià)载(zài)对應(yìng)的(de)tar包(bāo)進(jìn)行加载(zài),並(bìng)在(zài)compose.yaml中(zhōng)修改为當前(qián)使用(yòng)的(de)docker鏡(jìng)像名(míng)稱

2.進(jìn)入(rù)容器里(lǐ)会(huì)自(zì)动下(xià)载(zài)模型並(bìng)進(jìn)行加载(zài)

  

- 關(guān)閉VSS Event Reviewer

1,cd deploy/docker/event_reviewer

2,

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


調用(yòng)大(dà)模型後(hòu)可(kě)能(néng)会(huì)造成(chéng)內(nèi)存占用(yòng),需要(yào)運行命令進(jìn)行清(qīng)理(lǐ),可(kě)執行脚本(běn):

1,sudo sh deploy/scripts/sys_cache_cleaner.sh



配置cv-event-detector



- 進(jìn)入(rù)cv-event-detector目录(lù)

1,# change directory to example of CV detector

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

- 修改docker compose配置(可(kě)選)

1,## 添加模型本(běn)地(dì)緩存

2,mkdir models

3,

4,# 打(dǎ)開(kāi)compose.yaml

5,vim compose.yaml

  修改compose.yaml文(wén)件(jiàn)

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, ## 注釋以下(xià)两(liǎng)行

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

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

17,## 添加模型緩存目录(lù)

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,  ## 添加科學(xué)上(shàng)网(wǎng)代(dài)理(lǐ)(如(rú)果(guǒ)需要(yào))

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,包(bāo)含cv-ui功能(néng)

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

第(dì)一(yī)次(cì)運行需要(yào)下(xià)载(zài)docker鏡(jìng)像並(bìng)下(xià)载(zài)並(bìng)加载(zài)模型

- 關(guān)閉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


進(jìn)入(rù)Inspector WebUI



設置视頻Pipeline

1. 打(dǎ)開(kāi)浏覽器,輸入(rù)http://0.0.0.0:7862進(jìn)入(rù)Computer Vision Pipeline Manager页(yè)面(miàn)

2. 選擇Examples中(zhōng)的(de)视頻文(wén)件(jiàn),可(kě)修改Detection Parameters和(hé)Alert Prompts

3. 點(diǎn)擊Process Video開(kāi)始(shǐ)處(chù)理(lǐ)视頻


查看(kàn)Alert結果(guǒ)

1. 在(zài)浏覽器中(zhōng)輸入(rù)http://0.0.0.0:7860進(jìn)入(rù)Alert Inspector页(yè)面(miàn)

2. 在(zài)DASHBOARD中(zhōng)選擇想(xiǎng)進(jìn)行查看(kàn)的(de)视頻流,點(diǎn)擊条(tiáo)目最(zuì)右(yòu)側的(de)Chat图(tú)标(biāo)進(jìn)入(rù)CHAT功能(néng)並(bìng)播放(fàng)视頻

3. 可(kě)在(zài)聊天(tiān)框中(zhōng)輸入(rù)問(wèn)题點(diǎn)擊Ask獲取(qǔ)VLM的(de)結果(guǒ)