ggml-org/llama.cpp

server: avoid full prompt eval when 'prompt >= ctx'

Fechada

#6.855 aberto em 23 de abr. de 2024

 (3 comentários) (0 reação) (0 responsável)C++ (21.786 forks)batch import
enhancementgood first issue

Métricas do repositório

Stars
 (124.222 estrelas)
Métricas de merge de PR
 (Mesclagem média 6d 8h) (389 fundiu PRs em 30d)

Description

When using the server for multi-turn chat, soon or later the prompt is going to surpass the context size, the current approach truncate the prompt by half of the context size excluding n_keep:

https://github.com/ggerganov/llama.cpp/blob/192090bae47960f0d38d4967abe398a5d190057e/examples/server/server.cpp#L1969-L1983

By doing that, common_part is going to match only n_keep tokens (when cache_prompt: true):

https://github.com/ggerganov/llama.cpp/blob/192090bae47960f0d38d4967abe398a5d190057e/examples/server/server.cpp#L2011-L2016

Technically, this is not a full prompt eval, n_keep is not revaluated, but it would be better to avoid this if possible, specially because prompt eval is slow on CPU.

Guia do colaborador