问题是什么?
在使用llm benchmark与ollama https://github.com/MinhNgyuen/llm-benchmark时,我使用gemma 2 2b得到大约80 t/s。而在对话模式下向llama.cpp询问相同问题时,我得到了130 t/s。我正在运行的llama.cpp命令是".\llama-cli -m gemma-2-2b-it-Q4_K_M.gguf --threads 16 -ngl 27 --mlock --port 11484 --top_k 40 --repeat_penalty 1.1 --min_p 0.05 --top_p 0.95 --prompt-cache-all -cb -np 4 --batch-size 512 -cnv"
这里为什么ollama比llama.cpp慢约38%呢?
OS
Windows
GPU
Nvidia
CPU
Intel
Ollama版本
0.3.5
9条答案
按热度按时间bihw5rsg1#
服务器日志将有助于调试。
sbtkgmzw2#
nwsw7zdq3#
如果有帮助的话,这是llama.cpp的输出:
vdgimpew4#
我注意到的一件事(在LLM的帮助下)是llama.cpp显示fma = 1,而ollama显示为0。
aydmsdu95#
我还在AppData\Local\ProgramsOllama\ollama_runners中没有看到CUDA 12运行器,这也可能会导致速度变慢。
bprjcwpo6#
#4958 似乎是在分支中添加了一个CUDA 12后端,但尚未合并到上游。
cotxawn77#
很有可能,构建环境的差异是一个影响因素。然而请注意,你并没有比较相同的模型:llama.cpp使用的是gemma-2-2b-it-Q4_K_M.gguf,而ollama使用的是gemma2:2b-instruct-q4_0。值得注意的是,Tensor混合和模型大小是不同的。
gemma2:2b-instruct-q4_0
gemma-2-2b-it-Q4_K_M.gguf
如果你想排除这个因素,你可以尝试使用ollama模型运行llama.cpp(并不是说我认为这会有很大的区别,但至少可以进行公平的比较):
j91ykkif8#
@phly95 我尝试了使用CUDA v12进行自定义构建,并调整了cmake标志以匹配您在llama.cpp
system info
中的设置,但我没有看到显著的性能差异。您能分享更多关于如何构建llama.cpp的详细信息吗?yacmzcpb9#
这两个之间还有一个区别,那就是ollama版本检测到的是8/16线程,而llama.cpp显示的是16/16线程。请确认您的CPU拥有完整的16个核心且没有SMT(超线程技术)?- llama.cpp已经合并了代码来解决这个问题,但上游仍在等待更新。