@@ -1039,7 +1039,7 @@ bool gpt_params_find_arg(int argc, char ** argv, const std::string & arg, gpt_pa
10391039 return true ;
10401040 }
10411041 if (arg == " --ignore-eos" ) {
1042- params .ignore_eos = true ;
1042+ sparams .ignore_eos = true ;
10431043 return true ;
10441044 }
10451045 if (arg == " --penalize-nl" ) {
@@ -1054,7 +1054,8 @@ bool gpt_params_find_arg(int argc, char ** argv, const std::string & arg, gpt_pa
10541054 std::string value_str;
10551055 try {
10561056 if (ss >> key && ss >> sign && std::getline (ss, value_str) && (sign == ' +' || sign == ' -' )) {
1057- sparams.logit_bias [key] = std::stof (value_str) * ((sign == ' -' ) ? -1 .0f : 1 .0f );
1057+ const float bias = std::stof (value_str) * ((sign == ' -' ) ? -1 .0f : 1 .0f );
1058+ sparams.logit_bias .push_back ({key, bias});
10581059 }
10591060 else {
10601061 throw std::exception ();
@@ -2165,8 +2166,9 @@ struct llama_init_result llama_init_from_gpt_params(gpt_params & params) {
21652166 llama_lora_adapters_apply (lctx, iparams.lora_adapters );
21662167 }
21672168
2168- if (params.ignore_eos ) {
2169- params.sparams .logit_bias [llama_token_eos (model)] = -INFINITY;
2169+ if (params.sparams .ignore_eos && llama_token_eos (model) == -1 ) {
2170+ fprintf (stderr, " %s: warning: model does not have an EOS token, ignoring --ignore-eos\n " , __func__);
2171+ params.sparams .ignore_eos = false ;
21702172 }
21712173
21722174 if (params.warmup ) {
@@ -3205,10 +3207,7 @@ void yaml_dump_non_result_info(FILE * stream, const gpt_params & params, const l
32053207 fprintf (stream, " grammar-file: # never logged, see grammar instead. Can still be specified for input.\n " );
32063208 fprintf (stream, " hellaswag: %s # default: false\n " , params.hellaswag ? " true" : " false" );
32073209 fprintf (stream, " hellaswag_tasks: %zu # default: 400\n " , params.hellaswag_tasks );
3208-
3209- const auto logit_bias_eos = sparams.logit_bias .find (llama_token_eos (llama_get_model (lctx)));
3210- const bool ignore_eos = logit_bias_eos != sparams.logit_bias .end () && logit_bias_eos->second == -INFINITY;
3211- fprintf (stream, " ignore_eos: %s # default: false\n " , ignore_eos ? " true" : " false" );
3210+ fprintf (stream, " ignore_eos: %s # default: false\n " , sparams.ignore_eos ? " true" : " false" );
32123211
32133212 yaml_dump_string_multiline (stream, " in_prefix" , params.input_prefix .c_str ());
32143213 fprintf (stream, " in_prefix_bos: %s # default: false\n " , params.input_prefix_bos ? " true" : " false" );
@@ -3219,11 +3218,8 @@ void yaml_dump_non_result_info(FILE * stream, const gpt_params & params, const l
32193218 fprintf (stream, " logdir: %s # default: unset (no logging)\n " , params.logdir .c_str ());
32203219
32213220 fprintf (stream, " logit_bias:\n " );
3222- for (std::pair<llama_token, float > lb : sparams.logit_bias ) {
3223- if (ignore_eos && lb.first == logit_bias_eos->first ) {
3224- continue ;
3225- }
3226- fprintf (stream, " %d: %f" , lb.first , lb.second );
3221+ for (const auto & logit_bias : sparams.logit_bias ) {
3222+ fprintf (stream, " %d: %f" , logit_bias.token , logit_bias.bias );
32273223 }
32283224
32293225 fprintf (stream, " lora:\n " );
0 commit comments