跳转至

Ollama 本地大模型部署与使用

一句话说明: Ollama 是一个让你在自己电脑上一行命令就能跑大语言模型的工具,不需要联网、不花钱、数据完全私密。


为什么要学

  1. 面试加分 — 生信岗位越来越看重 AI 工具使用能力,本地部署 LLM 是实打实的动手能力证明
  2. 免费无限用 — 不再受 ChatGPT 额度限制,本地模型随便跑,适合大批量文本处理
  3. 数据隐私 — 生信数据(病人信息、未发表结果)不出本机,零泄露风险
  4. 离线可用 — 模型下好后断网也能用,实验室网络差也不怕
  5. 自动化流水线 — 可以用 Python 脚本批量调用,比如批量翻译文献、批量总结基因功能注释

核心概念详解

Ollama 是什么(白话比方)

白话: Ollama 就像一个"AI 模型管理器",类似你用 conda 管理 Python 环境,Ollama 用来管理和运行 AI 大模型。

  • conda 的操作是 conda create / conda activate
  • Ollama 的操作是 ollama pull / ollama run

技术上,Ollama 是一个用 Go 语言写的开源工具(GitHub 170k+ stars,MIT 协议),它把复杂的模型加载、GPU 调度、API 服务全部封装好了,你只需要敲一行命令。

模型格式:GGUF 是什么

白话: GGUF 就是大模型的"压缩包格式"。

原始的大模型文件非常大(比如 Llama 70B 原始权重有 140GB),GGUF 格式(GGML Unified Format,GGML 是 llama.cpp 作者 Georgi Gerganov 的机器学习库)是专门为在普通电脑上运行而设计的文件格式。它把模型参数按一种紧凑的方式打包起来,让你的显卡能直接读取。

  • 类比:原始模型 = 无损 WAV 音乐文件(巨大),GGUF = MP3 文件(压缩后体积小很多,听感差别不大)

量化是什么(Q4/Q5/Q8 的区别和选择)

白话: 量化就是"降低精度来缩小模型体积"。

原始模型每个参数用 16 位浮点数(FP16)存储,量化就是把它降到更少的位数:

量化等级 每参数位数 体积(7B 模型) 质量损失 推荐场景
Q4_K_M 4 bit ~4.1 GB 略有损失 8G 显存首选,性价比最高
Q5_K_M 5 bit ~4.8 GB 很小 显存够用时的平衡选择
Q8_0 8 bit ~7.2 GB 几乎无损 追求质量且显存充足
FP16 16 bit ~14 GB 无损 需要 16G+ 显存

选择建议: 8G 显存选 Q4_K_M,16G 显存选 Q5_K_M 或 Q8_0。

Modelfile 是什么

白话: Modelfile 就是大模型的"配置文件",类似 Dockerfile 之于 Docker。

你可以在 Modelfile 里定义: - 用哪个基础模型 - 系统提示词(System Prompt)是什么(比如"你是一个生信助手") - 温度(temperature)等生成参数


环境安装与配置

Windows 安装(你已完成)

# 方法 1:下载安装包(推荐)
# 从 https://ollama.com 下载 OllamaSetup.exe,双击安装
# 当前最新版:v0.22.1(2026-04-28 发布)

# 方法 2:winget 命令安装
winget install Ollama.Ollama

# 验证安装是否成功
ollama --version
# 应该输出类似:ollama version is 0.22.1

WSL/Linux 安装

# 一行命令安装(推荐)
curl -fsSL https://ollama.com/install.sh | sh

# 如果网络不好,用代理安装
curl -x socks5://127.0.0.1:10808 -fsSL https://ollama.com/install.sh | sh

# 验证安装
ollama --version

# 启动 Ollama 服务(WSL 中需要手动启动)
ollama serve &
# 说明:& 表示后台运行,这样终端不会被占住

配置模型存储路径

默认情况下,Ollama 把模型存在 C 盘(Windows)或 ~/.ollama(Linux),模型很大容易把 C 盘撑爆。

