mirror of
https://github.com/ikawrakow/ik_llama.cpp.git
synced 2026-06-28 04:30:15 -05:00
perplexity : fix large-vocab logit offset overflow (#1717)
Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
parent
1b14f56693
commit
9c7d8b07cc
@ -207,7 +207,9 @@ static void process_logits(std::ostream& out, int n_vocab, const float * logits,
|
||||
break;
|
||||
}
|
||||
lock.unlock();
|
||||
const double v = log_softmax(n_vocab, logits + i*n_vocab, log_probs.data() + int64_t(i)*nv, tokens[i+1]);
|
||||
const size_t logits_offset = size_t(i)*size_t(n_vocab);
|
||||
const size_t probs_offset = size_t(i)*size_t(nv);
|
||||
const double v = log_softmax(n_vocab, logits + logits_offset, log_probs.data() + probs_offset, tokens[i+1]);
|
||||
local_nll += v;
|
||||
local_nll2 += v*v;
|
||||
}
|
||||
@ -453,9 +455,11 @@ static results_perplexity perplexity_v2(llama_context * ctx, const gpt_params &
|
||||
for (int j = n_ctx - params.ppl_stride - 1; j < n_ctx - 1; ++j) {
|
||||
|
||||
// Calculate probability of next token, given the previous ones.
|
||||
const size_t offset = size_t(j)*size_t(n_vocab);
|
||||
const float * tok_logits_begin = logits.data() + offset;
|
||||
const std::vector<float> tok_logits(
|
||||
logits.begin() + (j + 0) * n_vocab,
|
||||
logits.begin() + (j + 1) * n_vocab);
|
||||
tok_logits_begin,
|
||||
tok_logits_begin + n_vocab);
|
||||
|
||||
const float prob = softmax(tok_logits)[tokens[start + j + 1]];
|
||||
logit_history[start + j + 1] = tok_logits[tokens[start + j + 1]];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user