llama: move suppress_tokens handling to common/sampling

This commit is contained in:
Xuan Son Nguyen
2026-07-29 15:09:21 +02:00
parent caa596ab3f
commit b1f192ff4a
4 changed files with 27 additions and 39 deletions
+16 -2
View File
@@ -310,8 +310,22 @@ struct common_sampler * common_sampler_init(const struct llama_model * model, st
}
}
if (params.has_logit_bias()) {
samplers.push_back(llama_sampler_init_logit_bias(llama_vocab_n_tokens(vocab), params.logit_bias.size(), params.logit_bias.data()));
// logit bias: user biases + model suppress tokens (-INFINITY)
{
std::vector<llama_logit_bias> merged = params.logit_bias;
int32_t n_suppress = 0;
const llama_token * suppress = llama_vocab_get_suppress_tokens(vocab, &n_suppress);
for (int32_t i = 0; i < n_suppress; ++i) {
const llama_token id = suppress[i];
if (0 <= id && id < llama_vocab_n_tokens(vocab)) {
merged.push_back({ id, -INFINITY });
}
}
if (!merged.empty()) {
samplers.push_back(llama_sampler_init_logit_bias(llama_vocab_n_tokens(vocab), merged.size(), merged.data()));
}
}
if (params.mirostat == 0) {