From ba1f617d7d6d81cf97760489e1df8487ca5bc277 Mon Sep 17 00:00:00 2001 From: ningshanwutuobang Date: Tue, 6 Jun 2023 22:57:04 +0800 Subject: [PATCH] add free for context --- examples/embd_input/embd_input.h | 1 + examples/embd_input/embd_input.py | 2 ++ examples/embd_input/embd_input_lib.cpp | 7 +++++++ examples/embd_input/embd_input_test.cpp | 1 + 4 files changed, 11 insertions(+) diff --git a/examples/embd_input/embd_input.h b/examples/embd_input/embd_input.h index f45cee32d..4fefabd42 100644 --- a/examples/embd_input/embd_input.h +++ b/examples/embd_input/embd_input.h @@ -23,6 +23,7 @@ bool eval_id(struct MyModel* mymodel, int id); bool eval_string(struct MyModel* mymodel, const char* str); const char* sampling(struct MyModel* mymodel); llama_token sampling_id(struct MyModel* mymodel); +void free_mymodel(struct MyModel* mymodel); } diff --git a/examples/embd_input/embd_input.py b/examples/embd_input/embd_input.py index 742bd6088..d4831d46a 100644 --- a/examples/embd_input/embd_input.py +++ b/examples/embd_input/embd_input.py @@ -17,6 +17,8 @@ class MyModel: args_c = (c_char_p * argc)(*c_str) self.model = c_void_p(libc.create_mymodel(argc, args_c)) # print("self.model", self.model) + def __del__(self): + libc.free_mymodel(self.model) def eval_float(self, x): libc.eval_float(self.model, x.astype(np.float32).ctypes.data_as(POINTER(c_float)), x.shape[0]) diff --git a/examples/embd_input/embd_input_lib.cpp b/examples/embd_input/embd_input_lib.cpp index 5cbc81709..7ad98dcb9 100644 --- a/examples/embd_input/embd_input_lib.cpp +++ b/examples/embd_input/embd_input_lib.cpp @@ -101,6 +101,13 @@ struct MyModel* create_mymodel(int argc, char ** argv) { return ret; } +void free_mymodel(struct MyModel* mymodel) { + llama_context* ctx = mymodel->ctx; + llama_print_timings(ctx); + llama_free(ctx); + delete mymodel; +} + bool eval_float(void* model, float* input, int N){ MyModel* mymodel = (MyModel* )model; diff --git a/examples/embd_input/embd_input_test.cpp b/examples/embd_input/embd_input_test.cpp index 3d86f03d7..94287e37f 100644 --- a/examples/embd_input/embd_input_test.cpp +++ b/examples/embd_input/embd_input_test.cpp @@ -27,5 +27,6 @@ int main(int argc, char** argv) { // eval_id(mymodel, id); } printf("\n"); + free_mymodel(mymodel); return 0; }