Implantar JoyAI-VL-Interaction no Jetson Thor
Introdução
JoyAI-VL-Interaction é um sistema aberto de interação vídeo-linguagem em tempo real. Ele combina um backend de VLM em streaming, uma WebUI baseada em navegador, serviços opcionais de ASR/TTS e um pipeline de memória de longo contexto para que o modelo possa observar uma cena ao vivo e responder no momento certo.
Em 7 de julho de 2026, o repositório upstream JoyAI-VL-Interaction declara que foi testado em GPUs NVIDIA da série Hopper. Este wiki foca em um caminho prático de adaptação para o Jetson AGX Thor: implantar primeiro a pilha mínima (webinfer + webui) na única GPU do Thor e, em seguida, estender para serviços de áudio somente depois que o pipeline principal estiver estável.

Pré-requisitos
- 1 x Kit de Desenvolvimento NVIDIA Jetson AGX Thor
- 1 x câmera USB ou uma fonte de stream RTSP
- Teclado, mouse, monitor e conexão de rede
- Pelo menos 30 GB de armazenamento livre para ambientes Python, pesos de modelos e logs
Este guia assume que seu sistema Jetson Thor já está gravado, inicializa normalmente e tem acesso à Internet.
| Kit de Desenvolvimento NVIDIA Jetson AGX Thor | Câmera USB |
|---|---|
![]() | ![]() |
Primeiros Passos
Etapa 1. Preparar o sistema Jetson Thor
Abra um terminal no Jetson Thor e instale os pacotes de sistema necessários:
sudo apt update
sudo apt install -y git git-lfs curl ffmpeg python3-pip python3.12-venv
git lfs install
Para melhor desempenho de inferência no Jetson, altere o dispositivo para um modo de energia de alto desempenho:
sudo nvpmodel -m 0
sudo jetson_clocks
JoyAI-VL-Interaction é padronizado em Python 3.12, portanto este guia mantém a mesma versão no Thor.
Etapa 2. Instalar uv e o CLI do Hugging Face
Os scripts de instalação upstream usam uv e o script de download de modelos espera o comando hf.
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uv tool install "huggingface_hub[cli]"
hf --version
Se hf ainda não for encontrado, reabra o terminal ou execute:
export PATH="$HOME/.local/bin:$PATH"
Etapa 3. Clonar o repositório JoyAI-VL-Interaction
git clone https://github.com/jd-opensource/JoyAI-VL-Interaction.git
cd JoyAI-VL-Interaction
Etapa 4. Instalar o runtime
Instale primeiro apenas o ambiente principal de WebUI e inferência em streaming:
./install/install.sh --with-all
Este script cria o ambiente virtual compartilhado em services/.venv e instala o runtime fixado vllm==0.22.0 exigido pelo projeto.

Se vllm==0.22.0 falhar ao instalar no Jetson ARM64, não continue com o fluxo padrão baseado em wheel. Nesse caso, mude primeiro para o caminho oficial de build ARM64/origem do vLLM e depois retorne a este guia.
Etapa 5. Baixar os pesos do modelo
Aqui seguimos o README do Github para baixar todos os pesos de modelos:
./install/download-models.sh --all
Por padrão, os modelos são baixados para:
/tmp/models/JoyAI-VL-Interaction-Preview/tmp/models/Qwen3-VL-4B-Instruct/tmp/models/Qwen3-ASR-1.7B/tmp/models/Qwen3-TTS-12Hz-1.7B-CustomVoice
Etapa 6. Iniciar a pilha mínima JoyAI no Thor
O layout padrão de GPU upstream assume múltiplas GPUs:
- modelo principal na GPU
0 - modelo de resumo na GPU
1 - ASR/TTS opcionais na GPU
2
Jetson Thor é uma plataforma de GPU única, então precisamos colocar tanto o modelo principal quanto o modelo de resumo na GPU 0 e começar com configurações conservadoras de memória.
Aqui, precisamos abrir quatro terminais no Jetson e executar os seguintes comandos separadamente.
- Terminal1:
source /home/seeed/JoyAI-VL-Interaction/services/.venv/bin/activate
cd services/webinfer
MAIN_GPU=0 MAIN_GPU_MEMORY_UTILIZATION=0.6 bash scripts/run.sh models - Terminal2:
source /home/seeed/JoyAI-VL-Interaction/services/.venv/bin/activate
cd services/webinfer
SUMMARY_GPU=0 SUMMARY_GPU_MEMORY_UTILIZATION=0.3 bash scripts/run.sh summary
Observe que você deve esperar até que o Terminal 2 tenha iniciado completamente antes de continuar a executar os comandos no Terminal 3.
Você pode verificar os logs de runtime no Terminal 2 usando o seguinte comando:
tail -f /home/seeed/JoyAI-VL-Interaction/services/webinfer/summary_vllm_logs/vllm_8065.log

