V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wenerme
V2EX  ›  程序员

LLAMA CPP 比 Ollama 快得多

  •  
  •   wenerme ·
    wenerme · 2 天前 · 2168 次点击

    最近开始逐步把 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'
    
    
    22 条回复    2025-11-23 01:47:59 +08:00
    coefu
        1
    coefu  
       2 天前
    ollama 就是在 llama.cpp 上的封装。而且还不支持单机多卡并行推理。
    https://ex.noerr.eu.org/t/1126516
    mooyo
        2
    mooyo  
       2 天前
    说起来,如果本地运行的话,大概速度是多少?我用我的 AMD AI 365 跑 qwen 的 0.7b 小模型,也才 30token/s 用的 rocm 。这个速度正常么
    GDSR
        3
    GDSR  
       2 天前 via Android
    @mooyo Qwen 有 0.7B 的吗?🤔
    mooyo
        4
    mooyo  
       2 天前
    @GDSR 0.6B GGUF 记错了。
    metalvest
        5
    metalvest  
       2 天前
    微软也搞了个自己的类似东西
    winget install Microsoft.FoundryLocal
    foundry model run qwen2.5-0.5b
    secretys
        6
    secretys  
       2 天前
    vllm 是类似的东西吧,这个应该比较快吧
    c0xt30a
        7
    c0xt30a  
       2 天前
    @wenerme OP 方便分享下 docker-compose.yml 文件么?多谢了
    TabGre
        8
    TabGre  
       2 天前 via iPhone
    支持 mps 吗?
    bwnjnOEI
        9
    bwnjnOEI  
       2 天前 via iPhone
    我也用的你这一套 gpt-oss-120b 4090d 能到 30 多 tokens/s
    wenyifancc
        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 后端
    dryadent
        11
    dryadent  
       2 天前
    @secretys vllm 其实也有门槛,有条件的话,自己部署其实不如直接买服务
    slowgen
        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
    wenerme
        13
    wenerme  
    OP
       2 天前   ❤️ 1
    @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
        14
    wenerme  
    OP
       2 天前   ❤️ 1
    @TabGre llamacpp 支持 mps


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


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

    @slowgen 模型加载用 llama-swap 配合下来感觉比 ollama 舒服,主要是可控制的参数太多了,就觉得爽
    mooyo
        15
    mooyo  
       1 天前
    @wenyifancc 我用的核显跑的,问 AI 说瓶颈在内存速度上,CPU 能跑这么快?有时间我试试切 CPU
    wenyifancc
        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
    mooyo
        17
    mooyo  
       1 天前
    @wenyifancc 我试试。其实我的目标只是跑个本地翻译,速度能比硅基流动的 9b-chat 快一点就行了。
    mooyo
        18
    mooyo  
       1 天前
    @wenyifancc 我的内存应该是 6400 双通道的 32G 主要是内存太小了点
    kevan
        19
    kevan  
       1 天前
    没人用 lm studio ?
    mooyo
        20
    mooyo  
       1 天前
    @wenyifancc #16 试了一下 vulkan ,确实明显更快了。0.6b 现在能有 100token/s 不过感觉还是慢,跑个翻译等很久。不打算折腾本地 AI 了。
    wenyifancc
        21
    wenyifancc  
       1 天前
    @mooyo 100 token/s 已经不错了,硅基的 API 服务也没这么快,某些模型甚至就 30 token/s;刚才折腾本地部署 GLM-4.6-355b-a32b,速度 5 token/s 图一乐,哈哈
    mooyo
        22
    mooyo  
       11 小时 30 分钟前
    @wenyifancc #21 确实是图一乐哈哈哈,不过硅基的 API 我用 9b 模型跑翻译速度还是能接受。100token 卡的基本用不了。

    其实我还有一块 4090 ,但是不确定 4090 在 linux 下能不能实现待机(未推理的时候超低功耗),不想接进去用。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2453 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:18 · PVG 13:18 · LAX 21:18 · JFK 00:18
    ♥ Do have faith in what you're doing.