Ollama 本地 CPU 部署开源大模型指南
Ollama 是一个用于在本地运行大型语言模型的强大工具,支持在 CPU 环境下高效部署多种开源大模型,如 Llama3、Gemma、Phi3、Qwen2 等。它基于 llama.cpp 实现,推理效率较高,且兼容 OpenAI API 接口,便于集成到现有开发流程中。
如何在本地 CPU 环境下使用 Ollama 部署开源大模型。内容包括软件安装步骤、命令行基础交互、Python 官方库与 OpenAI 兼容接口的调用方法、Jupyter Notebook 中的魔法命令实现、自定义模型配置文件 Modelfile 的编写以及性能优化建议。通过,开发者可以掌握从部署到集成的完整流程,实现本地化的大模型应用开发,保障数据隐私并降低 API 成本。

Ollama 是一个用于在本地运行大型语言模型的强大工具,支持在 CPU 环境下高效部署多种开源大模型,如 Llama3、Gemma、Phi3、Qwen2 等。它基于 llama.cpp 实现,推理效率较高,且兼容 OpenAI API 接口,便于集成到现有开发流程中。
本文将详细介绍 Ollama 的安装、命令行交互、Python 接口调用、Jupyter Notebook 魔法命令扩展以及自定义模型配置,帮助开发者快速搭建本地 AI 环境。
访问 Ollama 官网 (https://ollama.com/) 下载对应操作系统的安装包。支持 macOS、Linux 和 Windows 系统。
curl https://ollama.com/install.sh | sh。安装完成后,无需额外配置即可在终端中使用 ollama 命令。
# 运行模型(若本地不存在则自动下载)
ollama run qwen2
# 手动拉取模型
ollama pull llama3
# 查看已下载的模型列表
ollama list
# 删除指定模型
ollama rm qwen2
# 获取帮助信息
ollama help
执行 ollama serve 可启动后台服务,默认监听端口为 11434。
直接在终端输入 ollama run <model_name> 即可进入对话模式。Ollama 会加载模型权重并进行流式输出。
示例:
$ ollama run qwen2
>>> 你好,请介绍一下你自己。
>>> 我是 Qwen2,一个由阿里巴巴通义实验室研发的超大规模语言模型...
此模式适合快速测试模型能力或进行简单的问答交互。
通过 Python 代码可以更方便地集成 Ollama 到应用程序中。Ollama 提供了官方 Python 库,同时也完全兼容 OpenAI SDK。
首先安装依赖:
pip install ollama
代码示例:
import ollama
response = ollama.chat(
model='qwen2',
messages=[{
'role': 'user',
'content': '请用幽默的方式解释什么是人工智能。'
}]
)
print(response['message']['content'])
支持流式输出:
stream = ollama.chat(
model='qwen2',
messages=[{'role': 'user', 'content': '写一首关于春天的诗'}],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
许多基于 OpenAI API 开发的工具(如 LangChain、PandasAI)可以直接连接 Ollama,无需修改代码逻辑。
安装 OpenAI 库:
pip install openai
配置客户端:
from openai import OpenAI
client = OpenAI(
base_url='http://localhost:11434/v1/',
api_key='ollama' # 本地部署通常不需要真实 Key
)
completion = client.chat.completions.create(
model='qwen2',
messages=[
{'role': 'user', 'content': '分析这段代码的性能问题...'}
],
stream=True
)
for chunk in completion:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end='')
这种方式使得迁移云端模型到本地私有化部署变得非常简单。
在 Jupyter Notebook 中开发时,可以通过自定义魔法命令实现与 Ollama 的多轮对话交互,并自动维护上下文历史。
以下是一个完整的实现示例,定义了一个 Ollama 类并注册为 IPython 魔法命令:
import sys
from IPython.core.magic import Magics, magics_class, line_magic
from IPython.display import display, clear_output
import ollama
class OllamaMagics(Magics):
def __init__(self, ipython, model='qwen2'):
super().__init__(ipython)
self.model = model
self.history = []
@line_magic
def ollama(self, line):
query = line.strip()
if not query:
return "请输入对话内容"
# 构建消息历史
messages = [{'role': 'system', 'content': '你是一个有帮助的助手。'}]
for msg in self.history:
messages.append(msg)
messages.append({'role': 'user', 'content': query})
try:
response = ollama.chat(model=self.model, messages=messages, stream=False)
answer = response['message']['content']
self.history.append({'role': 'user', 'content': query})
self.history.append({'role': 'assistant', 'content': answer})
return answer
except Exception as e:
return f"错误:{str(e)}"
# 注册魔法命令
ip = get_ipython()
ip.register_magics(OllamaMagics)
使用方式:
%ollama 解释一下 Transformer 架构
该实现支持多轮对话记忆,适合在 Notebook 中进行交互式调试和学习。
Ollama 允许用户通过 Modelfile 自定义模型行为,包括设置系统提示词、调整参数等。
Modelfile 文件:FROM qwen2
SYSTEM "你是一个专业的 Python 编程助手。"
PARAMETER temperature 0.7
PARAMETER num_ctx 4096
ollama create my-python-assistant -f Modelfile
ollama run my-python-assistant
这允许开发者针对特定任务优化模型响应风格,而无需微调底层权重。
在 CPU 环境下运行大模型时,合理配置参数能显著提升推理速度。
线程数控制:
设置环境变量 OLLAMA_NUM_THREADS 限制使用的 CPU 核心数,避免占用过多资源影响其他应用。
export OLLAMA_NUM_THREADS=4
显存/内存管理:
虽然主要使用 CPU,但部分模型层可能利用 GPU 加速。确保 num_gpu 参数设置正确。
量化版本选择: 优先选择量化版本(如 Q4_K_M),在保持精度的同时减少内存占用和计算延迟。
并发请求:
Ollama 默认支持并发请求,但在高负载下建议增加 max_running_requests 配置。
Ollama 为本地部署开源大模型提供了便捷的工具链。通过本文介绍的安装、CLI 交互、Python 集成及自定义配置方法,开发者可以快速构建私有化的 AI 应用环境。结合 OpenAI 兼容性,现有的云端应用也能平滑迁移至本地,保障数据隐私并降低 API 成本。随着硬件性能的提升,CPU 推理的效率将进一步提高,Ollama 将成为边缘计算和本地 AI 开发的重要基础设施。
在实际使用中,建议根据具体任务选择合适的模型大小和量化级别,平衡性能与效果。对于更复杂的需求,可结合 Docker 容器化部署,实现环境隔离与版本管理。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 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