A 1.3B world model running at 16.1 FPS on one RTX 5090. 2.7× faster than the original paper's code with lossless performance.
Measured with lingbot bench on a stock RunPod RTX 5090 (2026-09-17).
~15 min on Linux, needs a Hugging Face token to download the weights.
git clone https://github.com/kaarelkaarelson/lingbot-world-v2-realtime
cd lingbot-world-v2-realtime
HF_TOKEN=hf_... ./setup.sh && . .venv/bin/activatelingbot play dragonThe first start compiles for about 2.5 min, later starts take 35 s.
Nothing about the model changed. The checkpoint, the sampler and the decoder are upstream's, with the same 4 steps, chunks of 4 latents and a KV window of 18 frames. I worked through the stack from the top down, cheapest and most general layer first, measured each step, and stopped at the kernel boundary. The table shows seconds per chunk after each step in the order they were applied. A chunk is 16 frames, one second of video.
The table compares the original paper's code with ours, per chunk. GPU busy and kernel launches come from profiler traces of both, described in sections 13 and 17 of OPTIMIZATIONS.md. Host syncs are counted over three chunks.
What is left runs in four kernels written by others, and three of them are near the card's peak. Attention has the most room. A hand written kernel at 90 % of peak would gain about one frame per second, so there is none. The details are in section 17 of OPTIMIZATIONS.md. The peaks are from NVIDIA's RTX 5090 specification.
The result is lossless. Four of the six steps are bit identical to the paper's code, and FP8 and the attention kernel were checked on identical inputs. PSNR, SSIM and LPIPS compare the same latents decoded by the paper's fp32 decoder and by ours. The rest are no reference metrics on the generated clips, measured on the first and last second. The numbers are in quality_summary.tsv from experiment 15.
OPTIMIZATIONS.md is the full log. It has every experiment with its measurement, the profiles, and the levers that were tried and rejected.
pytest tests/ runs on the CPU, no GPU needed. It checks the fused decoder and DiT against the stock modules and runs lingbot play --dry on a stand in model.
This repository is derived from LingBot-World 2.0 by the Robbyant team, whose paper is by Zelin Gao and others. The model, the sampler and the examples are theirs. The weights are theirs too and are not redistributed here. Upstream is licensed under CC BY-NC-SA 4.0, and so is this repository, see LICENSE.txt. That means non commercial use, attribution, and the same license for anything built on it. It is provided as is, without warranty. My changes are the inference patches listed under Optimizations and the lingbot CLI, applied on upstream commit 1895d30. The wan/ directory is upstream's copy of Wan2.2, which is Apache 2.0. The kernels used are SageAttention, torchao and FlashAttention.
@article{lingbot-world-v2,
title = {Infinite Worlds with Versatile Interactions},
author = {Zelin Gao and Qiuyu Wang and Jiapeng Zhu and Jingye Chen and Zichen Liu and Qingyan Bai and Jiahao Wang and Yufeng Yuan and Hanlin Wang and Yichong Lu and Ka Leong Cheng and Haojie Zhang and Jian Gao and Tianrui Feng and Yuzheng Liu and Yao Yao and Yinghao Xu and Xing Zhu and Yujun Shen and Hao Ouyang},
journal = {arXiv preprint arXiv:2607.07534},
year = {2026}
}