メインコンテンツまでスキップ

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 システムがすでにフラッシュ済みで、正常に起動し、インターネットにアクセスできることを前提としています。

NVIDIA Jetson AGX Thor Developer Kit USB Camera

はじめに(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

参考資料

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます。製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートをご用意しています。お好みやニーズに合わせて選べる複数のコミュニケーションチャネルを提供しています。

Loading Comments...