10#include <unordered_map>
34 auto h = std::hash<std::string>{}(k.
model_id);
35 h ^= std::hash<std::string>{}(k.
decode_hash) + 0x9e3779b97f4a7c15ULL + (h << 6) + (h >> 2);
36 h ^= std::hash<std::int32_t>{}(k.
prefix_len) + 0x9e3779b97f4a7c15ULL + (h << 6) + (h >> 2);
37 h ^= std::hash<std::int32_t>{}(k.
layer_id) + 0x9e3779b97f4a7c15ULL + (h << 6) + (h >> 2);
38 h ^= std::hash<std::uint64_t>{}(k.
arch_version) + 0x9e3779b97f4a7c15ULL + (h << 6) + (h >> 2);
39 h ^= std::hash<std::uint64_t>{}(k.
token_hash) + 0x9e3779b97f4a7c15ULL + (h << 6) + (h >> 2);
40 h ^= std::hash<std::string>{}(k.
cache_namespace) + 0x9e3779b97f4a7c15ULL + (h << 6) + (h >> 2);
69 std::size_t
max_bytes = 256 * 1024 * 1024);
79 const std::string& decode_hash,
80 const std::vector<std::int32_t>& tokens,
81 std::int32_t total_layers,
82 std::uint64_t arch_version,
83 const std::string& cache_namespace = {})
const;
94 std::size_t
max_bytes()
const {
return max_bytes_; }
99 void evict_if_needed();
101 mutable std::mutex mu_;
103 mutable std::unordered_map<LayerCheckpointKey, LayerCheckpoint, LayerCheckpointKeyHash> entries_;
104 std::size_t max_entries_;
105 std::size_t max_bytes_;
106 std::size_t current_bytes_ = 0;
107 mutable std::uint64_t clock_ = 0;
Definition layer_cache.hpp:66
void invalidate_model(const std::string &model_id)
void invalidate_arch(std::uint64_t arch_version)
LayerKVCacheIndex(std::size_t max_entries=4096, std::size_t max_bytes=256 *1024 *1024)
std::size_t max_bytes() const
Byte budget passed at construction.
Definition layer_cache.hpp:94
void insert(LayerCheckpoint checkpoint)
std::size_t estimated_bytes() const
Sum of the resident checkpoints' estimated_bytes.
std::size_t max_entries() const
Capacity in entries passed at construction.
Definition layer_cache.hpp:92
LookupResult find_deepest(const std::string &model_id, const std::string &decode_hash, const std::vector< std::int32_t > &tokens, std::int32_t total_layers, std::uint64_t arch_version, const std::string &cache_namespace={}) const
Definition checkpoint.hpp:12
Definition backend.hpp:16
Definition layer_cache.hpp:32
std::size_t operator()(const LayerCheckpointKey &k) const
Definition layer_cache.hpp:33
Definition layer_cache.hpp:15
std::uint64_t arch_version
Definition layer_cache.hpp:20
std::int32_t prefix_len
Definition layer_cache.hpp:18
std::string decode_hash
Definition layer_cache.hpp:17
std::int32_t layer_id
Definition layer_cache.hpp:19
std::string cache_namespace
Definition layer_cache.hpp:22
bool operator==(const LayerCheckpointKey &o) const
Definition layer_cache.hpp:24
std::string model_id
Definition layer_cache.hpp:16
std::uint64_t token_hash
Definition layer_cache.hpp:21
Definition layer_cache.hpp:45
std::size_t estimated_bytes
Definition layer_cache.hpp:56
std::int32_t prefix_len
Definition layer_cache.hpp:53
std::string decode_hash
Definition layer_cache.hpp:51
std::int32_t layer_id
Definition layer_cache.hpp:52
std::vector< std::int32_t > tokens
Definition layer_cache.hpp:49
backend::BackendState state
Definition layer_cache.hpp:46
std::string cache_namespace
Definition layer_cache.hpp:57
std::uint64_t arch_version
Definition layer_cache.hpp:54
std::int64_t last_access_ns
Definition layer_cache.hpp:55
std::string model_id
Definition layer_cache.hpp:50
Definition layer_cache.hpp:71
std::int32_t prefix_len
Definition layer_cache.hpp:74
backend::BackendState state
Definition layer_cache.hpp:72
std::int32_t layer_id
Definition layer_cache.hpp:73
bool found
Definition layer_cache.hpp:75