LLAMA CPP 比 Ollama 快得多

2 天前
 wenerme

最近开始逐步把 ollama 迁移到 llamacpp 了,起因是 ollama 不是所有模型都支持并行,迁移过来后发现 llamacpp 原来挺快的。

通过 llamaswap 能方便使用多个模型,前期迁移也能保留 ollama 通过 llamaswap 代理请求过去

而且 llamacpp 有很多 ollama 没有的特性,且能控制的内容更多,比如能支持更多的 embeding 方式,更控制细粒度的参数,能支持推测推理,支持 lora 等等

非常建议一试

我自己的一些 llamaswap 配置

models:
  # used for dayflow, about 2k context
  qwen3-vl:8b:
    cmd: >
      /app/llama-server --port ${PORT}
      -np 2 -cb -c 8192 -ctk q8_0 -ctv q8_0 -ngl 99  --jinja
      -hf unsloth/Qwen3-VL-8B-Instruct-GGUF:Q4_K_M --mmproj /models/qwen3-vl-8b-mmproj-F16.gguf
      -a 'qwen3-vl:8b'

  qwen3-vl-thinking:32b:
    cmd: >
      /app/llama-server --port ${PORT}
      -np 2 -cb -c 8096 -ngl 99  --jinja
      -hf unsloth/Qwen3-VL-32B-Thinking-GGUF:Q4_K_M --mmproj /models/qwen3-vl-32b-mmproj-F16.gguf
      -a 'qwen3-vl:32b'
    ttl: 360
    aliases:
    - qwen3-vl
    - qwen3-vl:32b

  gpt-oss:20b:
    cmd: /app/llama-server --port ${PORT} -hf ggml-org/gpt-oss-20b-GGUF -c 0 --jinja
    ttl: 360
    aliases:
    - gpt-oss

  qwen3-embedding:4b:
    cmd: >
      /app/llama-server --port ${PORT}
      -hf Qwen/Qwen3-Embedding-4B-GGUF:Q4_K_M
      --embedding --pooling last -ub 8192 --verbose-prompt  --jinja
    ttl: 360

  qwen3-reranker:4b:
    cmd: /app/llama-server --port ${PORT} -hf QuantFactory/Qwen3-Reranker-4B-GGUF --reranking
    ttl: 360


groups:
  always:
    persistent: true
    swap: false
    exclusive: false
    members:
    - 'qwen3-vl:8b'

2191 次点击
所在节点    程序员
22 条回复
coefu
2 天前
ollama 就是在 llama.cpp 上的封装。而且还不支持单机多卡并行推理。
https://ex.noerr.eu.org/t/1126516
mooyo
2 天前
说起来,如果本地运行的话,大概速度是多少?我用我的 AMD AI 365 跑 qwen 的 0.7b 小模型,也才 30token/s 用的 rocm 。这个速度正常么
GDSR
2 天前
@mooyo Qwen 有 0.7B 的吗?🤔
mooyo
2 天前
@GDSR 0.6B GGUF 记错了。
metalvest
2 天前
微软也搞了个自己的类似东西
winget install Microsoft.FoundryLocal
foundry model run qwen2.5-0.5b
secretys
2 天前
vllm 是类似的东西吧,这个应该比较快吧
c0xt30a
2 天前
@wenerme OP 方便分享下 docker-compose.yml 文件么?多谢了
TabGre
2 天前
支持 mps 吗?
bwnjnOEI
2 天前
我也用的你这一套 gpt-oss-120b 4090d 能到 30 多 tokens/s
wenyifancc
2 天前
@mooyo 这速度不对啊,我在 Intel Ultra 265k 使用纯 cpu 运行 Qwen3-30b-a3b-2507_UD_Q4_K_XL 在 32k 上下文长度下也能跑 32token/s,使用 5090 可以跑 300token/s
llama.cpp vulkan 后端
dryadent
2 天前
@secretys vllm 其实也有门槛,有条件的话,自己部署其实不如直接买服务
slowgen
2 天前
ollama 就是个废物,在 r/LocalLLaMA 都被喷了好多回了,精准控制参数贼麻烦,还不如直接去 llama-server 看参数 https://github.com/ggml-org/llama.cpp/tree/master/tools/server

而且现在 llama.cpp 自带的 webui 也挺好用的,越来越强大了,缺点就是多个模型加载有点麻烦,要开多个命令。
在 mac 上用 llama.cpp 是最方便的,去 release 页下载编译好的文件就好了,只有 15MB ,追新模型很方便。
举个例子:我跑 gpt-oss-120b 模型,开中等级别推理,这个命令就搞定

/Users/admin/llama/build/bin/llama-server \
-m /Volumes/RC20/lmstudio-community/gpt-oss-120b-GGUF/gpt-oss-120b-MXFP4-00001-of-00002.gguf \
--host 0.0.0.0 \
--port 50505 \
-fa on \
-np 4 \
-ub 2048 -b 2048 \
-c 131072 \
--presence-penalty 1.1 \
--n-gpu-layers 99 \
--jinja \
--alias openai/gpt-oss-120b \
--chat-template-kwargs '{"reasoning_effort": "medium"}' \
--temp 1.0 \
--top-p 1.0 \
--top-k 0

