vllm-project/vllm · error · Error
cannot continue the final message when the last message is n
Error message
cannot continue the final message when the last message is not from the assistant
What it means
The pynccl EPLB path requires a healthy PyNCCL communicator on the device group (pynccl_comm exists, is not disabled, and reports available). One of those conditions failed, so the requested backend cannot be used.
Source
Thrown at rust/src/chat/src/error.rs:14
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright contributors to the vLLM project
use thiserror::Error;
use thiserror_ext::{AsReport as _, Macro};
type BoxedError = Box<dyn std::error::Error + Send + Sync>;
#[derive(Debug, Error, Macro)]
#[thiserror_ext(macro(path = "crate::error"))]
pub enum Error {
#[error("chat request must contain at least one message")]
EmptyMessages,
#[error("cannot continue the final message when the last message is not from the assistant")]
ContinueFinalAssistantWithoutFinalAssistant,
#[error("chat template is required but none was configured")]
MissingChatTemplate,
#[error("chat template error: {0}")]
ChatTemplate(String),
#[error("multimodal input is not supported by this chat renderer")]
UnsupportedMultimodalRenderer,
#[error("unsupported multimodal content: {0}")]
UnsupportedMultimodalContent(&'static str),
#[error("`{modality}` input is not supported by this model")]
UnsupportedModality { modality: String },
#[error("At most {limit} {modality}(s) may be provided in one prompt.")]
MmLimitExceeded { modality: String, limit: usize },
#[error("multimodal preprocessing error: {0}")]
Multimodal(#[message] String),
#[error("{kind} parsing is not available for model `{model_id}`")]
ParserUnavailableForModel {
kind: &'static str,View on GitHub (pinned to c794754062)
Solutions
- Verify device group init succeeded and pynccl was not disabled (check startup logs for pynccl initialization lines)
- Use backend='torch_nccl', which uses torch.distributed NCCL instead of PyNCCL
- Reinstall a vLLM build that includes the pynccl extension if logs show it failed to load
Example fix
# before backend = "pynccl" # pynccl disabled in this process # after backend = "torch_nccl"
Defensive patterns
Strategy: validation
Validate before calling
comm = group_coordinator.device_communicator pynccl = getattr(comm, 'pynccl_comm', None) if comm else None usable = pynccl is not None and not pynccl.disabled and pynccl.available backend = 'pynccl' if usable else 'torch_nccl'
Prevention
- Check pynccl availability in startup logs before configuring it
- Keep torch_nccl as the fallback backend choice in deployment configs
When it happens
Trigger: Creating the pynccl EPLB communicator when vLLM was started with VLLM_USE_V1/or config paths that disable pynccl, when the pynccl build was unavailable at group init, or on platforms where the pynccl extension did not load.
Common situations: Custom builds without the pynccl extension; a distributed init path that never created device_communicator.pynccl_comm; the pynccl comm was disabled via config because another backend owns NCCL.
Related errors
- Image generation should not fail
- chat request must contain at least one message
- chat template is required but none was configured
- {self.communicator} communicator is incompatible with async
- Configuration error: {0}
AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14).
Data as JSON: /api/errors/0998a3b6641af9e5.
Report an issue: GitHub.