Bläddra i källkod

Merge pull request #3149 from ollama/mxyng/fix-memory-leak

fix: clip memory leak
Michael Yang 1 år sedan
förälder
incheckning
e87c780ff9
1 ändrade filer med 45 tillägg och 0 borttagningar
  1. 45 0
      llm/patches/05-fix-clip-free.diff

+ 45 - 0
llm/patches/05-fix-clip-free.diff

@@ -0,0 +1,45 @@
+From 9192432daf90b1bfec75577434a99b4ea70d54c8 Mon Sep 17 00:00:00 2001
+From: Michael Yang <mxyng@pm.me>
+Date: Thu, 14 Mar 2024 12:09:50 -0700
+Subject: [PATCH] fix clip free
+
+---
+ examples/llava/clip.cpp    | 4 ++++
+ examples/server/server.cpp | 6 ++++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/examples/llava/clip.cpp b/examples/llava/clip.cpp
+index ef9e4ba7..b4ddfe6b 100644
+--- a/examples/llava/clip.cpp
++++ b/examples/llava/clip.cpp
+@@ -1673,6 +1673,10 @@ void clip_free(clip_ctx * ctx) {
+     ggml_free(ctx->ctx_data);
+     gguf_free(ctx->ctx_gguf);
+ 
++    ggml_backend_buffer_free(ctx->params_buffer);
++    ggml_backend_buffer_free(ctx->compute_buffer);
++    ggml_backend_free(ctx->backend);
++    ggml_gallocr_free(ctx->compute_alloc);
+     delete ctx;
+ }
+ 
+diff --git a/examples/server/server.cpp b/examples/server/server.cpp
+index 8fe5e0b1..f927336b 100644
+--- a/examples/server/server.cpp
++++ b/examples/server/server.cpp
+@@ -353,6 +353,12 @@ struct llama_server_context
+ 
+     ~llama_server_context()
+     {
++        if (clp_ctx)
++        {
++            LOG_INFO("freeing clip model", {});
++            clip_free(clp_ctx);
++            clp_ctx = nullptr;
++        }
+         if (ctx)
+         {
+             llama_free(ctx);
+-- 
+2.43.2
+