Fix serialization error due to NaNtags/v0.5.1
| @@ -68,9 +68,9 @@ namespace LLama | |||
| public LLamaModel Model => _model; | |||
| /// <summary> | |||
| /// Current "mu" value for mirostate sampling | |||
| /// Current "mu" value for mirostat sampling | |||
| /// </summary> | |||
| protected float MirostateMu { get; set; } = float.NaN; | |||
| protected float? MirostatMu { get; set; } | |||
| /// <summary> | |||
| /// | |||
| @@ -391,8 +391,8 @@ namespace LLama | |||
| [JsonPropertyName("last_tokens_maximum_count")] | |||
| public int LastTokensCapacity { get; set; } | |||
| [JsonPropertyName("mirostate_mu")] | |||
| public float MirostateMu { get; set; } | |||
| [JsonPropertyName("mirostat_mu")] | |||
| public float? MirostatMu { get; set; } | |||
| } | |||
| } | |||
| } | |||
| @@ -53,7 +53,7 @@ namespace LLama | |||
| SessionFilePath = _pathSession, | |||
| SessionTokens = _session_tokens, | |||
| LastTokensCapacity = _last_n_tokens.Capacity, | |||
| MirostateMu = MirostateMu | |||
| MirostatMu = MirostatMu | |||
| }; | |||
| return state; | |||
| } | |||
| @@ -214,12 +214,12 @@ namespace LLama | |||
| var tokenDataArray = _model.ApplyPenalty(_last_n_tokens, inferenceParams.LogitBias, repeat_last_n, | |||
| inferenceParams.RepeatPenalty, inferenceParams.FrequencyPenalty, inferenceParams.PresencePenalty, inferenceParams.PenalizeNL); | |||
| var mu = MirostateMu; | |||
| var mu = MirostatMu; | |||
| var id = _model.Sample( | |||
| tokenDataArray, ref mu, inferenceParams.Temperature, inferenceParams.Mirostat, inferenceParams.MirostatTau, | |||
| inferenceParams.MirostatEta, inferenceParams.TopK, inferenceParams.TopP, inferenceParams.TfsZ, inferenceParams.TypicalP | |||
| ); | |||
| MirostateMu = mu; | |||
| MirostatMu = mu; | |||
| _last_n_tokens.Enqueue(id); | |||
| @@ -45,7 +45,7 @@ namespace LLama | |||
| SessionFilePath = _pathSession, | |||
| SessionTokens = _session_tokens, | |||
| LastTokensCapacity = _last_n_tokens.Capacity, | |||
| MirostateMu = MirostateMu | |||
| MirostatMu = MirostatMu | |||
| }; | |||
| return state; | |||
| } | |||
| @@ -203,12 +203,12 @@ namespace LLama | |||
| var tokenDataArray = _model.ApplyPenalty(_last_n_tokens, inferenceParams.LogitBias, repeat_last_n, | |||
| inferenceParams.RepeatPenalty, inferenceParams.FrequencyPenalty, inferenceParams.PresencePenalty, inferenceParams.PenalizeNL); | |||
| var mu = MirostateMu; | |||
| var mu = MirostatMu; | |||
| var id = _model.Sample( | |||
| tokenDataArray, ref mu, inferenceParams.Temperature, inferenceParams.Mirostat, inferenceParams.MirostatTau, | |||
| inferenceParams.MirostatEta, inferenceParams.TopK, inferenceParams.TopP, inferenceParams.TfsZ, inferenceParams.TypicalP | |||
| ); | |||
| MirostateMu = mu; | |||
| MirostatMu = mu; | |||
| _last_n_tokens.Enqueue(id); | |||
| @@ -228,7 +228,7 @@ namespace LLama | |||
| /// <param name="tfsZ"></param> | |||
| /// <param name="typicalP"></param> | |||
| /// <returns></returns> | |||
| public llama_token Sample(LLamaTokenDataArray candidates, ref float mirostat_mu, float temperature = 0.8f, MirostatType mirostat = MirostatType.Disable, | |||
| public llama_token Sample(LLamaTokenDataArray candidates, ref float? mirostat_mu, float temperature = 0.8f, MirostatType mirostat = MirostatType.Disable, | |||
| float mirostatTau = 5.0f, float mirostatEta = 0.1f, int topK = 40, float topP = 0.95f, float tfsZ = 1.0f, float typicalP = 1.0f) | |||
| { | |||
| llama_token id; | |||
| @@ -239,30 +239,31 @@ namespace LLama | |||
| } | |||
| else | |||
| { | |||
| if (float.IsNaN(mirostat_mu)) | |||
| mirostat_mu = 2 * mirostatTau; | |||
| if (mirostat == MirostatType.Mirostat) | |||
| { | |||
| const int mirostat_m = 100; | |||
| SamplingApi.llama_sample_temperature(_ctx, candidates, temperature); | |||
| id = SamplingApi.llama_sample_token_mirostat(_ctx, candidates, mirostatTau, mirostatEta, mirostat_m, ref mirostat_mu); | |||
| } | |||
| else if (mirostat == MirostatType.Mirostat2) | |||
| { | |||
| SamplingApi.llama_sample_temperature(_ctx, candidates, temperature); | |||
| id = SamplingApi.llama_sample_token_mirostat_v2(_ctx, candidates, mirostatTau, mirostatEta, ref mirostat_mu); | |||
| } | |||
| else | |||
| var mu = mirostat_mu ?? (2 * mirostatTau); | |||
| { | |||
| // Temperature sampling | |||
| SamplingApi.llama_sample_top_k(_ctx, candidates, topK, 1); | |||
| SamplingApi.llama_sample_tail_free(_ctx, candidates, tfsZ, 1); | |||
| SamplingApi.llama_sample_typical(_ctx, candidates, typicalP, 1); | |||
| SamplingApi.llama_sample_top_p(_ctx, candidates, topP, 1); | |||
| SamplingApi.llama_sample_temperature(_ctx, candidates, temperature); | |||
| id = SamplingApi.llama_sample_token(_ctx, candidates); | |||
| if (mirostat == MirostatType.Mirostat) | |||
| { | |||
| const int mirostat_m = 100; | |||
| SamplingApi.llama_sample_temperature(_ctx, candidates, temperature); | |||
| id = SamplingApi.llama_sample_token_mirostat(_ctx, candidates, mirostatTau, mirostatEta, mirostat_m, ref mu); | |||
| } | |||
| else if (mirostat == MirostatType.Mirostat2) | |||
| { | |||
| SamplingApi.llama_sample_temperature(_ctx, candidates, temperature); | |||
| id = SamplingApi.llama_sample_token_mirostat_v2(_ctx, candidates, mirostatTau, mirostatEta, ref mu); | |||
| } | |||
| else | |||
| { | |||
| // Temperature sampling | |||
| SamplingApi.llama_sample_top_k(_ctx, candidates, topK, 1); | |||
| SamplingApi.llama_sample_tail_free(_ctx, candidates, tfsZ, 1); | |||
| SamplingApi.llama_sample_typical(_ctx, candidates, typicalP, 1); | |||
| SamplingApi.llama_sample_top_p(_ctx, candidates, topP, 1); | |||
| SamplingApi.llama_sample_temperature(_ctx, candidates, temperature); | |||
| id = SamplingApi.llama_sample_token(_ctx, candidates); | |||
| } | |||
| } | |||
| mirostat_mu = mu; | |||
| } | |||
| return id; | |||
| } | |||
| @@ -57,7 +57,7 @@ namespace LLama | |||
| lastTokens.AddRange(tokens); | |||
| n_past += n_prompt_tokens; | |||
| var mu = float.NaN; | |||
| var mu = (float?)null; | |||
| int max_tokens = inferenceParams.MaxTokens < 0 ? int.MaxValue : inferenceParams.MaxTokens; | |||
| for(int i = 0; i < max_tokens; i++) | |||
| { | |||