diff --git a/gpttype_adapter.cpp b/gpttype_adapter.cpp index 0ff30453c..5c20b2509 100644 --- a/gpttype_adapter.cpp +++ b/gpttype_adapter.cpp @@ -606,13 +606,21 @@ llama_token sample_token(llama_token_data_array * candidates, std::mt19937 & rng int idx = dist(rng); newpick.selected_token = FileFormatTokenizeID(candidates->data[idx].id, file_format, true); - newpick.selected_logprob = logf(candidates->data[idx].p); + float rp1 = (candidates->data[idx].p<=0.0001?0.0001f:candidates->data[idx].p); + float sprob = logf(rp1); + sprob = (sprob > 999.0f?999.0f:sprob); + sprob = (sprob < -999.0f?-999.0f:sprob); + newpick.selected_logprob = sprob; newpick.selected_probability = candidates->data[idx].p; newpick.selected_tokenid = candidates->data[idx].id; for (size_t i = 0; (i < candidates->size && idata[i].id, file_format, true)); - newpick.logprobs.push_back(logf(candidates->data[i].p)); + float rp2 = (candidates->data[i].p<=0.0001?0.0001f:candidates->data[i].p); + float prob = logf(rp2); + prob = (prob > 999.0f?999.0f:prob); + prob = (prob < -999.0f?-999.0f:prob); + newpick.logprobs.push_back(prob); newpick.p.push_back(candidates->data[i].p); newpick.tokenid.push_back(candidates->data[i].id); }