MCPcopy Create free account
hub / github.com/abetlen/llama-cpp-python / CheckpointMemoryPolicy

Class CheckpointMemoryPolicy

examples/server/server.py:12857–12960  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12855
12856
12857class CheckpointMemoryPolicy(MemoryPolicy):
12858 def exact_checkpoint_match(self, tokens: Sequence[int]) -> Tuple[int, int]:
12859 match_seq_id, match_length = self.scheduler.radix_trie.longest_prefix(
12860 tokens,
12861 preferred_sequences=self.scheduler.free_sequences,
12862 exact_only=True,
12863 )
12864 if match_seq_id not in self.scheduler.free_sequences:
12865 return -1, 0
12866 return match_seq_id, match_length
12867
12868 def can_admit(self, request: CompletionRequest) -> bool:
12869 match_seq_id, match_length = self.exact_checkpoint_match(request.prompt_tokens)
12870 request.match_sequence_id = match_seq_id
12871 request.match_length = match_length
12872 claimable = match_seq_id in self.scheduler.free_sequences
12873 required_sequence_ids = request.internal_completion_count - int(claimable)
12874 prompt_length = len(request.prompt_tokens)
12875 prompt_kv = request.prompt_plan.eval_token_count
12876 generation_kv = self.generation_kv_for_request(request, prompt_length)
12877 if self.try_set_sequence_cache_match(
12878 request,
12879 resident_reuse_len=match_length,
12880 required_sequence_ids=request.internal_completion_count,
12881 required_attn_kv=self.attention_kv_required(
12882 prompt_kv,
12883 reused_kv=0,
12884 generation_kv=generation_kv,
12885 ),
12886 skip_attention_budget_when_unbounded=True,
12887 ):
12888 return True
12889 required_attn_kv = self.attention_kv_required(
12890 prompt_kv,
12891 reused_kv=max(0, min(match_length, request.prompt_plan.length)),
12892 generation_kv=generation_kv,
12893 )
12894 if len(self.scheduler.unused_sequences) >= required_sequence_ids and (
12895 not self.scheduler.model.has_attention_budget
12896 or self.scheduler.sequence_history.size + required_attn_kv <= self.scheduler.model.n_ctx
12897 ):
12898 return True
12899 best_free = match_seq_id if claimable else None
12900 for seq_id in self.reclaim_order(best_free):
12901 self.scheduler.delete_free_sequence(seq_id)
12902 if len(self.scheduler.unused_sequences) >= required_sequence_ids and (
12903 not self.scheduler.model.has_attention_budget
12904 or self.scheduler.sequence_history.size + required_attn_kv <= self.scheduler.model.n_ctx
12905 ):
12906 request.match_sequence_id, request.match_length = self.exact_checkpoint_match(
12907 request.prompt_tokens,
12908 )
12909 return True
12910 return False
12911
12912 def admit_request(self, request: CompletionRequest) -> None:
12913 match_seq_id = request.match_sequence_id
12914 match_length = request.match_length

Callers 1

build_memory_policyMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…