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

Method can_admit

examples/server/server.py:12868–12910  ·  view source on GitHub ↗
(self, request: CompletionRequest)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 6

attention_kv_requiredMethod · 0.80
reclaim_orderMethod · 0.80
delete_free_sequenceMethod · 0.80

Tested by

no test coverage detected