跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    在 Fedora 上装 Ollama:包拆分、本地服务与模型下载实测

    和 k3s 不同,Ollama 在 Fedora 官方仓库里就有:

    Terminal window
    dnf list --available ollama
    ollama.x86_64 0.24.0-4.fc45 fedora

    但装之前得先看懂 Fedora 的打包方式——它把一个 Ollama 拆成了四个包。

    ollama 的四个拆分包与默认只绑 127.0.0.1

    Terminal window
    rpm -qR ollama | grep -v rpmlib
    /bin/sh
    ollama-base(x86-64) = 0.24.0-4.fc45
    ollama-rocm(x86-64) = 0.24.0-4.fc45
    ollama-vulkan(x86-64) = 0.24.0-4.fc45

    ollama 是个元包,dnf install ollama 会把三个后端全拖下来。实测体积:

    包安装体积内容
    ollama18.7 KiB只有 README 与依赖声明
    ollama-base44.7 MiB主程序 + CPU 后端
    ollama-vulkan49.7 MiBVulkan 后端(通用 GPU)
    ollama-rocm993.4 MiBAMD ROCm 后端

    装完 ollama 后实测:

    Terminal window
    rpm -ql ollama
    /usr/share/doc/ollama
    /usr/share/doc/ollama/README.md

    整个包里一个二进制都没有——真正的 ollama 可执行文件在 ollama-base 里。

    没有 GPU 的服务器(本站实验机就是)这样装:

    Terminal window
    sudo dnf install ollama-base

    省下 rocm 的 993 MiB 与 vulkan 的 49.7 MiB,只留 44.7 MiB 的 CPU 后端。

    有 NVIDIA 显卡的机器不走这条路——Fedora 包没有 cuda 后端子包,需要用上游安装脚本装带 CUDA 的版本。

    Terminal window
    sudo systemctl enable --now ollama
    systemctl is-active ollama
    ollama --version
    active
    ollama version is 0.24.0

    服务默认把端口绑在回环地址上:

    Terminal window
    ss -lntp | grep 11434
    LISTEN 0 4096 127.0.0.1:11434 0.0.0.0:*

    127.0.0.1 意味着只能本机访问。想让局域网里其他机器用,得改 OLLAMA_HOST:

    Terminal window
    sudo systemctl edit ollama
    [Service]
    Environment="OLLAMA_HOST=0.0.0.0:11434"

    改完 sudo systemctl daemon-reload && sudo systemctl restart ollama。

    装包只花几十秒,拉模型才是卡住的地方。实测拉一个 91 MB 的小模型:

    Terminal window
    ollama pull smollm:135m
    pulling eb2c714d40d4: 13% ▕██ ▏ 12 MB/ 91 MB 154 KB/s 8m33s
    pulling eb2c714d40d4: 33% ▕█████ ▏ 30 MB/ 91 MB 63 KB/s 16m2s
    pulling eb2c714d40d4: 46% ▕█████████ ▏ 46 MB/ 91 MB 91 KB/s 8m16s

    速度在 63–154 KB/s 之间波动,91 MB 要跑十几二十分钟。一个 4 GB 的 7B 模型按这个速度是几小时。

    所以国内用 Ollama,真正要解决的不是装软件,是模型文件怎么进来。

    思路说明
    换更小的模型135m / 0.5B 这类,几十到几百 MB,能忍
    先在能快的地方拉好再拷ollama pull 后把模型目录整体复制到目标机
    用国内模型分发平台ModelScope 上有官方模型仓库,但需要手工转成 Ollama 格式,不是一条命令
    Terminal window
    ollama list # 本地已有模型
    ollama pull qwen2.5:0.5b # 拉模型
    ollama run qwen2.5:0.5b # 交互式对话
    ollama ps # 当前加载在内存里的模型
    ollama rm smollm:135m # 删模型

    ollama run 进去后是一个 REPL,/bye 退出。非交互用法:

    Terminal window
    ollama run qwen2.5:0.5b "用一句话解释什么是 SELinux"

    模型拉下来之后,--verbose 能打出真实的分段耗时:

    Terminal window
    ollama run smollm:135m --verbose "Say hello in five words."
    load duration: 31.149937ms
    prompt eval count: 15 token(s)
    prompt eval duration: 12.673781ms
    prompt eval rate: 1183.55 tokens/s
    eval count: 586 token(s)
    eval duration: 3.921963228s
    eval rate: 149.41 tokens/s
    阶段含义实测
    load duration模型从磁盘读进内存31.15 ms
    prompt eval处理输入提示1183.55 tokens/s
    eval逐 token 生成149.41 tokens/s

    这是 135M 参数模型在纯 CPU 上的数字。参数规模上去之后,生成速度大致按比例下降——所以小模型 CPU 能跑,7B 在 CPU 上通常只有个位数 tokens/s。

    CPU 推理时模型整个加载进内存。实验机 3 GB 内存,跑 0.5B 级别没问题,7B(约 4.7 GB)会直接 OOM。

    Terminal window
    free -g | head -2
    ollama ps

    ollama ps 里能看到模型占用的实际内存。跑不动的表现是进程被 OOM killer 干掉,journalctl -u ollama -n 50 里能看到。

    现象原因
    ollama 命令不存在只装了元包?确认 rpm -q ollama-base
    装了 ollama 磁盘少 1 GB拖进了 ollama-rocm,无 AMD GPU 时改装 ollama-base
    远程连不上 11434默认只绑 127.0.0.1,要设 OLLAMA_HOST
    拉模型极慢模型从 ollama.com 下载,国内无加速通道
    跑大模型机器卡死内存不足,模型被整体加载
    ollama --version 只打印 warning服务没起来,先 systemctl start ollama