- Terminal3:
source /home/seeed/JoyAI-VL-Interaction/services/.venv/bin/activate
cd services/webinfer
bash scripts/run.sh adapter - Terminal4:
source /home/seeed/JoyAI-VL-Interaction/services/.venv/bin/activate
cd services/webui
bash scripts/start_server.sh
Esses valores são um ponto de partida orientado ao Thor para implantação com GPU única. Se o serviço iniciar de forma confiável, você pode aumentar gradualmente a utilização de memória da GPU. Se o vLLM relatar erros de OOM, reduza ainda mais esses valores.
Quando a inicialização for bem-sucedida, o script inicia:
- a API principal VLM compatível com OpenAI na porta
7060 - o modelo de resumo na porta
8065 - o adaptador de streaming na porta
8070 - a WebUI na porta
8099
Etapa 7. Abrir a WebUI
Abra um navegador no Jetson Thor e acesse:
https://<jetson-thor-ip>:8099

A WebUI usa um certificado autoassinado por padrão, portanto seu navegador pode mostrar um aviso de certificado na primeira visita. Aceite o aviso e continue.
Você pode então:
- selecionar uma webcam USB no navegador
- inserir uma URL de stream RTSP
- iniciar a interação de vídeo em tempo real com JoyAI-VL-Interaction
Verificar a Implantação
Abra outro terminal e execute as seguintes verificações de integridade:
curl http://127.0.0.1:7060/v1/models
curl http://127.0.0.1:8065/v1/models
curl http://127.0.0.1:8070/health
Se todos os serviços estiverem funcionando corretamente, o frontend da WebUI deverá conseguir se conectar ao adaptador de streaming em:
http://127.0.0.1:8070/v1
Demonstração
Solução de Problemas
1. hf: command not found
Certifique-se de que o caminho local do binário está carregado:
source $HOME/.local/bin/env
export PATH="$HOME/.local/bin:$PATH"
2. vllm==0.22.0 ou vllm-omni==0.22.0 falha em ARM64
O projeto upstream é projetado em torno de serviços baseados em vLLM. Se a instalação padrão via pip ou uv falhar no Jetson ARM64, compile vllm ou vllm-omni a partir do código-fonte ou mude para um contêiner CUDA ARM64 que já inclua o runtime correspondente.
3. A WebUI abre, mas a inferência retorna 502
Isso geralmente significa que o frontend do navegador está ativo, mas os serviços de modelo de backend ainda não estão prontos. Verifique novamente:
curl http://127.0.0.1:7060/v1/models
curl http://127.0.0.1:8065/v1/models
curl http://127.0.0.1:8070/health
Referências
- Repositório GitHub JoyAI-VL-Interaction
- JoyAI-VL-Interaction Primeiros Passos
- JoyAI-VL-Interaction WebInfer README
- Guia de Instalação do vLLM
- Repositório vLLM Omni
Suporte Técnico & Discussão de Produto
Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

