Ollama 本地 CPU 部署开源大模型
简介
Ollama 是一个轻量级的工具,允许用户在本地 CPU 上高效运行开源大语言模型。它基于 llama.cpp 实现,支持多种主流模型如 Llama 3、Gemma、Phi 3、Qwen 2 等。相比云端 API,本地部署提供了更高的数据隐私性和更低的长期成本,特别适合开发测试阶段或敏感数据处理场景。
如何在本地 CPU 环境下使用 Ollama 部署开源大语言模型。内容涵盖安装步骤、命令行操作、Python 接口调用(包括官方库与 OpenAI 兼容模式)、Jupyter 魔法命令定制以及性能安全分析。通过实际代码示例展示了如何运行 Qwen2 等模型,并强调了本地部署在数据隐私和资源控制方面的优势。

Ollama 是一个轻量级的工具,允许用户在本地 CPU 上高效运行开源大语言模型。它基于 llama.cpp 实现,支持多种主流模型如 Llama 3、Gemma、Phi 3、Qwen 2 等。相比云端 API,本地部署提供了更高的数据隐私性和更低的长期成本,特别适合开发测试阶段或敏感数据处理场景。
完整支持的模型列表可以参考官方文档:https://ollama.com/library
可以从官网下载 Ollama:https://ollama.com/
安装完成后,系统会自动启动后台服务。可以在命令行中直接交互。
ollama run qwen2 # 运行 qwen2 模型,如果本地没有,会先自动下载
ollama pull llama3 # 下载 llama3 模型到本地
ollama list # 查看本地有哪些模型可用
ollama rm llama3 # 删除本地的某个模型
ollama ps # 查看当前正在运行的模型进程
ollama show llama3 # 显示模型的详细信息
ollama help # 获取帮助信息
执行 ollama help 可查看详细用法:
Large language model runner
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
Flags:
-h, --help help for any command
-v, --version Show version information
在终端中运行 ollama run <model_name> 即可进入对话模式。例如运行 Qwen2:
ollama run qwen2
输入问题后,模型会直接在终端输出回复。这种方式适合快速验证模型能力,但缺乏持久化上下文管理。
在命令行运行 ollama run <model_name> 实际上会在后台启动一个模型服务(默认端口 11434)。我们可以使用 Python 代码与该服务进行交互。
有两种主要方式:使用 Ollama 官方库或使用 OpenAI 兼容接口。
首先安装官方库:
pip install ollama
示例代码:
import ollama
response = ollama.chat(
model='qwen2',
stream=False,
messages=[{
'role': 'user',
'content': '请简述人工智能的基本定义。'
}]
)
print(response['message']['content'])
该库封装了底层 HTTP 请求,返回结构化的 JSON 响应,适合大多数应用场景。
Ollama 兼容 OpenAI 的 Chat Completions API 格式。这意味着许多基于 OpenAI SDK 开发的工具(如 LangChain、PandasAI)可以直接接入 Ollama,无需修改核心逻辑。
安装依赖:
pip install openai
流式输出示例:
from openai import OpenAI
client = OpenAI(
base_url='http://localhost:11434/v1/',
api_key='ollama', # 本地模型通常不需要真实 API Key
)
completion = client.chat.completions.create(
model='qwen2',
messages=[{
'role': 'user',
'content': '解释一下什么是 Transformer 架构?'
}],
stream=True
)
for chunk in completion:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end='', flush=True)
这种方式的灵活性极高,便于集成现有的 AI 应用生态。
在 Jupyter Notebook 中开发时,自定义魔法命令可以极大提升体验。通过继承 IPython 的 Magics 类,可以实现类似 %chat 的命令,自动维护多轮对话历史。
以下是一个完整的实现示例:
import sys
from IPython.core.magic import (Magics, magics_class, line_magic)
from IPython import get_ipython
class OllamaChat(Magics):
def __init__(self, ipython):
super(OllamaChat, self).__init__(ipython)
self.history = []
self.model = 'qwen2'
@line_magic
def chat(self, line):
query = line.strip()
if not query:
return "请输入对话内容"
self.history.append({'role': 'user', 'content': query})
try:
import ollama
response = ollama.chat(
model=self.model,
messages=self.history,
stream=False
)
content = response['message']['content']
self.history.append({'role': 'assistant', 'content': content})
return content
except Exception as e:
return f"Error: {str(e)}"
# 注册魔法命令
ip = get_ipython()
magic = OllamaChat(ip)
ip.register_magics(magic)
注册后,在 Notebook 单元格中直接输入 %chat 你好 即可与模型对话,且历史记录会自动保留在当前会话中。
虽然 GPU 能显著提升推理速度,但在 CPU 上运行 Ollama 依然具备实用价值。对于中小参数量的模型(如 7B 以下),现代 CPU 的推理延迟通常在可接受范围内。若需更高性能,建议启用 AVX/AVX2 指令集优化。
本地部署的核心优势在于数据不出域。所有 Prompt 和 Response 均存储在本地内存或磁盘,不会上传至第三方服务器。这对于处理企业机密或个人隐私数据至关重要。
OLLAMA_HOST 修改。ollama serve),并检查防火墙设置。Ollama 为开发者提供了一个便捷的本地大模型运行环境。通过命令行、Python 库及 Jupyter 扩展,用户可以灵活地集成开源模型到自己的工作流中。结合其 OpenAI 兼容性,Ollama 成为替代云端付费 API 的理想选择,尤其适合注重隐私、成本控制及离线能力的场景。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online