Jetson Thor で JoyAI-VL-Interaction をデプロイする
はじめに
JoyAI-VL-Interaction は、オープンなリアルタイム動画と言語インタラクションシステムです。ストリーミング VLM バックエンド、ブラウザベースの WebUI、オプションの ASR/TTS サービス、長文コンテキストメモリパイプラインを組み合わせることで、モデルがライブ映像を見ながら適切なタイミングで応答できるようにします。
2026年7月7日時点で、上流の JoyAI-VL-Interaction リポジトリでは、NVIDIA Hopper シリーズ GPU 上でテストされていると記載されています。このWikiでは、実用的な Jetson AGX Thor への適用パスに焦点を当てます。まず Thor のシングルGPU上に 最小スタック(webinfer + webui)を先に デプロイし、その後コアパイプラインが安定してから音声サービスを拡張します。

前提条件
- NVIDIA Jetson AGX Thor Developer Kit 1台
- USB カメラ 1台、または RTSP ストリームソース
- キーボード、マウス、モニタ、およびネットワーク接続
- Python 環境、モデルの重み、ログ用に少なくとも 30 GB の空きストレージ
このガイドでは、Jetson Thor システムがすでにフラッシュ済みで、正常に起動し、インターネットにアクセスできることを前提としています。
はじめに(Getting Started)
ステップ 1. Jetson Thor システムを準備する
Jetson Thor 上でターミナルを開き、必要なシステムパッケージをインストールします:
sudo apt update
sudo apt install -y git git-lfs curl ffmpeg python3-pip python3.12-venv
git lfs install
Jetson でより良い推論性能を得るために、デバイスを高性能電力モードに切り替えます:
sudo nvpmodel -m 0
sudo jetson_clocks
JoyAI-VL-Interaction は Python 3.12 を標準としているため、このガイドでも Thor 上で同じバージョンを使用します。
ステップ 2. uv と Hugging Face CLI をインストールする
上流のインストールスクリプトは uv を使用しており、モデルダウンロードスクリプトは hf コマンドを想定しています。
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uv tool install "huggingface_hub[cli]"
hf --version
それでも hf が見つからない場合は、ターミナルを再度開くか、次を実行します:
export PATH="$HOME/.local/bin:$PATH"
ステップ 3. JoyAI-VL-Interaction リポジトリをクローンする
git clone https://github.com/jd-opensource/JoyAI-VL-Interaction.git
cd JoyAI-VL-Interaction
ステップ 4. ランタイムをインストールする
まず、コアとなる WebUI とストリーミング推論環境のみをインストールします:
./install/install.sh --with-all
このスクリプトは services/.venv 配下に共有仮想環境を作成し、プロジェクトで必要とされる固定バージョンの vllm==0.22.0 ランタイムをインストールします。

もし Jetson ARM64 上で vllm==0.22.0 のインストールに失敗した場合は、デフォルトのホイールベースのフローを続行しないでください。その場合は、まず公式の vLLM ARM64/ソースビルド手順に切り替え、その後このガイドに戻ってください。
ステップ 5. モデルの重みをダウンロードする
ここでは GitHub の README に従って、すべてのモデルの重みをダウンロードします:
./install/download-models.sh --all
デフォルトでは、モデルは次の場所にダウンロードされます:
/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
ステップ 6. Thor 上で最小構成の JoyAI スタックを起動する
上流のデフォルト GPU レイアウトは、複数 GPU を前提としています:
- メインモデルは GPU
0 - 要約モデルは GPU
1 - オプションの ASR/TTS は GPU
2
Jetson Thor は シングルGPU プラットフォームであるため、メインモデルと要約モデルの両方を GPU 0 上に配置し、保守的なメモリ設定から開始する必要があります。
ここでは、Jetson 上で 4 つのターミナルを開き、それぞれで以下のコマンドを実行する必要があります。
- ターミナル1:
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 - ターミナル2:
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
ターミナル 3 でコマンドを実行し続ける前に、ターミナル 2 が完全に起動するまで待つ必要があることに注意してください。
ターミナル 2 で次のコマンドを使用して、ランタイムログを確認できます:
tail -f /home/seeed/JoyAI-VL-Interaction/services/webinfer/summary_vllm_logs/vllm_8065.log

- ターミナル3:
source /home/seeed/JoyAI-VL-Interaction/services/.venv/bin/activate
cd services/webinfer
bash scripts/run.sh adapter - ターミナル4:
source /home/seeed/JoyAI-VL-Interaction/services/.venv/bin/activate
cd services/webui
bash scripts/start_server.sh
これらの値は、シングルGPUデプロイ向けに Thor を意識した初期設定です。サービスが安定して起動するようであれば、GPU メモリ使用率を徐々に増やすことができます。vLLM が OOM エラーを報告する場合は、これらの値をさらに下げてください。
起動に成功すると、スクリプトは次を起動します:
- ポート
7060上のメイン VLM OpenAI 互換 API - ポート
8065上の要約モデル - ポート
8070上のストリーミングアダプタ - ポート
8099上の WebUI
ステップ 7. WebUI を開く
Jetson Thor 上でブラウザを開き、次にアクセスします:
https://<jetson-thor-ip>:8099

WebUI はデフォルトで自己署名証明書を使用しているため、初回アクセス時にブラウザが証明書警告を表示する場合があります。警告を受け入れて続行してください。
その後、次のことができます:
- ブラウザで USB ウェブカメラを選択する
- RTSP ストリーム URL を入力する
- JoyAI-VL-Interaction を使ってリアルタイム動画インタラクションを開始する
デプロイを検証する
別のターミナルを開き、次のヘルスチェックを実行します:
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
すべてのサービスが正しく動作していれば、WebUI フロントエンドは次のストリーミングアダプタに接続できるはずです:
http://127.0.0.1:8070/v1
デモ
トラブルシューティング
1. hf: command not found
ローカルバイナリパスが読み込まれていることを確認します:
source $HOME/.local/bin/env
export PATH="$HOME/.local/bin:$PATH"
2. vllm==0.22.0 または vllm-omni==0.22.0 が ARM64 で失敗する
上流プロジェクトは vLLM ベースのサービスを前提として設計されています。Jetson ARM64 上でデフォルトの pip または uv インストールが失敗する場合は、vllm または vllm-omni をソースからビルドするか、対応するランタイムをすでに含んだ ARM64 CUDA コンテナに切り替えてください。
3. WebUI は開くが、推論が 502 を返す
これは通常、ブラウザフロントエンドは起動しているものの、バックエンドのモデルサービスがまだ準備できていないことを意味します。次を再確認してください:
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
参考資料
- JoyAI-VL-Interaction GitHub リポジトリ
- JoyAI-VL-Interaction 入門ガイド
- JoyAI-VL-Interaction WebInfer README
- vLLM インストールガイド
- vLLM Omni リポジトリ
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます。製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートをご用意しています。お好みやニーズに合わせて選べる複数のコミュニケーションチャネルを提供しています。

