diff --git a/src/llama-kv-cache.cpp b/src/llama-kv-cache.cpp index 09102f549c8..e083ff025ac 100644 --- a/src/llama-kv-cache.cpp +++ b/src/llama-kv-cache.cpp @@ -1982,6 +1982,9 @@ void llama_kv_cache::state_write_data(llama_io_write_i & io, const cell_ranges_t const uint32_t n_embd_k_gqa = hparams.n_embd_k_gqa(il); auto * k = layer.k_stream[cr.strm]; + if (!k || !k->data) { + continue; + } // Write key type const int32_t k_type_i = (int32_t) k->type; @@ -2006,7 +2009,7 @@ void llama_kv_cache::state_write_data(llama_io_write_i & io, const cell_ranges_t const uint32_t n_embd_v_gqa = hparams.n_embd_v_gqa(il); auto * v = layer.v_stream[cr.strm]; - if (!v) { + if (!v || !v->data) { continue; } @@ -2035,7 +2038,7 @@ void llama_kv_cache::state_write_data(llama_io_write_i & io, const cell_ranges_t const uint32_t n_embd_v_gqa = hparams.n_embd_v_gqa(il); auto * v = layer.v_stream[cr.strm]; - if (!v) { + if (!v || !v->data) { continue; } @@ -2214,6 +2217,9 @@ bool llama_kv_cache::state_read_data(llama_io_read_i & io, uint32_t strm, uint32 const uint32_t n_embd_k_gqa = hparams.n_embd_k_gqa(il); auto * k = layer.k_stream[strm]; + if (!k || !k->data) { + continue; + } // Read type of key int32_t k_type_i_ref; @@ -2255,7 +2261,7 @@ bool llama_kv_cache::state_read_data(llama_io_read_i & io, uint32_t strm, uint32 const uint32_t n_embd_v_gqa = hparams.n_embd_v_gqa(il); auto * v = layer.v_stream[strm]; - if (!v) { + if (!v || !v->data) { continue; } @@ -2299,7 +2305,7 @@ bool llama_kv_cache::state_read_data(llama_io_read_i & io, uint32_t strm, uint32 const uint32_t n_embd_v_gqa = hparams.n_embd_v_gqa(il); auto * v = layer.v_stream[strm]; - if (!v) { + if (!v || !v->data) { continue; }