# === Windows:改到 D 盘 ===
# 方法:设置系统环境变量
# 1. 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
# 2. 在"用户变量"中新建:
#    变量名:OLLAMA_MODELS
#    变量值:D:\Ollama\models
# 3. 重启 Ollama

# 或者用 PowerShell 命令设置(需要管理员权限)
[System.Environment]::SetEnvironmentVariable("OLLAMA_MODELS", "D:\Ollama\models", "User")
# 说明:第三个参数 "User" 表示这是用户级别的环境变量
# === WSL/Linux:改到自定义路径 ===
# 编辑 ~/.bashrc,在末尾加一行
export OLLAMA_MODELS=/home/pweaz/ollama_models
# 然后执行
source ~/.bashrc

配置代理加速下载

国内网络下载模型很慢,需要配置代理:

# === Windows:设置代理环境变量 ===
[System.Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://127.0.0.1:10809", "User")
[System.Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://127.0.0.1:10809", "User")
# 说明:10809 是 HTTP 代理端口,不同代理软件端口不同,根据你的实际情况修改
# 设置后需要重启 Ollama
# === WSL/Linux:设置代理 ===
export HTTPS_PROXY=http://127.0.0.1:10809
export HTTP_PROXY=http://127.0.0.1:10809
# 然后再运行 ollama pull 命令

配置允许局域网访问(Expose to network)

默认 Ollama 只监听 127.0.0.1(本机),如果你想从手机或其他电脑访问:

# === Windows ===
# 设置环境变量
[System.Environment]::SetEnvironmentVariable("OLLAMA_HOST", "0.0.0.0:11434", "User")
# 说明:0.0.0.0 表示监听所有网络接口(网卡),11434 是 Ollama 默认端口
# 设置后重启 Ollama
# === WSL/Linux ===
export OLLAMA_HOST=0.0.0.0:11434
ollama serve &
# 然后其他设备访问 http://你的IP:11434

实操教程

入门:下载和运行第一个模型

# 第一步:下载模型(pull = 拉取,和 docker pull 类似)
ollama pull qwen2.5:7b
# 说明:qwen2.5 是阿里的通义千问模型,7b 表示 70 亿参数
# 下载大小约 4.7GB,需要等待

# 第二步:运行模型,进入对话模式
ollama run qwen2.5:7b
# 此时会出现 >>> 提示符,你可以直接打字聊天

# 在对话中输入:
# >>> 你好,请用白话解释什么是宏基因组
# 模型会开始生成回答

# 退出对话:输入 /bye 或按 Ctrl+D
# >>> /bye
# 单次提问(不进入交互模式)
ollama run qwen2.5:7b "用一句话解释什么是 16S rRNA"
# 模型会直接输出答案然后退出

模型管理

# 查看已下载的模型列表
ollama list
# 输出示例:
# NAME              ID          SIZE    MODIFIED
# qwen2.5:7b       845dbda0    4.7 GB  2 hours ago

# 查看模型详细信息(参数量、量化等级、模板格式等)
ollama show qwen2.5:7b
# 会显示 architecture、parameters、quantization 等技术细节

# 复制模型(给模型起个别名)
ollama cp qwen2.5:7b my-qwen
# 用途:你想基于同一个模型创建不同配置的版本时很有用

# 删除模型(释放磁盘空间)
ollama rm qwen2.5:7b
# 注意:删了就要重新下载,确认不需要再删

# 查看正在运行的模型
ollama ps
# 显示当前加载到显存中的模型及其占用

# 停止运行中的模型(释放显存)
ollama stop qwen2.5:7b

API 调用

Ollama 启动后会在 http://localhost:11434 提供 REST API(一种网络接口),你可以用任何编程语言调用它。

curl 命令调用

# 发送一个对话请求(generate 接口,流式输出)
curl http://localhost:11434/api/generate -d '{
  "model": "qwen2.5:7b",
  "prompt": "什么是宏基因组测序?请用白话解释。",
  "stream": false
}'
# 参数说明:
# model   — 要使用的模型名称
# prompt  — 你的问题
# stream  — false 表示等全部生成完再返回,true 表示边生成边返回

# 使用 chat 接口(支持多轮对话)
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5:7b",
  "messages": [
    {"role": "system", "content": "你是一个生物信息学助手,用白话回答问题。"},
    {"role": "user", "content": "解释一下什么是 Shannon 多样性指数"}
  ],
  "stream": false
}'
# 参数说明:
# messages — 对话历史列表
# role: system  — 系统提示(设定 AI 的角色)
# role: user    — 用户的消息

