Ollama 本地大模型部署与使用¶
一句话说明: Ollama 是一个让你在自己电脑上一行命令就能跑大语言模型的工具,不需要联网、不花钱、数据完全私密。
为什么要学¶
- 面试加分 — 生信岗位越来越看重 AI 工具使用能力,本地部署 LLM 是实打实的动手能力证明
- 免费无限用 — 不再受 ChatGPT 额度限制,本地模型随便跑,适合大批量文本处理
- 数据隐私 — 生信数据(病人信息、未发表结果)不出本机,零泄露风险
- 离线可用 — 模型下好后断网也能用,实验室网络差也不怕
- 自动化流水线 — 可以用 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+