ReMoM (Reasoning for Mixture of Models)
Overview
remom is a looper algorithm for breadth-controlled multi-model orchestration with intelligent synthesis. It performs multi-round parallel reasoning and synthesizes the best answer from all responses.
It aligns to config/algorithm/looper/remom.yaml.
The runtime also supports a direct ReMoM model slug through
global.integrations.looper.remom.model_names. The built-in default is
vllm-sr/remom. Direct ReMoM calls evaluate only decisions with
algorithm.type=remom, matching the direct Fusion and Flow model surfaces.
Inspired by: PaCoRe — extended to support mixture of models.
Key Advantages
- Multi-round parallel reasoning with configurable breadth schedule.
- Intelligent synthesis from multiple model responses.
- Model distribution strategies:
weighted,equal,round_robin, orfirst_only. - Compaction strategy to manage token budgets across rounds.
- Optional quorum and round timeout controls to avoid waiting on provider long tails.
- Customizable synthesis templates.
Algorithm Principle
ReMoM orchestrates multiple rounds of parallel model calls:
- Round 1: Launch
breadth_schedule[0]parallel calls across candidate models. - Compaction: Optionally compact intermediate responses (full or last_n_tokens).
- Round 2: Launch
breadth_schedule[1]calls, feeding compacted responses as context. - Final Synthesis: One final call synthesizes all intermediate results into a coherent answer.
ReMoM backend subrequests are non-streaming so each round receives complete outputs. A streaming client response is emitted only after final synthesis.
The breadth schedule controls how many calls happen per round. For example [32, 4] means 32 calls in round 1, 4 in round 2, then 1 final synthesis call.
Execution Flow
Model Distribution Strategies
| Strategy | Description |
|---|---|
weighted | Distribute calls proportional to model weights in modelRefs |
equal | Distribute calls equally across all candidate models |
round_robin | Cycle through candidate models in configured order |
first_only | All calls go to the first (highest-weight) model |