最近开始逐步把 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'
1
coefu 2 天前
ollama 就是在 llama.cpp 上的封装。而且还不支持单机多卡并行推理。
https://ex.noerr.eu.org/t/1126516 |
2
mooyo 2 天前
说起来,如果本地运行的话,大概速度是多少?我用我的 AMD AI 365 跑 qwen 的 0.7b 小模型,也才 30token/s 用的 rocm 。这个速度正常么
|
5
metalvest 2 天前
微软也搞了个自己的类似东西
winget install Microsoft.FoundryLocal foundry model run qwen2.5-0.5b |
6
secretys 2 天前
vllm 是类似的东西吧,这个应该比较快吧
|
8
TabGre 2 天前 via iPhone
支持 mps 吗?
|
9
bwnjnOEI 2 天前 via iPhone
我也用的你这一套 gpt-oss-120b 4090d 能到 30 多 tokens/s
|
10
wenyifancc 2 天前
@mooyo 这速度不对啊,我在 Intel Ultra 265k 使用纯 cpu 运行 Qwen3-30b-a3b-2507_UD_Q4_K_XL 在 32k 上下文长度下也能跑 32token/s,使用 5090 可以跑 300token/s
llama.cpp vulkan 后端 |
12
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 |
13
wenerme OP @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" ``` |
14
wenerme OP |
15
mooyo 1 天前
@wenyifancc 我用的核显跑的,问 AI 说瓶颈在内存速度上,CPU 能跑这么快?有时间我试试切 CPU
|
16
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 |
17
mooyo 1 天前
@wenyifancc 我试试。其实我的目标只是跑个本地翻译,速度能比硅基流动的 9b-chat 快一点就行了。
|
18
mooyo 1 天前
@wenyifancc 我的内存应该是 6400 双通道的 32G 主要是内存太小了点
|
19
kevan 1 天前
没人用 lm studio ?
|
20
mooyo 1 天前
@wenyifancc #16 试了一下 vulkan ,确实明显更快了。0.6b 现在能有 100token/s 不过感觉还是慢,跑个翻译等很久。不打算折腾本地 AI 了。
|
21
wenyifancc 1 天前
@mooyo 100 token/s 已经不错了,硅基的 API 服务也没这么快,某些模型甚至就 30 token/s;刚才折腾本地部署 GLM-4.6-355b-a32b,速度 5 token/s 图一乐,哈哈
|
22
mooyo 11 小时 30 分钟前
@wenyifancc #21 确实是图一乐哈哈哈,不过硅基的 API 我用 9b 模型跑翻译速度还是能接受。100token 卡的基本用不了。
其实我还有一块 4090 ,但是不确定 4090 在 linux 下能不能实现待机(未推理的时候超低功耗),不想接进去用。 |