Serve reasoning as a tree.
AutoTree forks KV cache mid-generation, prunes weak branches with instant memory reclaim, and holds every request to a hard token budget. Open source, Apache-2.0, adoption is one base_url change.
Available on RunInfra to optimize and deploy any HuggingFace model.
Every number ships with its model, hardware, workload, and configs in the repository. No exceptions.
Branching is nearly free
The tree-attention kernel scales close to linearly with branch count: exploring 32 candidates costs about as much per candidate as exploring one.
What only a tree engine can do
Prefix caching shares prompts. It cannot share what has not been generated yet. Tree execution shares the reasoning itself.
| Capability | AutoTree | vLLM | SGLang | TRT-LLM |
|---|---|---|---|---|
| OpenAI-compatible API | ✓ | ✓ | ✓ | ✓ |
| Prefix / radix caching | ✓ | ✓ | ✓ | ✓ |
| Continuous batching | ✓ | ✓ | ✓ | ✓ |
| Mid-generation KV fork (token granularity) | ✓ | - | - | - |
| Mid-flight prune with instant page reclaim | ✓ | - | - | - |
| Hard token budget across a branch family | ✓ | - | - | - |
| Tree policies (beam / best-first / MCTS) in the scheduler | ✓ | - | - | - |
| Branch-level value-scorer hook | ✓ | - | - | - |
| Native tree endpoint (/v1/tree/completions) | ✓ | - | - | - |
Compare what is measured today
AutoTree internal validation and token ablations are shown with their exact regimes. Comparison numbers against vLLM and SGLang land only with raw logs and one-command repro, so those rows stay visibly pending until the evidence ships.
Migrate in one line
Keep the OpenAI client and sampling controls your application already uses. Point base_url at AutoTree, then opt into tree execution per request.
Measured, not projected
Every claim carries its regime. Full head-to-head benchmarks against stock vLLM and SGLang, with their best flags on, are running now and will be published here with raw logs and one-command repro.
| Metric | Result | Regime |
|---|---|---|
| KV reuse ratio, end to end | 8.79x | H100, Qwen3-8B bf16, MATH-500, beam-8, 3 seeds |
| Tree-attention kernel branch scaling, 1 to 32 branches | 31.6x | A100, bf16, context 128, kernel microbenchmark |
| Triton kernel parity vs reference implementation | 106 / 106 tests | A100, all dtypes and GQA ratios |
| Greedy token parity vs stock HuggingFace | exact | Qwen3-8B, CUDA bf16 |
We publish our negatives too: naive log-probability branch selection loses to sequential sampling on solvable tasks. That measured baseline is exactly what the pluggable value scorer exists to beat. Details in the repository.