Python 代码调用(requests 库)

import requests  # 导入 HTTP 请求库
import json      # 导入 JSON 处理库

# 定义 Ollama API 地址
url = "http://localhost:11434/api/chat"

# 构建请求数据
payload = {
    "model": "qwen2.5:7b",           # 使用的模型
    "messages": [                      # 对话消息列表
        {
            "role": "system",          # 系统角色:设定 AI 行为
            "content": "你是生信分析助手,用中文白话回答。"
        },
        {
            "role": "user",            # 用户角色:提出问题
            "content": "LEfSe 分析的原理是什么?"
        }
    ],
    "stream": False                    # 不使用流式输出
}

# 发送 POST 请求
response = requests.post(url, json=payload)

# 解析返回结果
result = response.json()               # 把 JSON 字符串转为字典
answer = result["message"]["content"]   # 提取 AI 的回答
print(answer)                           # 打印回答

在 Python 中使用 Ollama

方式一:ollama 官方库(推荐)

# 安装 ollama Python 库
pip install ollama
import ollama  # 导入 ollama 官方库

# === 最简单的用法:一行代码提问 ===
response = ollama.chat(
    model="qwen2.5:7b",                # 模型名称
    messages=[                          # 消息列表
        {
            "role": "user",             # 用户消息
            "content": "什么是 OTU 聚类?用白话解释"
        }
    ]
)
print(response["message"]["content"])   # 打印 AI 回答

# === 流式输出(边生成边打印,体验更好) ===
stream = ollama.chat(
    model="qwen2.5:7b",
    messages=[{"role": "user", "content": "解释随机森林算法"}],
    stream=True                         # 开启流式输出
)
for chunk in stream:                    # 逐块读取输出
    print(chunk["message"]["content"], end="", flush=True)
    # end="" 表示不换行,flush=True 表示立刻显示

# === Embedding 向量化(用于 RAG 检索增强生成) ===
result = ollama.embed(
    model="nomic-embed-text",           # 专用的嵌入模型
    input="宏基因组是研究环境样本中全部微生物基因组的技术"
)
print(len(result["embeddings"][0]))     # 输出向量维度,通常是 768

方式二:OpenAI 兼容接口(可复用 OpenAI 的代码)

Ollama 内置了 OpenAI 兼容的 API(/v1/chat/completions),这意味着你以前写的调 OpenAI 的代码,只需要改两行就能用本地模型。

# 安装 openai 库
pip install openai
from openai import OpenAI  # 导入 OpenAI 客户端

# 创建客户端,指向本地 Ollama(关键:改 base_url)
client = OpenAI(
    base_url="http://localhost:11434/v1",  # 指向 Ollama 的 OpenAI 兼容接口
    api_key="ollama"                        # 随便填,Ollama 不验证 key
)

# 调用方式和 OpenAI 完全一样
response = client.chat.completions.create(
    model="qwen2.5:7b",                    # 本地模型名称
    messages=[
        {"role": "system", "content": "你是生信分析助手"},
        {"role": "user", "content": "KEGG 通路富集分析怎么做?"}
    ],
    temperature=0.7                         # 温度:0=确定性输出,1=更随机
)

# 提取回答
answer = response.choices[0].message.content
print(answer)

自定义模型(Modelfile)

创建一个生信专用助手模型:

# 文件名:Modelfile-bioinfo
# 白话:这是一个"模型配方文件",定义了基于哪个模型 + 什么人设 + 什么参数

# FROM:指定基础模型(就像 Dockerfile 的 FROM 指定基础镜像)
FROM qwen2.5:7b

