You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

IContextParamsExtensions.cs 1.6 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using System.IO;
  3. using LLama.Abstractions;
  4. using LLama.Native;
  5. namespace LLama.Extensions
  6. {
  7. /// <summary>
  8. /// Extention methods to the IContextParams interface
  9. /// </summary>
  10. public static class IContextParamsExtensions
  11. {
  12. /// <summary>
  13. /// Convert the given `IModelParams` into a `LLamaContextParams`
  14. /// </summary>
  15. /// <param name="params"></param>
  16. /// <param name="result"></param>
  17. /// <returns></returns>
  18. /// <exception cref="FileNotFoundException"></exception>
  19. /// <exception cref="ArgumentException"></exception>
  20. public static void ToLlamaContextParams(this IContextParams @params, out LLamaContextParams result)
  21. {
  22. result = NativeApi.llama_context_default_params();
  23. result.n_ctx = @params.ContextSize;
  24. result.n_batch = @params.BatchSize;
  25. result.seed = @params.Seed;
  26. result.f16_kv = @params.UseFp16Memory;
  27. result.logits_all = @params.Perplexity;
  28. result.embedding = @params.EmbeddingMode;
  29. result.rope_freq_base = @params.RopeFrequencyBase;
  30. result.rope_freq_scale = @params.RopeFrequencyScale;
  31. result.mul_mat_q = @params.MulMatQ;
  32. result.n_threads = Threads(@params.Threads);
  33. result.n_threads_batch = Threads(@params.BatchThreads);
  34. }
  35. private static uint Threads(uint? value)
  36. {
  37. if (value is > 0)
  38. return (uint)value;
  39. return (uint)Math.Max(Environment.ProcessorCount / 2, 1);
  40. }
  41. }
  42. }