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.

MemoryDisposalTests.cs 1.2 kB

April 2024 Binary Update (#662) * Updated binaries, using [this build](https://github.com/SciSharp/LLamaSharp/actions/runs/8654672719/job/23733195669) for llama.cpp commit `f7001ccc5aa359fcf41bba19d1c99c3d25c9bcc7`. - Added all new functions. - Moved some functions (e.g. `SafeLlamaModelHandle` specific functions) into `SafeLlamaModelHandle.cs` - Exposed tokens on `SafeLlamaModelHandle` and `LLamaWeights` through a `Tokens` property. As new special tokens are added in the future they can be added here. - Changed all token properties to return nullable tokens, to handle some models not having some tokens. - Fixed `DefaultSamplingPipeline` to handle no newline token in some models. * Moved native methods to more specific locations. - Context specific things have been moved into `SafeLLamaContextHandle.cs` and made private - they're exposed through C# properties and methods already. - Checking that GPU layer count is zero if GPU offload is not supported. - Moved methods for creating default structs (`llama_model_quantize_default_params` and `llama_context_default_params`) into relevant structs. * Removed exception if `GpuLayerCount > 0` when GPU is not supported. * - Added low level wrapper methods for new per-sequence state load/save in `SafeLLamaContextHandle` - Added high level wrapper methods (save/load with `State` object or memory mapped file) in `LLamaContext` - Moved native methods for per-sequence state load/save into `SafeLLamaContextHandle` * Added update and defrag methods for KV cache in `SafeLLamaContextHandle` * Updated submodule to `f7001ccc5aa359fcf41bba19d1c99c3d25c9bcc7` * Passing the sequence ID when saving a single sequence state
1 year ago
1 year ago
April 2024 Binary Update (#662) * Updated binaries, using [this build](https://github.com/SciSharp/LLamaSharp/actions/runs/8654672719/job/23733195669) for llama.cpp commit `f7001ccc5aa359fcf41bba19d1c99c3d25c9bcc7`. - Added all new functions. - Moved some functions (e.g. `SafeLlamaModelHandle` specific functions) into `SafeLlamaModelHandle.cs` - Exposed tokens on `SafeLlamaModelHandle` and `LLamaWeights` through a `Tokens` property. As new special tokens are added in the future they can be added here. - Changed all token properties to return nullable tokens, to handle some models not having some tokens. - Fixed `DefaultSamplingPipeline` to handle no newline token in some models. * Moved native methods to more specific locations. - Context specific things have been moved into `SafeLLamaContextHandle.cs` and made private - they're exposed through C# properties and methods already. - Checking that GPU layer count is zero if GPU offload is not supported. - Moved methods for creating default structs (`llama_model_quantize_default_params` and `llama_context_default_params`) into relevant structs. * Removed exception if `GpuLayerCount > 0` when GPU is not supported. * - Added low level wrapper methods for new per-sequence state load/save in `SafeLLamaContextHandle` - Added high level wrapper methods (save/load with `State` object or memory mapped file) in `LLamaContext` - Moved native methods for per-sequence state load/save into `SafeLLamaContextHandle` * Added update and defrag methods for KV cache in `SafeLLamaContextHandle` * Updated submodule to `f7001ccc5aa359fcf41bba19d1c99c3d25c9bcc7` * Passing the sequence ID when saving a single sequence state
1 year ago
1 year ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using LLama.Common;
  2. namespace LLama.Unittest;
  3. public class MemoryDisposalTests
  4. {
  5. [Fact]
  6. public void ModelDisposal()
  7. {
  8. var @params = new ModelParams(Constants.GenerativeModelPath)
  9. {
  10. ContextSize = 2048,
  11. GpuLayerCount = 0,
  12. };
  13. var model = LLamaWeights.LoadFromFile(@params);
  14. Assert.False(model.NativeHandle.IsClosed);
  15. model.Dispose();
  16. Assert.True(model.NativeHandle.IsClosed);
  17. }
  18. [Fact]
  19. public void ContextDisposal()
  20. {
  21. var @params = new ModelParams(Constants.GenerativeModelPath)
  22. {
  23. ContextSize = 2048,
  24. GpuLayerCount = Constants.CIGpuLayerCount,
  25. };
  26. var model = LLamaWeights.LoadFromFile(@params);
  27. var ctx = model.CreateContext(@params);
  28. // Disposing the model handle does **not** free the memory, because there's stilla context
  29. Assert.False(model.NativeHandle.IsClosed);
  30. model.Dispose();
  31. Assert.False(model.NativeHandle.IsClosed);
  32. // Disposing the context frees context and model weights
  33. ctx.Dispose();
  34. Assert.True(model.NativeHandle.IsClosed);
  35. Assert.True(ctx.NativeHandle.IsClosed);
  36. }
  37. }