mirror of
https://github.com/ollama/ollama-python.git
synced 2026-07-21 09:05:23 -04:00
Inconsistent prompt_eval_count for Large Prompts in Ollama Python Library
#136
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @surajyadav91 on GitHub (Sep 6, 2024).
What is the issue?
Inconsistent
prompt_eval_countfor Large Prompts in Ollama Python LibraryFor larger prompts, when using the Ollama Python library with the
llama3.1:8b-instruct-fp16model, theprompt_eval_countremains constant at fixed value (1026) tokens, even when the input prompt size varies significantly. This behavior is observed when using theollama.chat()method.Sample output:
Tokens: (1026, 15, 1041)
Total_prompt_length: 57788
Tokens: (1026, 20, 1046)
Total_prompt_length: 57172
Tokens: (1026, 18, 1044)
Total_prompt_length: 57744
Current Behavior
prompt_eval_countconsistently returns same value (1026), regardless of the actual prompt length.eval_count(output tokens) varies as expected. (this might also give fixed value once larger text is generated )Expected Behavior
prompt_eval_countshould accurately reflect the number of tokens in the input prompt.OS
macOS
GPU
Apple
CPU
Apple
Ollama version
0.3.9
@rick-github commented on GitHub (Sep 6, 2024):
This sounds like you've exceeded the context buffer and the value is the number of tokens that were processed in the last slot window. Try adding
"num_ctx":60000to theoptionsin theollama.chat()call. Note that this will increase the amount of VRAM required and depending on your hardware, may push some of the model off the GPU and in to system RAM for CPU inference.@surajyadav91 commented on GitHub (Sep 6, 2024):
thanks for pointing this out.
I didn't earlier notice this option here https://github.com/ollama/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values
I can see the default is 2048, so why in my case is it maximally reaching till 1026? even if consider option
num_predictfor which default value is 128, still maximum value should have been more than 1026. Is this explained in detail somewhere, with examples?@surajyadav91 commented on GitHub (Sep 6, 2024):
Also, by default
num_ctxshould have been set to model's max context length.@rick-github commented on GitHub (Sep 6, 2024):
Source.
Context buffer is expensive in VRAM cost which grows quadratically on length. I mentioned pushing layers off to CPU above, if that happens inference speed drops dramatically, so the default value is meant to preserve performance. If the user wants a larger context, it can be extended with
num_ctxin the API call or by creating a customized model withPARAMETER num_ctx xxxin the Modelfile.Flash attention can reduce the VRAM cost, but it doesn't work for all models.