跳转至

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_M4 bit~4.1 GB略有损失8G 显存首选,性价比最高
Q5_K_M5 bit~4.8 GB很小显存够用时的平衡选择
Q8_08 bit~7.2 GB几乎无损追求质量且显存充足
FP1616 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.23.2(2026-05-07 发布)

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

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

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/user/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 qwen3:8b
# 说明:qwen3 是阿里的通义千问模型,8b 表示 82 亿参数
# 下载大小约 5.2GB,需要等待

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

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

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

模型管理

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

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

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

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

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

# 停止运行中的模型(释放显存)
ollama stop qwen3:8b

API 调用

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

curl 命令调用

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

# 使用 chat 接口(支持多轮对话)
curl http://localhost:11434/api/chat -d '{
  "model": "qwen3:8b",
  "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": "qwen3:8b",           # 使用的模型
    "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="qwen3:8b",                # 模型名称
    messages=[                          # 消息列表
        {
            "role": "user",             # 用户消息
            "content": "什么是 OTU 聚类?用白话解释"
        }
    ]
)
print(response["message"]["content"])   # 打印 AI 回答

# === 流式输出(边生成边打印,体验更好) ===
stream = ollama.chat(
    model="qwen3:8b",
    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="qwen3:8b",                    # 本地模型名称
    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 qwen3:8b

# 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)上流畅运行:

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

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


常见报错与解决方案

报错信息原因解决方法
Error: could not connect to ollama appOllama 服务没启动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
中文乱码 / 回答是英文模型不支持中文或没给中文提示qwen3 系列模型,Prompt 中明确写"请用中文回答"
invalid model format模型文件损坏删除后重新下载:ollama rm xxx 然后 ollama pull xxx
WSL 中 GPU 不可用WSL 没装 NVIDIA 驱动Windows 侧安装最新 NVIDIA 驱动(不是在 WSL 里装),WSL 会自动继承

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

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

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


速查表

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

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

# ========== 自定义模型 ==========
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-09 | Ollama 最新版 v0.23.2 | GitHub Stars: 170k+