1. Model Introduction
JoyAI-Echo is an 8-step long-form audio-video model built on LTX-2. Its paired memory bank carries decoded visual context and audio latents across prompt changes, making it strongest for multi-shot, minute-scale sequences that need continuity in both picture and soundtrack. Choose JoyEcho over a standard LTX pipeline when shots must share audiovisual memory. Its distilled 832×480 path prioritizes long-form continuity and throughput rather than the higher-resolution two-stage quality modes offered by LTX-2.3. SGLang materializes the Echo 1.0 monolithic release through the built-in JoyAI-Echo overlay. Prepare the pinned checkpoint below before running the examples.2. SGLang-diffusion Installation
Install SGLang with diffusion dependencies:3. Model Deployment
3.1 Prepare the Echo 1.0 checkpoint
The native overlay requiresJoyAI-Echo-release.safetensors. The upstream repository’s Echo 1.5 revision does not contain that file. Download the Echo 1.0 revision into the Hugging Face cache:
--model-path and keep --model-id jdopensource/JoyAI-Echo when using local weights. The model ID lets BCG select JoyEcho’s support policy. Initial startup also downloads and materializes the overlay and its text encoder dependencies.
3.2 Serve the model
JoyEcho uses the defaultJoyEchoPipeline registered for jdopensource/JoyAI-Echo. A single high-VRAM GPU (for example H100 or H200) is enough for the common 832x480 / 121-frame / 8-step setting.
enable_memory_bank=true are supported on SP.
JoyEcho SP currently targets Ulysses-only parallelism (
ulysses_degree=2, ring_degree=1). Ring SP is not validated for this pipeline. For sglang generate, add --num-gpus 2 --ulysses-degree 2 to the commands in section 4.4. Model Invocation
4.1 Default sampling
4.2 Single-shot text-to-video
4.3 Multi-shot generation
JoyEcho does not generate all shots in one forward pass. Each shot is one generation request. Continuity is carried by an in-process memory bank on the pipeline instance. Typical workflow:- Shot 0 — memory bank is empty; the model generates a standalone A/V clip.
- After decode — decoded video frames and packed audio latents are committed to the memory bank (up to 7 slots by default).
- Shot 1+ — prior-shot frames are re-encoded and prepended as a memory prefix before denoising.
- Per-shot seeding — official semantics use
prompt_seed = base_seed + shot_index.
--prompt-path:
4.4 Memory bank controls
Set
enable_memory_bank=false when you want independent shots without cross-shot continuity.
4.5 Measured two-H200 single-shot configuration
For short independent clips, keep the text and audio/video components on GPU with--component-residency=all=resident. Full-stage profiles showed that this removes repeated host-to-device weight copies between component uses.
The following configuration was measured on two H200s with Ulysses degree 2, TP1, PyTorch 2.11.0+cu130, 640x384, 33 frames, 8 steps and seed 42. It disables compilation and the memory bank:
--enable-breakable-cuda-graph --warmup-resolutions 640x384 --warmup-num-frames 33. Check for successful [Diffusion BCG] captured logs and absence of request signature misses. Keep the same model ID, resolution, frame count and quality as warmup.
Two fresh-process saved requests per configuration, after request warmup:
Loading, warmup and profiling are excluded from these timings. The paired eager profiles remove 71 pinned host-to-device copies (13.07 GB, 278.86 ms on the profiled rank), with the same 77,045 kernel launches. All eight lossless outputs have pixel-identical video frames; audio differences are comparable to baseline repeat variability. These results cover this compact single-shot workload, rather than the default 121-frame or multi-shot memory-bank workload.
Use
quality=lossless for this recipe. High-mode output did not pass the separate quality comparison, and high + BCG is rejected by the runtime. If a larger request exceeds available memory, return to auto residency or keep only selected components resident.
5. Practical Tips
- Use
--num-inference-steps 8and--guidance-scale 1.0to match the official JoyEcho DMD distilled path. - Multi-shot prompts can be passed as a
promptlist, viaprompt_path, or as sequential API calls on the same server instance. - The memory bank caps at 7 slots; from shot 8 onward the oldest slots roll off.
- For 2-GPU latency, try Ulysses SP (
--num-gpus 2 --ulysses-degree 2) on both single-shot and multi-shot runs. Use TP when you need a different sharding strategy or more than two GPUs. - Set
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:Truefor long multi-shot SP sessions. - JoyEcho outputs per-shot mp4 files with synchronized audio. There is no built-in two-stage HQ upscaling path like LTX-2.3 HQ.
