Triển khai các Mô hình Ngôn ngữ Thị giác Nguồn mở (VLM) trên Jetson
Triển khai các mô hình ngôn ngữ thị giác nguồn mở trên Jetson
- 9 min read
Triển khai Mô hình Ngôn ngữ Thị giác (VLM) Mã nguồn Mở trên Jetson
Các Mô hình Ngôn ngữ Thị giác (VLM) đánh dấu một bước tiến lớn trong AI bằng cách kết hợp nhận thức thị giác với suy luận ngữ nghĩa. Vượt ra ngoài các mô hình truyền thống bị giới hạn bởi nhãn cố định, VLM sử dụng không gian nhúng chung để diễn giải và thảo luận về các môi trường phức tạp, mở ra bằng ngôn ngữ tự nhiên.
Tốc độ phát triển nhanh chóng về độ chính xác và hiệu quả suy luận đã làm cho các mô hình này trở nên lý tưởng cho các thiết bị biên. Gia đình NVIDIA Jetson, từ AGX Thor và AGX Orin hiệu năng cao đến Orin Nano Super nhỏ gọn, được chế tạo đặc biệt để thúc đẩy các ứng dụng tăng tốc cho AI vật lý và robot, cung cấp thời gian chạy được tối ưu hóa cần thiết cho các mô hình mã nguồn mở hàng đầu.
Trong hướng dẫn này, chúng tôi sẽ trình bày cách triển khai mô hình NVIDIA Cosmos Reason 2B trên dòng Jetson bằng cách sử dụng framework vLLM. Chúng tôi cũng sẽ hướng dẫn bạn cách kết nối mô hình này với Live VLM WebUI, cho phép giao diện thời gian thực dựa trên webcam để tương tác AI vật lý.

