Pular para o conteúdo principal

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
nota

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
info

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.

nota

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
perigo

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
info

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

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.

Loading Comments...