]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
added ctx_size parameter (#148)
authorJustin Suess <redacted>
Wed, 15 Mar 2023 19:42:40 +0000 (15:42 -0400)
committerGitHub <redacted>
Wed, 15 Mar 2023 19:42:40 +0000 (21:42 +0200)
* added ctx_size parameter

* added it in more places

* Apply suggestions from code review

---------

Co-authored-by: Georgi Gerganov <redacted>
main.cpp
utils.cpp
utils.h

index 6227db6c56617ff8fc7c309d84d7390e43ccdccd..dcc42afaf7d9162c9696595fb0b18475db1cfdee 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -547,6 +547,8 @@ bool llama_eval(
 
     const int d_key = n_embd/n_head;
 
+     // TODO: check if this size scales with n_ctx linearly and remove constant. somehow I feel it wasn't the case
+    // static size_t buf_size = hparams.n_ctx*1024*1024;
     static size_t buf_size = 512u*1024*1024;
     static void * buf = malloc(buf_size);
 
@@ -819,8 +821,7 @@ int main(int argc, char ** argv) {
     // load the model
     {
         const int64_t t_start_us = ggml_time_us();
-
-        if (!llama_model_load(params.model, model, vocab, 512)) {  // TODO: set context from user input ??
+        if (!llama_model_load(params.model, model, vocab, params.n_ctx)) {  
             fprintf(stderr, "%s: failed to load model from '%s'\n", __func__, params.model.c_str());
             return 1;
         }
index 54217f02f5c366aaa1e03045b245e8f72abf028f..aa3ad1053da02a5cd2c7d9759c356eb4213a0b4b 100644 (file)
--- a/utils.cpp
+++ b/utils.cpp
@@ -37,6 +37,8 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
             params.n_predict = std::stoi(argv[++i]);
         } else if (arg == "--top_k") {
             params.top_k = std::stoi(argv[++i]);
+        } else if (arg == "-c" || arg == "--ctx_size") {
+            params.n_ctx = std::stoi(argv[++i]);
         } else if (arg == "--top_p") {
             params.top_p = std::stof(argv[++i]);
         } else if (arg == "--temp") {
@@ -92,6 +94,7 @@ void gpt_print_usage(int argc, char ** argv, const gpt_params & params) {
     fprintf(stderr, "  --top_p N             top-p sampling (default: %.1f)\n", params.top_p);
     fprintf(stderr, "  --repeat_last_n N     last n tokens to consider for penalize (default: %d)\n", params.repeat_last_n);
     fprintf(stderr, "  --repeat_penalty N    penalize repeat sequence of tokens (default: %.1f)\n", params.repeat_penalty);
+    fprintf(stderr, "  -c N, --ctx_size N    size of the prompt context (default: %d)\n", params.n_ctx);
     fprintf(stderr, "  --temp N              temperature (default: %.1f)\n", params.temp);
     fprintf(stderr, "  -b N, --batch_size N  batch size for prompt processing (default: %d)\n", params.n_batch);
     fprintf(stderr, "  -m FNAME, --model FNAME\n");
diff --git a/utils.h b/utils.h
index 4f98011cf257c104b757d336a1a58602044f272d..021120b0513c777415edcf78a92d312acc11b929 100644 (file)
--- a/utils.h
+++ b/utils.h
@@ -17,7 +17,8 @@ struct gpt_params {
     int32_t n_threads = std::min(4, (int32_t) std::thread::hardware_concurrency());
     int32_t n_predict = 128; // new tokens to predict
     int32_t repeat_last_n = 64;  // last n tokens to penalize
-
+    int32_t n_ctx = 512; //context size
+    
     // sampling parameters
     int32_t top_k = 40;
     float   top_p = 0.95f;