ggml-org/llama.cpp

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

Chiusa

#6855 aperta il 23 apr 2024

 (3 commenti) (0 reazioni) (0 assegnatari)C++ (21.737 fork)batch import
enhancementgood first issue

Metriche repository

Star
 (124.043 stelle)
Metriche merge PR
 (Merge medio 6g 8h) (389 PR mergiate in 30 g)

Descrizione

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.

Guida contributor