Explorar el Código

llama : fix typical sampling (#4261)

Typical sampling was broken because after copying new_candidates into canditates, the "sorted" bool is left at "true", but the new data is no longer sorted according to probability. Patch to set "sorted" to false.

Test: Generating with temp=0.0001 (approx. argmax)  should generate the same sequence at typical>=1.0 and typical=0.9999 (approx. disabled, but enters the typical sampling codepath).
tarcey hace 2 años
padre
commit
954e22858c
Se han modificado 1 ficheros con 1 adiciones y 0 borrados
  1. 1 0
      llama.cpp

+ 1 - 0
llama.cpp

@@ -7027,6 +7027,7 @@ void llama_sample_typical(struct llama_context * ctx, llama_token_data_array * c
     // Replace the data in candidates with the new_candidates data
     // Replace the data in candidates with the new_candidates data
     std::copy(new_candidates.begin(), new_candidates.end(), candidates->data);
     std::copy(new_candidates.begin(), new_candidates.end(), candidates->data);
     candidates->size = new_candidates.size();
     candidates->size = new_candidates.size();
+    candidates->sorted = false;
 
 
     if (ctx) {
     if (ctx) {
         ctx->t_sample_us += ggml_time_us() - t_start_sample_us;
         ctx->t_sample_us += ggml_time_us() - t_start_sample_us;