Add vLLM Usage section (vLLM-Omni day-0 support)
Browse files
README.md
CHANGED
|
@@ -21,3 +21,29 @@ Most large models today are **turn-based**: they answer only when you ask. But m
|
|
| 21 |
The decision of *when to act* is **learned inside the model** (from second-by-second time-aligned data + RL), not bolted on by an external turn-detector or polling loop. Vision is the first-class driver; speech (ASR/TTS) is treated as pluggable I/O.
|
| 22 |
|
| 23 |
To our knowledge, this is the **first open, vision-driven interaction model** released together with its training recipe, data, and a complete deployable system.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
The decision of *when to act* is **learned inside the model** (from second-by-second time-aligned data + RL), not bolted on by an external turn-detector or polling loop. Vision is the first-class driver; speech (ASR/TTS) is treated as pluggable I/O.
|
| 22 |
|
| 23 |
To our knowledge, this is the **first open, vision-driven interaction model** released together with its training recipe, data, and a complete deployable system.
|
| 24 |
+
|
| 25 |
+
---
|
| 26 |
+
## vLLM Usage
|
| 27 |
+
|
| 28 |
+
[vLLM-Omni](https://github.com/vllm-project/vllm-omni) provides **day-0 support** for JoyAI-VL-Interaction! The model is a standard Qwen3-VL VLM served by a plain `vllm serve`; vLLM-Omni adds the real-time interaction layer on top — the per-second **speak / silence / delegate** orchestration, 3-tier summary memory, and pluggable ASR / TTS / delegation. For installation and full setup (browser demo, RTSP input, delegation, ASR/TTS), see the [vLLM-Omni recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/JD/JoyAI-VL-Interaction.md).
|
| 29 |
+
|
| 30 |
+
### Online Serving
|
| 31 |
+
|
| 32 |
+
```bash
|
| 33 |
+
# git clone https://github.com/vllm-project/vllm-omni.git
|
| 34 |
+
|
| 35 |
+
# 1. Serve the model (plain `vllm serve`, NOT --omni — it is vanilla Qwen3-VL)
|
| 36 |
+
vllm serve jdopensource/JoyAI-VL-Interaction-Preview \
|
| 37 |
+
--served-model-name JoyAI-VL-Interaction-Preview --port 8061 \
|
| 38 |
+
--max-model-len 131072 --enable-prefix-caching --limit-mm-per-prompt '{"image":256,"video":1}'
|
| 39 |
+
|
| 40 |
+
# 2. Start the interaction orchestrator (OpenAI-compatible, :8070)
|
| 41 |
+
python -m vllm_omni.experimental.fullduplex.joyvl.serving.server --port 8070 \
|
| 42 |
+
--main-backend-url http://127.0.0.1:8061/v1 --main-model JoyAI-VL-Interaction-Preview
|
| 43 |
+
|
| 44 |
+
# 3. (optional) launch the self-contained Gradio demo
|
| 45 |
+
pip install vllm-omni[demo]
|
| 46 |
+
python vllm-omni/examples/online_serving/joyvl_interaction/app.py --server http://127.0.0.1:8070
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
Send one frame per turn (~1 fps) to `/v1/chat/completions` with an `x-session-id` header and an optional standing instruction; each reply's `interaction.action` is `silence` / `response` / `delegate`. See the recipe for the full client and capability examples.
|