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的结果