# SYSTEM:设定系统提示词(AI 的"人设")
SYSTEM """
你是一个专业的生物信息学分析助手。你的特点是:
1. 用中文白话回答所有问题,遇到专业术语一定加括号解释
2. 回答要有结构:先给结论,再给原理,最后给实操命令
3. 如果涉及代码,给完整可运行的代码并加中文注释
4. 你擅长宏基因组分析、16S rRNA 分析、机器学习在生信中的应用
"""

# PARAMETER:设定生成参数
PARAMETER temperature 0.3
# 温度 0.3:偏低,让回答更确定、更稳定(适合技术问答)

PARAMETER top_p 0.9
# top_p 0.9:采样范围,0.9 表示从概率最高的 90% 候选词中选择

PARAMETER num_ctx 4096
# num_ctx 4096:上下文窗口长度,能记住约 3000 字的对话历史
# 用 Modelfile 创建自定义模型
ollama create bioinfo-helper -f Modelfile-bioinfo
# create       — 创建新模型
# bioinfo-helper — 你给模型起的名字
# -f           — 指定 Modelfile 路径

# 运行你的自定义模型
ollama run bioinfo-helper
# >>> PCoA 分析和 PCA 有什么区别?

多模态模型使用(图片理解)

多模态模型(Multimodal Model)能同时理解文字和图片,适合分析实验结果图表。

# 下载支持图片理解的模型
ollama pull llama3.2-vision:11b
# 说明:llama3.2-vision 是 Meta 的多模态模型,11b 参数版本约 7GB

# 在对话中使用图片
ollama run llama3.2-vision:11b
# >>> 请描述这张图片 /path/to/heatmap.png
# Ollama 会自动识别路径中的图片并分析
import ollama  # 导入 ollama 库

# 调用多模态模型分析图片
response = ollama.chat(
    model="llama3.2-vision:11b",              # 多模态模型
    messages=[
        {
            "role": "user",
            "content": "这张热图展示了什么?请用中文分析。",
            "images": ["./results/heatmap.png"]  # 图片路径列表
        }
    ]
)
print(response["message"]["content"])

8G 显存实用方案

以下模型经过量化,可以在 8GB 显存(如 RTX 3060/3070/4060)上流畅运行:

模型 大小 用途 中文能力
qwen2.5:7b 4.7 GB 通用对话、代码生成、文本总结 优秀(阿里出品,中文原生支持)
qwen2.5-coder:7b 4.7 GB 写代码、Debug、解释代码 优秀
deepseek-r1:7b 4.7 GB 推理、数学、逻辑分析 优秀(深度求索出品)
llama3.1:8b 4.9 GB 英文通用对话、指令遵循 中等(英文强,中文一般)
gemma3:4b 3.3 GB 轻量对话、快速响应 良好(Google 出品)
mistral:7b 4.1 GB 英文写作、分析 较弱(法国 Mistral 出品)
nomic-embed-text 274 MB 文本向量化(用于 RAG) 良好
llama3.2-vision:11b 7.9 GB 图片理解、多模态分析 中等

推荐组合(8G 显存): - 日常对话 + 代码:qwen2.5:7b(首选) - 需要推理链:deepseek-r1:7b - RAG 系统:qwen2.5:7b + nomic-embed-text


常见报错与解决方案

报错信息 原因 解决方法
Error: could not connect to ollama app Ollama 服务没启动 Windows:检查系统托盘有没有 Ollama 图标;WSL:运行 ollama serve &
Error: model 'xxx' not found 模型名字拼错或没下载 运行 ollama list 查看已有模型,用 ollama pull xxx 下载
Error: insufficient system memory 内存不够(RAM,不是显存) 关掉其他程序释放内存,或选更小的模型(如 3b/4b)
out of memory / CUDA out of memory 显存不够 换小模型或低量化版本:如从 7b 换到 3b,或 Q8 换到 Q4
下载速度极慢(< 100 KB/s) 没走代理 设置 HTTPS_PROXY 环境变量,参考上面"配置代理"章节
bind: address already in use 端口 11434 被占用 换端口:OLLAMA_HOST=0.0.0.0:11435 ollama serve,或杀掉占用进程
connection refused (Python 调用时) API 地址写错或服务没启动 确认 Ollama 在运行(ollama ps),确认地址是 http://localhost:11434
中文乱码 / 回答是英文 模型不支持中文或没给中文提示 qwen2.5 系列模型,Prompt 中明确写"请用中文回答"
invalid model format 模型文件损坏 删除后重新下载:ollama rm xxx 然后 ollama pull xxx
WSL 中 GPU 不可用 WSL 没装 NVIDIA 驱动 Windows 侧安装最新 NVIDIA 驱动(不是在 WSL 里装),WSL 会自动继承

