vllm-project/vllm · error

engine count must be at least 1

Error message

engine count must be at least 1

What it means

Thrown by Config::validate() when the transport mode is TransportMode::Bootstrapped (this frontend serves a slice of engines started elsewhere) and the configured engine_count is 0. A bootstrapped frontend must front at least one engine.

Source

Thrown at rust/src/server/src/config.rs:266

                self.data_parallel_size
            );
        }
        match &self.transport_mode {
            TransportMode::HandshakeOwner { engine_count, .. } => {
                if *engine_count != self.data_parallel_size {
                    bail!(
                        "managed frontend engine count ({engine_count}) must equal data parallel size ({})",
                        self.data_parallel_size
                    );
                }
            }
            TransportMode::Bootstrapped {
                engine_start_index,
                engine_count,
                ..
            } => {
                if *engine_count == 0 {
                    bail!("engine count must be at least 1");
                }
                let engine_start_index = usize::try_from(*engine_start_index)
                    .map_err(|_| anyhow::anyhow!("engine start index does not fit usize"))?;
                let engine_end_index =
                    engine_start_index.checked_add(*engine_count).ok_or_else(|| {
                        anyhow::anyhow!("engine start index + engine count overflows")
                    })?;
                if engine_end_index > self.data_parallel_size {
                    bail!(
                        "connected engine range [{engine_start_index}, {engine_end_index}) exceeds data parallel size {}",
                        self.data_parallel_size
                    );
                }
            }
        }

        Ok(())
    }

View on GitHub (pinned to c794754062)

Solutions

  1. Ensure this frontend instance is assigned at least one engine (engine_count >= 1).
  2. Fix the distribution logic: use ceil-division or skip spawning frontends that would get zero engines.
  3. Verify the bootstrap arguments order and values in your launcher.

Example fix

# before
engine_count = 0

# after
engine_count = 1
Defensive patterns

Strategy: validation

Validate before calling

if let TransportMode::Bootstrapped { engine_count, .. } = &config.transport_mode {
    assert!(*engine_count >= 1, "bootstrapped engine count must be >= 1");
}

Type guard

fn bootstrapped_count_is_valid(config: &Config) -> bool {
    match &config.transport_mode {
        TransportMode::Bootstrapped { engine_count, .. } => *engine_count >= 1,
        _ => true,
    }
}

Prevention

When it happens

Trigger: Launching a bootstrapped frontend instance whose engine-count assignment (e.g. from a scheduler dividing engines across frontends) computed to 0. The check runs before the start-index range checks.

Common situations: A supervisor distributing N engines over M frontends with rounding that yields 0 for some instance; a config template defaulting engine count to 0; misordered bootstrap arguments shifting values.

Related errors


AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14). Data as JSON: /api/errors/1a9e168fec88b18c. Report an issue: GitHub.