Windows 上同理,下载对应的文件解压就用

Linux 上也很方便,N 卡的话直接 cuda13 驱动一装,docker 配置一下 nvidia 作为 runtime 完事

docker run --gpus all \
-v /home/slowgen/models/Qwen3-Coder-30B-A3B-Instruct-UD-Q4_K_XL.gguf:/models/Qwen3-Coder-30B-A3B-Instruct-UD-Q4_K_XL.gguf \
-p 12345:12345 \
ghcr.io/ggml-org/llama.cpp:server-cuda \
-m /models/Qwen3-Coder-30B-A3B-Instruct-UD-Q4_K_XL.gguf \
-c 40960 \
-np 4 \
--jinja \
--n-gpu-layers 99 \
--temp 0.7 \
--min-p 0.0 \
--top-p 0.8 \
--top-k 20 \
--presence-penalty 1.05 \
--port 12345 \
--host 0.0.0.0 \
--mlock \
-mg 0
wenerme
2 天前
@c0xt30a

```yaml
services:
ollama:
# 0.11.6 0.12.3
image: docker.m.daocloud.io/ollama/ollama:0.13.0
container_name: ollama
networks:
- service
ports:
- 11434:11434
volumes:
- /data/home/.ollama/:/root/.ollama/
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [ gpu ]
environment:
# qwen3 vl 最大 256K
#OLLAMA_CONTEXT_LENGTH: 16384 # 16k
#OLLAMA_CONTEXT_LENGTH: 32768 # 32k
# qwen3-vl:32b 256K 206.6 GiB
# qwen3-vl:32b 64K 42.7 GiB
OLLAMA_CONTEXT_LENGTH: 64000

OLLAMA_DEBUG: 1

#OLLAMA_KV_CACHE_TYPE: q4_0
OLLAMA_FLASH_ATTENTION: 1
#OLLAMA_NEW_ENGINE: true
OLLAMA_NUM_PARALLEL: 2


llama:
image: ghcr.io/mostlygeek/llama-swap:v172-cuda-b7062
container_name: llama
command:
- -watch-config
- -config
- /llama/llama-swap.yaml
volumes:
- ./models:/models
- ./models:/root/.cache/llama.cpp
# the user is app, home is /app, uid=10001
- ./models:/app/.cache/llama.cpp
- ./llama:/llama
ports:
- 11435:8080
environment:
HF_ENDPOINT: https://modelscope.cn
sysctls:
net.ipv6.conf.all.disable_ipv6: 1
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [ gpu ]
extra_hosts:
- "host.docker.internal:host-gateway"

```
wenerme
2 天前
@TabGre llamacpp 支持 mps


@mooyo 我本地二手显卡,qwen3 vl 32b 30tk/s, gpt-oss 20b 100tk/s


@secretys vllm 对显卡有要求,我 v100 跑不了

@slowgen 模型加载用 llama-swap 配合下来感觉比 ollama 舒服,主要是可控制的参数太多了,就觉得爽
mooyo
2 天前
@wenyifancc 我用的核显跑的,问 AI 说瓶颈在内存速度上,CPU 能跑这么快?有时间我试试切 CPU
wenyifancc
1 天前
@mooyo 试试 vulkan 的后端,另外我使用核显(intel 的核显)速度明显是不如直接用 cpu 跑的,内存速度也有影响,我的内存频率是 6400M,双通道,192GB;
附上其他模型的性能供参考:(5090 显卡,显存够的情况下全部放显存;不够的情况下,加载模型时 moe 层卸载到 cpu,仅共享层和 kv 缓存放显存;通常显存使用 16g 以内)
以下模型精度都是 UD_Q4_X_KL:

qwen3-235b-a22b-2507-instruct: 7 token/s
qwen3-vl-235b-a22b-2507-instruct: 6 token/s
qwen3-vl-30b-a3b-instruct: 180 token/s
qwen3-vl-32b-instruct: 55 token/s
qwen3-vl-8b-instruct: 120 token/s

glm-4.5-air: 15 token/s
gpt-oss-120b: 30 token/s
gpt-oss-20b: 240 token/s
mooyo
1 天前
@wenyifancc 我试试。其实我的目标只是跑个本地翻译,速度能比硅基流动的 9b-chat 快一点就行了。
mooyo
1 天前
@wenyifancc 我的内存应该是 6400 双通道的 32G 主要是内存太小了点
kevan
1 天前
没人用 lm studio ?
mooyo
1 天前
@wenyifancc #16 试了一下 vulkan ,确实明显更快了。0.6b 现在能有 100token/s 不过感觉还是慢,跑个翻译等很久。不打算折腾本地 AI 了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1173987

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX