summaryrefslogtreecommitdiff
path: root/llama.cpp/src/llama-model-saver.h
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/src/llama-model-saver.h')
-rw-r--r--llama.cpp/src/llama-model-saver.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/llama.cpp/src/llama-model-saver.h b/llama.cpp/src/llama-model-saver.h
new file mode 100644
index 0000000..a5a434c
--- /dev/null
+++ b/llama.cpp/src/llama-model-saver.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include "llama.h"
+#include "llama-arch.h"
+
+#include <vector>
+
+struct llama_model_saver {
+ struct gguf_context * gguf_ctx = nullptr;
+ const struct llama_model & model;
+ const struct LLM_KV llm_kv;
+
+ llama_model_saver(const struct llama_model & model);
+ ~llama_model_saver();
+
+ void add_kv(enum llm_kv key, uint32_t value);
+ void add_kv(enum llm_kv key, int32_t value);
+ void add_kv(enum llm_kv key, float value);
+ void add_kv(enum llm_kv key, bool value);
+ void add_kv(enum llm_kv key, const char * value);
+
+ [[noreturn]]
+ void add_kv(enum llm_kv key, char value); // needed to make the template below compile
+
+ template <typename Container>
+ void add_kv(enum llm_kv key, const Container & value, bool per_layer = false);
+
+ void add_kv(enum llm_kv key, const std::vector<std::string> & value);
+
+ void add_tensor(const struct ggml_tensor * tensor);
+
+ void add_kv_from_model();
+
+ void add_tensors_from_model();
+
+ void save(const std::string & path_model);
+};