Repository navigation
live: full-duplex personaplex-7b over gpt-live websocket sessions - #7
Merged
Merged
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
xiaguan
force-pushed
the
personaplex-live
branch
from
September 26, 2026 06:35
21fa32d to
f137d47
Compare
Full-duplex serving end to end: a live engine contract next to the speech one, OpenAI's GPT-Live WebSocket protocol, a browser demo, a simulated live engine, a duplex load generator, and the first live GPU engine, NVIDIA PersonaPlex-7B, with every session advancing one 80 ms frame per tick in one CUDA graph. - omni-engine::live: sessions over a channel; frame n of a session is the nth frame the engine ran, so the agent's audio is one contiguous stream; a per-session jitter buffer that plays out after a prebuffer, refills it when it runs dry and discards the caller's audio of overrun ticks; a drift-free clock that skips overrun ticks instead of bursting. `drive` is the loop both live engines run (clock, admission, `Pulse` counters) over a `Ticker`, and `Line` is a running session (jitter buffer, frame count, expiry, outputs). Property-tested. - omni-frontend: `/v1/live/sessions` (GPT-Live events, strict parsing, errors naming the param, unsupported events refused by name, `server_busy` keeping the socket for a retry, mute forwarding silence), the demo at `/` (call UI with an orb, chat, device pickers, and the engine's live load from `/live/stats`), tick counters in /metrics. The socket's paths are tested against an engine the test plays by hand. `tools/live_check.py` is the protocol oracle; CI runs it and a duplex ramp against `sim-live`. - omni-sim::live: the CPU live engine, a pure per-session echo core (the caller late, a word per half second heard) under `drive`. - omni-bench duplex: concurrent sessions at real time, frame lateness and playback underrun per level, `--ramp` to find capacity. - omni-kern: the manifest builder, weight loading, common kernels and the host-side helpers moved out of omni-qwen3-tts so both GPU engines share them. - omni-personaplex: Mimi encoder, Helium, depformer and Mimi decoder with their own kernels; each session a fixed ring of the model's 3000-frame context plus its streaming codec state. The engine leases a session on arrival and prefills it in the next tick, batched (`batches`); the role prompt limit is derived so any allowed prompt fits the context. `tests/golden.rs` checks the serving path against the reference run; `tests/host.rs` covers batching, the tokenizer, the voice reader and the prompt without a checkpoint, so CI runs it. - `pega-omni personaplex` behind the `personaplex` feature. - docs: duplex.md (how full duplex works, protocol, options, design choices), personaplex.md, a PersonaPlex section in bench.md. One GB300: 128 concurrent sessions with no playback underrun and no late tick once warm; a tick takes 15 ms of its 80. Dependencies: axum's `ws` feature (the live endpoint on the same server and connection handling as HTTP); tokio-tungstenite for omni-bench's live client (the tungstenite stack axum's `ws` already builds on). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: JinYan Su <751080330@qq.com>
xiaguan
force-pushed
the
personaplex-live
branch
from
September 26, 2026 07:02
f137d47 to
8cf8f8a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Full-duplex serving, end to end: NVIDIA PersonaPlex-7B over OpenAI's GPT-Live WebSocket protocol, with a browser demo.
What
omni-engine::livedriveis the one loop both live engines run (clock, admission,Pulsecounters) over aTicker;Lineis a running session. Property-tested.omni-frontendGET /v1/live/sessions(GPT-Live: strictsession.start, errors naming theparam, unsupported events refused by name,server_busykeeps the socket for a retry, mute forwards silence). Demo page at/.GET /live/configandGET /live/stats. Tick counters in/metrics. The socket's paths (abort, engine stop, close grace, close before start, full queue, mute) are tested against an engine the test plays by hand.omni-sim::livedrive.omni-bench duplex--rampfinds capacity.omni-kernomni-qwen3-ttsso both GPU engines share them.omni-personaplextests/host.rscovers batching, the tokenizer, the voice reader and the prompt without a checkpoint, so CI runs it.pega-omni personaplexpersonaplexfeature.tools/live_check.pysim-live.docs/duplex.md: how full duplex works, the protocol, options, design choices.personaplex.md: the engine. PersonaPlex section inbench.md.Correctness
crates/omni-personaplex/tests/golden.rsruns the serving path against the reference implementation's recorded run. It uses three sessions: two in lockstep (bit-identical to each other) and one joining mid-run.The qwen3-tts golden test still passes after the
omni-kernmove.Performance (one GB300)
128 concurrent full-duplex sessions, each streaming real speech at real time, run clean:
The ceiling is memory (1.5 GiB of KV per session), not compute. Details are in
docs/bench.md.Try it
cargo build --release -p omni-server --features personaplex target/release/pega-omni personaplex --model-path personaplex-7b-v1 # open http://127.0.0.1:8000/ (for a remote GPU: ssh -L 8000:127.0.0.1:8000)🤖 Generated with Claude Code