Tiền đề
Thiết bị được hỗ trợ:
- Jetson AGX Thor Developer Kit
- Jetson AGX Orin (64GB / 32GB)
- Jetson Orin Super Nano
Phiên bản JetPack:
- JetPack 6 (L4T r36.x) — dành cho thiết bị Orin
- JetPack 7 (L4T r38.x) — dành cho Thor
Lưu trữ: Yêu cầu SSD NVMe
- ~5 GB cho trọng số mô hình FP8
- ~8 GB cho ảnh container vLLM
Tài khoản:
- Tạo tài khoản NVIDIA NGC (miễn phí) để tải xuống cả mô hình và container vLLM.
Tổng quan
| Jetson AGX Thor | Jetson AGX Orin | Orin Super Nano | |
|---|---|---|---|
| Container vLLM | nvcr.io/nvidia/vllm:26.01-py3 |
ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04 |
ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04 |
| Model | FP8 qua NGC (mount volume) | FP8 qua NGC (mount volume) | FP8 qua NGC (mount volume) |
| Độ dài Mô hình Tối đa | 8192 token | 8192 token | 256 token (giới hạn bộ nhớ) |
| Sử dụng Bộ nhớ GPU | 0.8 | 0.8 | 0.65 |
Quy trình giống nhau cho cả hai thiết bị:
- Tải xuống checkpoint mô hình FP8 qua NGC CLI
- Tải về ảnh Docker vLLM cho thiết bị của bạn
- Khởi chạy container với mô hình được mount dưới dạng volume
- Kết nối Live VLM WebUI với endpoint vLLM
Bước 1: Cài đặt NGC CLI
NGC CLI cho phép bạn tải xuống các checkpoint mô hình từ Danh mục NVIDIA NGC.
Tải xuống và cài đặt
bash mkdir -p ~/Projects/CosmosReason cd ~/Projects/CosmosReason
Tải xuống NGC CLI cho ARM64
Lấy URL trình cài đặt mới nhất từ: https://org.ngc.nvidia.com/setup/installers/cli
wget -O ngccli_arm64.zip https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions/4.13.0/files/ngccli_arm64.zip unzip ngccli_arm64.zip chmod u+x ngc-cli/ngc
Thêm vào PATH
export PATH="$PATH:$(pwd)/ngc-cli"
Cấu hình CLI
bash ngc config set
Bạn sẽ được nhắc nhập:
- API Key — tạo một tại Thiết lập khóa API NGC
- Định dạng đầu ra CLI — chọn
jsonhoặcascii - org — nhấn Enter để chấp nhận mặc định
Bước 2: Tải xuống Mô hình
Tải xuống checkpoint FP8 đã được lượng tử hóa. Cái này được sử dụng trên tất cả các thiết bị Jetson:
bash cd ~/Projects/CosmosReason ngc registry model download-version “nim/nvidia/cosmos-reason2-2b:1208-fp8-static-kv8”
Thao tác này sẽ tạo một thư mục có tên cosmos-reason2-2b_v1208-fp8-static-kv8/ chứa trọng số mô hình. Lưu ý đường dẫn đầy đủ — bạn sẽ mount nó vào container Docker dưới dạng một volume.
Bước 3: Tải về ảnh Docker vLLM
Dành cho Jetson AGX Thor
bash docker pull nvcr.io/nvidia/vllm:26.01-py3
Dành cho Jetson AGX Orin / Orin Super Nano
bash docker pull ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04
Bước 4: Phục vụ Cosmos Reason 2B với vLLM
Tùy chọn A: Jetson AGX Thor
Thor có đủ bộ nhớ GPU và có thể chạy mô hình với độ dài ngữ cảnh lớn.
Đặt đường dẫn đến mô hình đã tải xuống của bạn và giải phóng bộ nhớ đệm trên máy chủ:
bash MODEL_PATH="$HOME/Projects/CosmosReason/cosmos-reason2-2b_v1208-fp8-static-kv8" sudo sysctl -w vm.drop_caches=3
Khởi chạy container với mô hình được mount:
bash
docker run –rm -it
–runtime nvidia
–network host
–ipc host
-v “$MODEL_PATH:/models/cosmos-reason2-2b:ro”
-e NVIDIA_VISIBLE_DEVICES=all
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility
nvcr.io/nvidia/vllm:26.01-py3
bash
Bên trong container, kích hoạt môi trường và phục vụ mô hình:
bash
vllm serve /models/cosmos-reason2-2b
–max-model-len 8192
–media-io-kwargs ‘{“video”: {“num_frames”: -1}}’
–reasoning-parser qwen3
–gpu-memory-utilization 0.8
Lưu ý: Cờ --reasoning-parser qwen3 cho phép trích xuất suy luận theo chuỗi tư duy. Cờ --media-io-kwargs cấu hình xử lý khung video.
Chờ cho đến khi bạn thấy:
bash INFO: Uvicorn running on http://0.0.0.0:8000
Tùy chọn B: Jetson AGX Orin
AGX Orin có đủ bộ nhớ để chạy mô hình với các tham số hào phóng tương tự như Thor.
Đặt đường dẫn đến mô hình đã tải xuống của bạn và giải phóng bộ nhớ đệm trên máy chủ:
bash MODEL_PATH="$HOME/Projects/CosmosReason/cosmos-reason2-2b_v1208-fp8-static-kv8" sudo sysctl -w vm.drop_caches=3
1. Khởi chạy container:
bash
docker run –rm -it
–runtime nvidia
–network host
-v “$MODEL_PATH:/models/cosmos-reason2-2b:ro”
-e NVIDIA_VISIBLE_DEVICES=all
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility
ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04
bash
2. Bên trong container, kích hoạt môi trường và phục vụ:
bash cd /opt/ source venv/bin/activate
vllm serve /models/cosmos-reason2-2b
–max-model-len 8192
–media-io-kwargs ‘{“video”: {“num_frames”: -1}}’
–reasoning-parser qwen3
–gpu-memory-utilization 0.8
Chờ cho đến khi bạn thấy:
bash INFO: Uvicorn running on http://0.0.0.0:8000
Tùy chọn C: Jetson Orin Super Nano (giới hạn bộ nhớ)
Orin Super Nano có ít RAM hơn đáng kể, vì vậy chúng tôi cần các cờ tối ưu hóa bộ nhớ mạnh mẽ.
Đặt đường dẫn đến mô hình đã tải xuống của bạn và giải phóng bộ nhớ đệm trên máy chủ:
bash MODEL_PATH="$HOME/Projects/CosmosReason/cosmos-reason2-2b_v1208-fp8-static-kv8" sudo sysctl -w vm.drop_caches=3
1. Khởi chạy container:
bash
docker run –rm -it
–runtime nvidia
–network host
-v “$MODEL_PATH:/models/cosmos-reason2-2b:ro”
-e NVIDIA_VISIBLE_DEVICES=all
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility
ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04
bash
2. Bên trong container, kích hoạt môi trường và phục vụ:
bash cd /opt/ source venv/bin/activate
vllm serve /models/cosmos-reason2-2b
–host 0.0.0.0
–port 8000
–trust-remote-code
–enforce-eager
–max-model-len 256
–max-num-batched-tokens 256
–gpu-memory-utilization 0.65
–max-num-seqs 1
–enable-chunked-prefill
–limit-mm-per-prompt ‘{“image”:1,“video”:1}’
–mm-processor-kwargs ‘{“num_frames”:2,“max_pixels”:150528}’
Các cờ chính được giải thích (Chỉ dành cho Orin Super Nano):
| Cờ | Mục đích |
|---|---|
--enforce-eager |
Tắt biểu đồ CUDA để tiết kiệm bộ nhớ |
--max-model-len 256 |
Giới hạn ngữ cảnh để phù hợp với bộ nhớ có sẵn |
--max-num-batched-tokens 256 |
Khớp với giới hạn độ dài mô hình |
--gpu-memory-utilization 0.65 |
Dự phòng khoảng trống cho các quy trình hệ thống |
--max-num-seqs 1 |
Chỉ một yêu cầu tại một thời điểm để giảm thiểu bộ nhớ |
--enable-chunked-prefill |
Xử lý prefill theo các phần để tiết kiệm bộ nhớ |
--limit-mm-per-prompt |
Giới hạn chỉ 1 hình ảnh và 1 video cho mỗi prompt |
--mm-processor-kwargs |
Giảm số khung video và độ phân giải hình ảnh |
--VLLM_SKIP_WARMUP=true |
Bỏ qua khởi động để tiết kiệm thời gian và bộ nhớ |
Chờ cho đến khi bạn thấy máy chủ sẵn sàng:
bash INFO: Uvicorn running on http://0.0.0.0:8000
Xác minh máy chủ đang chạy
Từ một terminal khác trên Jetson:
bash curl http://localhost:8000/v1/models
Bạn sẽ thấy mô hình được liệt kê trong phản hồi.
Bước 5: Kiểm tra bằng lệnh gọi API nhanh
Trước khi kết nối WebUI, hãy xác minh rằng mô hình phản hồi chính xác:
bash
curl -s http://localhost:8000/v1/chat/completions
-H “Content-Type: application/json”
-d ‘{
“model”: “/models/cosmos-reason2-2b”,
“messages”: [
{
“role”: “user”,
“content”: “What capabilities do you have?”
}
],
“max_tokens”: 128
}’ | python3 -m json.tool
Mẹo: Tên mô hình được sử dụng trong yêu cầu API phải khớp với những gì vLLM báo cáo. Hãy xác minh bằng
curl http://localhost:8000/v1/models.
Bước 6: Kết nối với Live VLM WebUI
Live VLM WebUI cung cấp giao diện webcam-to-VLM thời gian thực. Với vLLM phục vụ Cosmos Reason 2B, bạn có thể truyền phát webcam của mình và nhận phân tích AI trực tiếp với suy luận.
Cài đặt Live VLM WebUI
Cách dễ nhất là dùng pip (Mở một terminal khác):
bash curl -LsSf https://astral.sh/uv/install.sh | sh source $HOME/.local/bin/env cd ~/Projects/CosmosReason uv venv .live-vlm –python 3.12 source .live-vlm/bin/activate uv pip install live-vlm-webui live-vlm-webui
Hoặc sử dụng Docker:
bash git clone https://github.com/nvidia-ai-iot/live-vlm-webui.git cd live-vlm-webui ./scripts/start_container.sh
Cấu hình WebUI
- Mở
https://localhost:8090trong trình duyệt của bạn - Chấp nhận chứng chỉ tự ký (nhấp vào Advanced → Proceed)
- Trong phần VLM API Configuration ở thanh bên trái:
- Đặt API Base URL thành
http://localhost:8000/v1 - Nhấp vào nút Refresh để phát hiện mô hình
- Chọn mô hình Cosmos Reason 2B từ danh sách thả xuống
- Đặt API Base URL thành
- Chọn camera của bạn và nhấp vào Start
WebUI giờ đây sẽ truyền phát các khung hình webcam của bạn tới Cosmos Reason 2B và hiển thị phân tích của mô hình theo thời gian thực.
Cài đặt WebUI được đề xuất cho Orin
Vì Orin chạy với độ dài ngữ cảnh ngắn hơn, hãy điều chỉnh các cài đặt này trong WebUI:
- Max Tokens: Đặt thành 100–150 (các phản hồi ngắn hơn hoàn thành nhanh hơn)
- Frame Processing Interval: Đặt thành 60+ (cho phép mô hình xử lý giữa các khung hình)
Khắc phục sự cố
Hết bộ nhớ trên Orin
Vấn đề: vLLM bị lỗi với các lỗi hết bộ nhớ CUDA.
Giải pháp:
-
Giải phóng bộ nhớ hệ thống trước khi bắt đầu: bash sudo sysctl -w vm.drop_caches=3
-
Giảm
--gpu-memory-utilization(thử0.55hoặc0.50) -
Giảm thêm
--max-model-len(thử128) -
Đảm bảo không có quy trình nào khác sử dụng nhiều GPU đang chạy
Mô hình không tìm thấy trong WebUI
Vấn đề: Mô hình không xuất hiện trong danh sách thả xuống của Live VLM WebUI.
Giải pháp:
- Xác minh vLLM đang chạy:
curl http://localhost:8000/v1/models - Đảm bảo URL cơ sở API của WebUI được đặt thành
http://localhost:8000/v1(không phảihttps) - Nếu vLLM và WebUI ở các container riêng biệt, hãy sử dụng
http://<jetson-ip>:8000/v1thay vìlocalhost
Suy luận chậm trên Orin
Vấn đề: Mỗi phản hồi mất rất nhiều thời gian.
Giải pháp:
- Điều này là mong đợi với cấu hình giới hạn bộ nhớ. Cosmos Reason 2B FP8 trên Orin ưu tiên khớp bộ nhớ hơn tốc độ.
- Giảm
max_tokenstrong WebUI để nhận các phản hồi ngắn hơn, nhanh hơn. - Tăng khoảng thời gian giữa các khung hình để mô hình không liên tục xử lý các khung hình mới.
vLLM không tải được mô hình
Vấn đề: vLLM báo cáo rằng đường dẫn mô hình không tồn tại hoặc không thể tải.
Giải pháp:
- Xác minh tải xuống NGC đã hoàn tất thành công:
ls ~/Projects/CosmosReason/cosmos-reason2-2b_v1208-fp8-static-kv8/ - Đảm bảo đường dẫn mount volume chính xác trong lệnh
docker runcủa bạn - Kiểm tra xem thư mục mô hình có được mount ở chế độ chỉ đọc (
:ro) và đường dẫn bên trong container khớp với những gì bạn truyền chovllm servehay không.
Tóm tắt
Trong hướng dẫn này, chúng tôi đã trình bày cách triển khai mô hình NVIDIA Cosmos Reason 2B trên các thiết bị thuộc dòng Jetson bằng vLLM.
Sự kết hợp giữa khả năng suy luận theo chuỗi tư duy của Cosmos Reason 2B với WebUI Live VLM thời gian thực làm cho nó trở nên lý tưởng để tạo mẫu và đánh giá các ứng dụng AI thị giác tại biên.

Tài nguyên bổ sung
- Cosmos Reason 2B trên NVIDIA Build: https://huggingface.co/nvidia/Cosmos-Reason2-2B
- Danh mục Mô hình NGC: https://catalog.ngc.nvidia.com/
- Live VLM WebUI: https://github.com/NVIDIA-AI-IOT/live-vlm-webui
- Container vLLM cho Jetson Thor: https://ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04
- Container vLLM cho Jetson AGX Orin và Orin Super Nano: https://nvcr.io/nvidia/vllm:26.01-py3
- Trình cài đặt NGC CLI: https://org.ngc.nvidia.com/setup/installers/cli
- Mô hình Mở được hỗ trợ trên Jetson: https://www.jetson-ai-lab.com/models/
- Bắt đầu với Jetson: https://www.jetson-ai-lab.com/tutorials/