Skip to content

Commit e49a9ab

Browse files
committed
Revert "memory : migrate from llama_kv_cache to more generic llama_memory (ggml-org#14006)"
This reverts commit 7f37b6c.
1 parent 259b135 commit e49a9ab

11 files changed

+220
-324
lines changed

include/llama.h

Lines changed: 12 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,7 @@ extern "C" {
6161
struct llama_model;
6262
struct llama_context;
6363
struct llama_sampler;
64-
65-
typedef struct llama_memory_i * llama_memory_t;
66-
67-
struct llama_kv_cache; // DEPRECATED (use llama_memory instead)
64+
struct llama_kv_cache;
6865

6966
typedef int32_t llama_pos;
7067
typedef int32_t llama_token;
@@ -496,11 +493,9 @@ extern "C" {
496493
DEPRECATED(LLAMA_API int32_t llama_n_vocab (const struct llama_vocab * vocab), "use llama_vocab_n_tokens instead");
497494

498495
LLAMA_API const struct llama_model * llama_get_model (const struct llama_context * ctx);
499-
LLAMA_API llama_memory_t llama_get_memory (const struct llama_context * ctx);
496+
LLAMA_API struct llama_kv_cache * llama_get_kv_self ( struct llama_context * ctx);
500497
LLAMA_API enum llama_pooling_type llama_pooling_type(const struct llama_context * ctx); // TODO: rename to llama_get_pooling_type
501498

502-
DEPRECATED(LLAMA_API struct llama_kv_cache * llama_get_kv_self(struct llama_context * ctx), "use llama_get_memory instead");
503-
504499
LLAMA_API const struct llama_vocab * llama_model_get_vocab(const struct llama_model * model);
505500
LLAMA_API enum llama_rope_type llama_model_rope_type(const struct llama_model * model);
506501

@@ -614,78 +609,7 @@ extern "C" {
614609
int32_t il_end);
615610

616611
//
617-
// Memory
618-
//
619-
620-
// Clear the memory contents
621-
LLAMA_API void llama_memory_clear(llama_memory_t mem);
622-
623-
// Removes all tokens that belong to the specified sequence and have positions in [p0, p1)
624-
// Returns false if a partial sequence cannot be removed. Removing a whole sequence never fails
625-
// seq_id < 0 : match any sequence
626-
// p0 < 0 : [0, p1]
627-
// p1 < 0 : [p0, inf)
628-
LLAMA_API bool llama_memory_seq_rm(
629-
llama_memory_t mem,
630-
llama_seq_id seq_id,
631-
llama_pos p0,
632-
llama_pos p1);
633-
634-
// Copy all tokens that belong to the specified sequence to another sequence
635-
// p0 < 0 : [0, p1]
636-
// p1 < 0 : [p0, inf)
637-
LLAMA_API void llama_memory_seq_cp(
638-
llama_memory_t mem,
639-
llama_seq_id seq_id_src,
640-
llama_seq_id seq_id_dst,
641-
llama_pos p0,
642-
llama_pos p1);
643-
644-
// Removes all tokens that do not belong to the specified sequence
645-
LLAMA_API void llama_memory_seq_keep(
646-
llama_memory_t mem,
647-
llama_seq_id seq_id);
648-
649-
// Adds relative position "delta" to all tokens that belong to the specified sequence and have positions in [p0, p1)
650-
// p0 < 0 : [0, p1]
651-
// p1 < 0 : [p0, inf)
652-
LLAMA_API void llama_memory_seq_add(
653-
llama_memory_t mem,
654-
llama_seq_id seq_id,
655-
llama_pos p0,
656-
llama_pos p1,
657-
llama_pos delta);
658-
659-
// Integer division of the positions by factor of `d > 1`
660-
// p0 < 0 : [0, p1]
661-
// p1 < 0 : [p0, inf)
662-
LLAMA_API void llama_memory_seq_div(
663-
llama_memory_t mem,
664-
llama_seq_id seq_id,
665-
llama_pos p0,
666-
llama_pos p1,
667-
int d);
668-
669-
// Returns the smallest position present in the memory for the specified sequence
670-
// This is typically non-zero only for SWA caches
671-
// Note that all positions in the range [pos_min, pos_max] are guaranteed to be present in the memory
672-
// Return -1 if the sequence is empty
673-
LLAMA_API llama_pos llama_memory_seq_pos_min(
674-
llama_memory_t mem,
675-
llama_seq_id seq_id);
676-
677-
// Returns the largest position present in the memory for the specified sequence
678-
// Note that all positions in the range [pos_min, pos_max] are guaranteed to be present in the memory
679-
// Return -1 if the sequence is empty
680-
LLAMA_API llama_pos llama_memory_seq_pos_max(
681-
llama_memory_t mem,
682-
llama_seq_id seq_id);
683-
684-
// Check if the memory supports shifting
685-
LLAMA_API bool llama_memory_can_shift(llama_memory_t mem);
686-
687-
//
688-
// KV cache for self-attention (TODO: deprecate in favor of llama_memory)
612+
// KV cache
689613
//
690614

691615
// Returns the number of tokens in the KV cache (slow, use only for debug)
@@ -699,7 +623,7 @@ extern "C" {
699623

700624
// Clear the KV cache - both cell info is erased and KV data is zeroed
701625
LLAMA_API void llama_kv_self_clear(
702-
struct llama_context * ctx);
626+
struct llama_context * ctx);
703627

704628
// Removes all tokens that belong to the specified sequence and have positions in [p0, p1)
705629
// Returns false if a partial sequence cannot be removed. Removing a whole sequence never fails
@@ -770,22 +694,22 @@ extern "C" {
770694
// Defragment the KV cache
771695
// This will be applied:
772696
// - lazily on next llama_decode()
773-
DEPRECATED(LLAMA_API void llama_kv_self_defrag(struct llama_context * ctx),
697+
LLAMA_API DEPRECATED(void llama_kv_self_defrag(struct llama_context * ctx),
774698
"simply remove this call, the context will automatically decide when to do a defragmentation based on 'defrag_thold'");
775699

776700
// Check if the context supports KV cache shifting
777701
LLAMA_API bool llama_kv_self_can_shift(const struct llama_context * ctx);
778702

779703
// Apply the KV cache updates (such as K-shifts, defragmentation, etc.)
780-
DEPRECATED(LLAMA_API void llama_kv_self_update(struct llama_context * ctx),
704+
LLAMA_API DEPRECATED(void llama_kv_self_update(struct llama_context * ctx),
781705
"simply remove this call, updates are applied lazily on the next llama_decode()");
782706

783707
//
784708
// State / sessions
785709
//
786710

787711
// Returns the *actual* size in bytes of the state
788-
// (logits, embedding and memory)
712+
// (logits, embedding and kv_cache)
789713
// Only use when saving the state, not when restoring it, otherwise the size may be too small.
790714
LLAMA_API size_t llama_state_get_size(struct llama_context * ctx);
791715
LLAMA_API DEPRECATED(size_t llama_get_state_size(struct llama_context * ctx),
@@ -841,12 +765,12 @@ extern "C" {
841765
size_t n_token_count),
842766
"use llama_state_save_file instead");
843767

844-
// Get the exact size needed to copy the state of a single sequence
768+
// Get the exact size needed to copy the KV cache of a single sequence
845769
LLAMA_API size_t llama_state_seq_get_size(
846770
struct llama_context * ctx,
847771
llama_seq_id seq_id);
848772

849-
// Copy the state of a single sequence into the specified buffer
773+
// Copy the KV cache of a single sequence into the specified buffer
850774
LLAMA_API size_t llama_state_seq_get_data(
851775
struct llama_context * ctx,
852776
uint8_t * dst,
@@ -912,16 +836,16 @@ extern "C" {
912836
// For encode-decoder contexts, processes the batch using the encoder.
913837
// Can store the encoder output internally for later use by the decoder's cross-attention layers.
914838
// 0 - success
915-
// < 0 - error. the memory state is restored to the state before this call
839+
// < 0 - error. the KV cache state is restored to the state before this call
916840
LLAMA_API int32_t llama_encode(
917841
struct llama_context * ctx,
918842
struct llama_batch batch);
919843

920844
// Process a batch of tokens.
921-
// Requires the context to have a memory.
845+
// Requires KV cache.
922846
// For encode-decoder contexts, processes the batch using the decoder.
923847
// Positive return values does not mean a fatal error, but rather a warning.
924-
// Upon non-zero return values, the memory state is restored to the state before this call
848+
// Upon non-zero return values, the KV cache state is restored to the state before this call
925849
// 0 - success
926850
// 1 - could not find a KV slot for the batch (try reducing the size of the batch or increase the context)
927851
// 2 - aborted

src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ add_library(llama
2020
llama-hparams.cpp
2121
llama-impl.cpp
2222
llama-io.cpp
23+
llama-kv-cache.cpp
2324
llama-kv-cache-unified.cpp
2425
llama-kv-cache-unified-iswa.cpp
2526
llama-kv-cache-recurrent.cpp

0 commit comments

Comments
 (0)