using LLama.Common; namespace LLama.Examples.Examples { // This example shows how to save/load state of the executor. public class LoadAndSaveState { public static async Task Run() { string modelPath = UserSettings.GetModelPath(); var prompt = (await File.ReadAllTextAsync("Assets/chat-with-bob.txt")).Trim(); var parameters = new ModelParams(modelPath) { ContextSize = 1024, Seed = 1337, GpuLayerCount = 5 }; using var model = LLamaWeights.LoadFromFile(parameters); using var context = model.CreateContext(parameters); var ex = new InteractiveExecutor(context); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("The executor has been enabled. In this example, the prompt is printed, " + "the maximum tokens is set to 64 and the context size is 256. (an example for small scale usage)"); Console.ForegroundColor = ConsoleColor.White; Console.Write(prompt); var inferenceParams = new InferenceParams() { Temperature = 0.6f, AntiPrompts = new List { "User:" } }; while (true) { await foreach (var text in ex.InferAsync(prompt, inferenceParams)) { Console.Write(text); } prompt = Console.ReadLine(); if (prompt == "save") { Console.Write("Your path to save model state: "); var modelStatePath = Console.ReadLine(); ex.Context.SaveState(modelStatePath); Console.Write("Your path to save executor state: "); var executorStatePath = Console.ReadLine(); await ex.SaveState(executorStatePath); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("All states saved!"); Console.ForegroundColor = ConsoleColor.White; var ctx = ex.Context; ctx.LoadState(modelStatePath); ex = new InteractiveExecutor(ctx); await ex.LoadState(executorStatePath); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Loaded state!"); Console.ForegroundColor = ConsoleColor.White; Console.Write("Now you can continue your session: "); Console.ForegroundColor = ConsoleColor.Green; prompt = Console.ReadLine(); Console.ForegroundColor = ConsoleColor.White; } } } } }