Browse Source

KernelMemory update with adding the use of already loaded model

When using KernelMemory one may have already loaded a model which can then be used with this extension instead of loading the model again.
tags/0.11.0
Zoli Somogyi 1 year ago
parent
commit
127c3edd44
1 changed files with 26 additions and 0 deletions
  1. +26
    -0
      LLama.KernelMemory/BuilderExtensions.cs

+ 26
- 0
LLama.KernelMemory/BuilderExtensions.cs View File

@@ -94,5 +94,31 @@ namespace LLamaSharp.KernelMemory
builder.WithLLamaSharpTextGeneration(new LlamaSharpTextGenerator(weights, context, executor, config?.DefaultInferenceParams));
return builder;
}
/// <summary>
/// Adds LLamaSharpTextEmbeddingGeneration and LLamaSharpTextGeneration to the KernelMemoryBuilder. Using an already loaded model.
/// </summary>
/// <param name="builder">The KernelMemoryBuilder instance.</param>
/// <param name="weights"></param>
/// <param name="context"></param>
/// <param name="config">The LLamaSharpConfig instance.</param>
/// <returns>The KernelMemoryBuilder instance with LLamaSharpTextEmbeddingGeneration and LLamaSharpTextGeneration added.</returns>
public static IKernelMemoryBuilder WithLLamaSharpDefaults(this IKernelMemoryBuilder builder, LLamaWeights weights, LLamaContext context, LLamaSharpConfig config)
{
var parameters = new ModelParams(config.ModelPath)
{
ContextSize = config?.ContextSize ?? 2048,
Seed = config?.Seed ?? 0,
GpuLayerCount = config?.GpuLayerCount ?? 20,
EmbeddingMode = true,
MainGpu = config?.MainGpu ?? 0,
SplitMode = config?.SplitMode ?? GPUSplitMode.None,
};
var executor = new StatelessExecutor(weights, parameters);
var embedder = new LLamaEmbedder(weights, parameters);
builder.WithLLamaSharpTextEmbeddingGeneration(new LLamaSharpTextEmbeddingGenerator(embedder));
builder.WithLLamaSharpTextGeneration(new LlamaSharpTextGenerator(weights, context, executor, config?.DefaultInferenceParams));
return builder;
}
}
}

Loading…
Cancel
Save