从ollama迁移到llama-swap+llama-server

从ollama迁移到llama-swap+llama-server


2026-05-08 ·1496 字 ·4 分钟

前几天,我正式告别使用了几个月的ollama,换到了llama-swap+llama-server。感觉这趟折腾相当有意义,于是决定记下来。

首先,为什么我要换掉ollama?原因很简单,这软件和agent界的流氓小龙虾相当关系密切!!

Power OpenClaw with Ollama

——以上只是夹杂了私人恩怨的玩笑。

我个人平时只把ollama当llm服务器用,来来回回就用ollama pullollama serve。就使用两句命令行,这软件却占用我6G的硬盘空间,那可是6个G啊!完全是“大材小用”。

我调查了一下ollama体积庞大原因,大概是:为了技术小白友好、开箱即用,ollama内置了多种显卡驱动的运行环境。就算你的显卡是AMD,CUDA支持还是会静静地躺在你的电脑里。

除此以外,ollama还有别的不足:

  • 更底层地修改运行llama的设置很麻烦,必须通过编辑Modelfile,而不能就一行启动命令完事。
  • 自动下载的模型以它自己的方式储存,无法和其他llm运行服务共享模型。
  • 不支持设置API Key,因为ollama的宗旨是提供本地运行的模型。
  • 为了方便下载,有一些模型会被冠上错误的缩写名。

除此以外,ollama在开源社区的争议也一直不小,此处我们就忽略不提了。当然了,ollama也有属于它的好处,比如:

  • 真的非常开箱即用,你甚至不需要解压缩,双击安装即可。
  • 可以很方便地下载和管理模型。
  • 一行命令就可以将ollama接入其他服务。
  • 对新模型的支持更新得很快,你总是不用折腾就能获得最好的使用模型的体验。

Ollama

如果你觉得ollama不适合自己,或是想要更高的自由度和更加轻快的体验,又或是硬盘比较吃紧,欢迎来试试llama-swap+llama-server。和ollama一样,llama-swap也是用golang写成的,并自带一个轻量的webui。

因为它不负责llama-swap引擎,只进行中转和控制,所以我们还需要llama.cpp

如果电脑是nvidia的显卡,从release里找llama-xxx-bin-win-cuda-xxx-x64.zip 格式的zip。截止到编写本文的时候,cuda有12.4和13.1两张版本的发布。按住Win+R,输入cmd,回车后再输入nvidia-smi。CUDA Version≥13.1就选择13.1,反之选择12.4。

截止文章发布时间,如果想要运行gemma4,请不要选择CUDA 13.2。

顺便一说,因为用ollama下载的模型很难专一,建议在使用ollama ls导出模型列表后卸载ollama并直接清空模型文件夹。我们重新从Hugging Face下载GGUF格式的模型(官网进不去可以用镜像站)。目前有如下的模型下载方式:

  • 从网站搜,然后直接下。不需要任何额外工具,但是如果网络波动中断了,下载就得从头再来。
  • 将官网的下载链接复制到支持断点续传的下载器,如Aria2。需要手动复制粘贴链接或者安装推送脚本。
  • 安装HF官方的Python工具huggingface_hubpip install huggingface_hub,然后hf_hub_download(repo_id="xxx", filename="xxx")

此外也可以git clone url,不过我觉得在此不算一个好方法,对开发有兴趣的朋友可以考虑一下。

我把所有gguf都扔进了一个文件夹,实际上放哪都随便。之后需要编写llama-swap的config.yaml。GitHub中有完整的示例文件,这里放一个我的简易版本:

models:
  model-name-here: # 比如qwen3.5-9b
    cmd: "path/to/llama-server -m path/to/model.gguf --port ${PORT} -ngl 99 -c your-context-size" # 这是运行llama-server的指令,可以去看相关的文档
    ttl: 300 # 闲置300秒后自动卸载
    timeouts:
      connect: 60 # TCP连接超时
      keepalive: 60 # 保持连接超时
      responseHeader: 300 # 等待首字返回的时间
      idleConn: 120
  # model-2: ...

之后就可以配置服务或者bat脚本了,以下是我的命令行(为了转移方便,填写了ollama的端口):

llama-swap --config path/to/config.yaml --listen 127.0.0.1:11434

还有一个用法似乎是group,可以规定最大的加载模型数,对小显存用户很友好。这个用法现在已经不在示例里了,未来可能会被废弃,是Gemini吐给我的。官方现在推荐用matrix,具体自己看吧。

groups:
  your-group-name:
    max: 1 # 最大加载数
models:
  model-name-here: # 比如qwen3.5-9b
    cmd: "path/to/llama-server -m path/to/model.gguf --port ${PORT} -ngl 99 -c your-context-size"
    group: "your-group-name"

这一套整下来,空间占用不到200M,相当小巧;无工作时内存占用也可以忽略不计。而且,这个迁移工作绝不繁重,我常年使用的本地模型只有2~3个,所以10分钟内就配置好了。如果喜欢折腾的话,这套方案也有不少的折腾空间。此外,资源比较吃紧的话,非常推荐用llama-swap+llama-server进行精细管理,比起ollama表现更好。

结尾附一个Gemini给的matrix示例,我稍微改了一下:

matrix:
  # 给模型起个简称(必须是字母或数字)
  vars:
    chat: "qwen3.5-9b"
    code: "deepseek-coder"
    tool: "bge-reranker"

  # 第 2 步:定义可以一起的组合
  # 符号: & 代表 and, | 代表 or
  sets:
    # chat 和 code 只能加载一个,但它们都可以和 tool 一起跑。
    # 也就是说,后台最多同时存在 [chat, tool] 或者 [code, tool]。
    my_rule: "(chat | code) & tool"

评论 (0)

本文未发布到 Fediverse,评论仅本地保存。

点击左下角右下角的看板娘登录后即可评论。

已登录: ()

加载中...