batch : fix consistency checks for the input positions (#16890)

This commit is contained in:
Georgi Gerganov
2025-10-31 13:50:33 +02:00
committed by GitHub
parent c22473b580
commit 8da3c0e200

View File

@@ -261,15 +261,29 @@ bool llama_batch_allocr::init(
const llama_pos p0 = memory ? memory->seq_pos_max(s) : -1; const llama_pos p0 = memory ? memory->seq_pos_max(s) : -1;
if (p0 >= 0 && p0 >= seq_pos_min(s)) { if (batch.token) {
LLAMA_LOG_ERROR( if (p0 >= 0 && p0 >= seq_pos_min(s)) {
"%s: the tokens of sequence %d in the input batch have inconsistent sequence positions:\n" LLAMA_LOG_ERROR(
" - the last position stored in the memory module of the context (i.e. the KV cache) for sequence %d is X = %d\n" "%s: the tokens of sequence %d in the input batch have inconsistent sequence positions:\n"
" - the tokens for sequence %d in the input batch have a starting position of Y = %d\n" " - the last position stored in the memory module of the context (i.e. the KV cache) for sequence %d is X = %d\n"
" for M-RoPE, it is required that the position satisfies: X < Y\n", " - the tokens for sequence %d in the input batch have a starting position of Y = %d\n"
__func__, s, s, p0, s, seq_pos_min(s)); " for M-RoPE, it is required that the position satisfies: X < Y\n",
__func__, s, s, p0, s, seq_pos_min(s));
return false; return false;
}
} else {
// embedding inputs can have overlapping positions
if (p0 >= 0 && p0 > seq_pos_min(s)) {
LLAMA_LOG_ERROR(
"%s: the tokens of sequence %d in the input batch have inconsistent sequence positions:\n"
" - the last position stored in the memory module of the context (i.e. the KV cache) for sequence %d is X = %d\n"
" - the tokens for sequence %d in the input batch have a starting position of Y = %d\n"
" for M-RoPE, it is required that the position satisfies: X <= Y\n",
__func__, s, s, p0, s, seq_pos_min(s));
return false;
}
} }
} }
} else { } else {