summaryrefslogtreecommitdiff
path: root/include/llama.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llama.h')
-rw-r--r--include/llama.h28
1 files changed, 17 insertions, 11 deletions
diff --git a/include/llama.h b/include/llama.h
index 9ae88060..a9af4c48 100644
--- a/include/llama.h
+++ b/include/llama.h
@@ -33,17 +33,15 @@
#define LLAMA_DEFAULT_SEED 0xFFFFFFFF
-#define LLAMA_MAX_RNG_STATE (64*1024)
-
#define LLAMA_FILE_MAGIC_GGLA 0x67676c61u // 'ggla'
#define LLAMA_FILE_MAGIC_GGSN 0x6767736eu // 'ggsn'
#define LLAMA_FILE_MAGIC_GGSQ 0x67677371u // 'ggsq'
#define LLAMA_SESSION_MAGIC LLAMA_FILE_MAGIC_GGSN
-#define LLAMA_SESSION_VERSION 7
+#define LLAMA_SESSION_VERSION 8
#define LLAMA_STATE_SEQ_MAGIC LLAMA_FILE_MAGIC_GGSQ
-#define LLAMA_STATE_SEQ_VERSION 1
+#define LLAMA_STATE_SEQ_VERSION 2
#ifdef __cplusplus
extern "C" {
@@ -355,7 +353,7 @@ extern "C" {
int32_t nthread; // number of threads to use for quantizing, if <=0 will use std::thread::hardware_concurrency()
enum llama_ftype ftype; // quantize to this llama_ftype
enum ggml_type output_tensor_type; // output tensor type
- enum ggml_type token_embedding_type; // itoken embeddings tensor type
+ enum ggml_type token_embedding_type; // token embeddings tensor type
bool allow_requantize; // allow quantizing non-f32/f16 tensors
bool quantize_output_tensor; // quantize output.weight
bool only_copy; // only copy tensors - ftype, allow_requantize and quantize_output_tensor are ignored
@@ -515,6 +513,9 @@ extern "C" {
// Returns true if the model contains an encoder that requires llama_encode() call
LLAMA_API bool llama_model_has_encoder(const struct llama_model * model);
+ // Returns true if the model contains a decoder that requires llama_decode() call
+ LLAMA_API bool llama_model_has_decoder(const struct llama_model * model);
+
// For encoder-decoder models, this function returns id of the token that must be provided
// to the decoder to start generating output sequence. For other models, it returns -1.
LLAMA_API llama_token llama_model_decoder_start_token(const struct llama_model * model);
@@ -700,10 +701,11 @@ extern "C" {
// State / sessions
//
- // Returns the maximum size in bytes of the state (rng, logits, embedding
- // and kv_cache) - will often be smaller after compacting tokens
- LLAMA_API size_t llama_state_get_size(const struct llama_context * ctx);
- LLAMA_API DEPRECATED(size_t llama_get_state_size(const struct llama_context * ctx),
+ // Returns the *actual* size in bytes of the state
+ // (rng, logits, embedding and kv_cache)
+ // Only use when saving the state, not when restoring it, otherwise the size may be too small.
+ LLAMA_API size_t llama_state_get_size(struct llama_context * ctx);
+ LLAMA_API DEPRECATED(size_t llama_get_state_size(struct llama_context * ctx),
"use llama_state_get_size instead");
// Copies the state to the specified destination address.
@@ -711,7 +713,8 @@ extern "C" {
// Returns the number of bytes copied
LLAMA_API size_t llama_state_get_data(
struct llama_context * ctx,
- uint8_t * dst);
+ uint8_t * dst,
+ size_t size);
LLAMA_API DEPRECATED(size_t llama_copy_state_data(
struct llama_context * ctx,
uint8_t * dst),
@@ -721,7 +724,8 @@ extern "C" {
// Returns the number of bytes read
LLAMA_API size_t llama_state_set_data(
struct llama_context * ctx,
- const uint8_t * src);
+ const uint8_t * src,
+ size_t size);
LLAMA_API DEPRECATED(size_t llama_set_state_data(
struct llama_context * ctx,
const uint8_t * src),
@@ -763,6 +767,7 @@ extern "C" {
LLAMA_API size_t llama_state_seq_get_data(
struct llama_context * ctx,
uint8_t * dst,
+ size_t size,
llama_seq_id seq_id);
// Copy the sequence data (originally copied with `llama_state_seq_get_data`) into the specified sequence
@@ -772,6 +777,7 @@ extern "C" {
LLAMA_API size_t llama_state_seq_set_data(
struct llama_context * ctx,
const uint8_t * src,
+ size_t size,
llama_seq_id dest_seq_id);
LLAMA_API size_t llama_state_seq_save_file(