Ollama vs 其他本地部署方案对比

维度 Ollama llama.cpp vLLM LM Studio
上手难度 极低(一行命令) 高(需编译) 中(需 Python 环境) 极低(GUI 界面)
安装方式 安装包 / 一行脚本 编译源码 pip install 安装包
模型管理 ollama pull/list/rm 手动下载 GGUF 文件 HuggingFace 下载 GUI 下载
API 服务 内置 REST API + OpenAI 兼容 需额外搭建 内置高性能 API 内置 API
GPU 支持 NVIDIA / AMD / Apple NVIDIA / AMD / Apple / CPU 仅 NVIDIA(CUDA) NVIDIA / Apple
并发性能 中等 低(单请求) 高(生产级)
适合场景 个人开发、学习、原型 嵌入式、定制化 生产服务、高并发 非技术用户体验
开源协议 MIT MIT Apache 2.0 闭源免费
社区活跃度 170k+ stars 75k+ stars 50k+ stars 活跃但闭源

结论: 对于学习和面试准备,Ollama 是最佳选择 — 上手快、命令简单、API 完善。


速查表

# ========== 服务管理 ==========
ollama serve                    # 启动 Ollama 服务(WSL 中需要手动启动)
ollama --version                # 查看版本号

# ========== 模型操作 ==========
ollama pull qwen2.5:7b          # 下载模型
ollama run qwen2.5:7b           # 运行模型(进入对话)
ollama run qwen2.5:7b "问题"    # 单次提问
ollama list                     # 列出所有已下载模型
ollama show qwen2.5:7b          # 查看模型详细信息
ollama cp qwen2.5:7b my-model   # 复制/重命名模型
ollama rm qwen2.5:7b            # 删除模型
ollama ps                       # 查看正在运行的模型
ollama stop qwen2.5:7b          # 停止模型(释放显存)

# ========== 自定义模型 ==========
ollama create my-model -f Modelfile   # 用 Modelfile 创建自定义模型

# ========== 环境变量 ==========
OLLAMA_MODELS=D:\Ollama\models        # 模型存储路径
OLLAMA_HOST=0.0.0.0:11434             # 监听地址和端口
HTTPS_PROXY=http://127.0.0.1:10809    # 下载代理
OLLAMA_NUM_PARALLEL=2                 # 并行请求数
OLLAMA_MAX_LOADED_MODELS=1            # 同时加载的模型数(显存有限设为1)

# ========== API 端点 ==========
# POST http://localhost:11434/api/generate       — 文本生成
# POST http://localhost:11434/api/chat           — 对话
# POST http://localhost:11434/api/embed          — 向量化
# GET  http://localhost:11434/api/tags           — 列出模型
# GET  http://localhost:11434/api/version        — 版本信息
# POST http://localhost:11434/v1/chat/completions — OpenAI 兼容接口

延伸学习资源

  • Ollama 官方文档: https://github.com/ollama/ollama(README 就是最好的入门文档)
  • Ollama 模型库: https://ollama.com/library(浏览和搜索所有可用模型)
  • Ollama Python 库: https://github.com/ollama/ollama-python
  • Open WebUI: 给 Ollama 套一个类似 ChatGPT 的网页界面,地址 https://github.com/open-webui/open-webui
  • RAG 实战: 用 LangChain + Ollama + ChromaDB 构建本地知识库问答系统

文档信息: 最后更新 2026-05-03 | Ollama 最新版 v0.22.1 | GitHub Stars: 170k+