Ollama 本地 CPU 部署开源大模型教程
Ollama 是一个轻量级的工具,允许用户在本地 CPU 上非常方便地部署和运行许多开源的大语言模型。它基于 llama.cpp 实现,在本地 CPU 上的推理效率非常高(当然,如果有 GPU 支持,推理效率会更高)。此外,Ollama 兼容 OpenAI 的接口标准,使得许多现有的基于 OpenAI API 开发的工具可以直接复用。
Ollama 是一个轻量级工具,支持在本地 CPU 上高效部署和运行多种开源大语言模型,如 Llama3、Qwen2 等。 Ollama 的安装方法、基础命令行操作、通过 Python 官方库及 OpenAI 兼容接口进行编程交互的具体代码示例,以及在 Jupyter Notebook 中自定义魔法命令实现多轮对话集成的完整方案。内容涵盖环境配置、常见故障排查及性能优化建议,旨在帮助开发者快速搭建本地 AI 开发环境。

Ollama 是一个轻量级的工具,允许用户在本地 CPU 上非常方便地部署和运行许多开源的大语言模型。它基于 llama.cpp 实现,在本地 CPU 上的推理效率非常高(当然,如果有 GPU 支持,推理效率会更高)。此外,Ollama 兼容 OpenAI 的接口标准,使得许多现有的基于 OpenAI API 开发的工具可以直接复用。
支持的模型包括 Facebook 的 Llama3、谷歌的 Gemma、微软的 Phi3、阿里的 Qwen2 等。完整支持的模型列表可以参考官方文档:https://ollama.com/library
本文将详细介绍 Ollama 的安装、命令行交互、Python 接口调用以及 Jupyter Notebook 中的魔法命令集成。
可以从官网下载 Ollama:https://ollama.com/
安装完成后,Ollama 服务通常会在后台自动启动。你可以在命令行中直接进行交互。
以下是一些常用的 Ollama 命令行指令:
# 运行 qwen2 模型,如果本地没有该模型,会自动先下载
ollama run qwen2
# 手动下载 llama3 模型到本地
ollama pull llama3
# 查看本地有哪些模型可用
ollama list
# 删除本地的某个模型
ollama rm qwen2
# 获取帮助信息
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 qwen2 时,实际上会在后台启动一个模型服务进程。我们可以利用这一点,通过 Python 代码与模型进行交互。
主要有两种方式:使用 Ollama 官方提供的 Python 库,或者使用通用的 OpenAI 兼容接口库。
首先安装官方库:
pip install ollama
然后编写代码进行对话:
import ollama
response = ollama.chat(
model='qwen2',
stream=False,
messages=[{
'role': 'user',
'content': '段子赏析:我已经不是那个当年的穷小子了,我是今年的那个穷小子。'
}]
)
print(response['message']['content'])
输出示例:
这个段子通过幽默的方式表达了对于个人经济状况的自嘲和幽默看待。在日常生活中,人们经常会遇到相似的自我调侃,尤其是在讨论个人财务或生活阶段变化时。这段话中的'已经不是当年的穷小子'暗示了过去某个时间点上的经济状况不佳,而'我是今年的那个穷小子'则将当前的情况与过去的困境相比较,强调了现在依然处于类似的经济挑战中。
Ollama 完美支持 OpenAI 的 API 格式,这使得许多基于 OpenAI 接口开发的工具(如 LangChain、PandasAI)可以直接使用 Ollama 支持的免费开源模型替代 ChatGPT。
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(
messages=[
{
'role': 'user',
'content': '段子赏析:爱一个人的眼神是藏不住的,爱两个人就一定要藏住。',
}
],
model='qwen2',
stream=True # 启用流式输出
)
for chunk in completion:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end='', flush=True)
这种模式非常适合需要实时反馈的应用场景,例如聊天机器人界面。
在 Jupyter Notebook 中开发调试代码时,如果能直接通过魔法命令与 Ollama 交互,并且自动维护多轮对话的历史上下文,将极大提升开发体验。
我们可以通过自定义 IPython 魔法命令来实现这一功能。以下是一个完整的实现示例:
import sys
from IPython.core.magic import Magics, magics_class, line_magic
from IPython.core.interactiveshell import InteractiveShell
class OllamaMagic(Magics):
def __init__(self, shell):
super(OllamaMagic, self).__init__(shell)
self.model = 'qwen2'
self.history = []
@line_magic('ollama')
def chat(self, line):
"""魔法命令:ollama <query>"""
query = line.strip()
if not query:
return "请输入问题"
try:
import ollama
response = ollama.chat(
model=self.model,
messages=[{'role': 'user', 'content': query}] + self.history[-5:] if len(self.history) > 5 else [{'role': 'user', 'content': query}]
)
result = response['message']['content']
self.history.append({'role': 'user', 'content': query})
self.history.append({'role': 'assistant', 'content': result})
return result
except Exception as e:
return f"错误:{str(e)}"
# 注册魔法命令
ip = get_ipython()
ip.register_magics(OllamaMagic)
使用方式:
%ollama 什么是人工智能?
%ollama 那深度学习呢?
这样可以在 Notebook 单元格中直接获得连续的对话结果,方便调试和记录。
如果在首次运行时下载模型较慢,请确保网络连接正常。部分模型较大(如 Llama3 7B),可能需要几分钟时间。可以通过 ollama pull 提前下载好模型。
Ollama 默认监听 11434 端口。如果该端口被占用,可以在启动服务时指定环境变量 OLLAMA_HOST 来更改端口。
在 CPU 环境下运行大模型对内存要求较高。如果显存或内存不足,可以尝试选择参数量较小的模型(如 Phi3-mini 或 Qwen1.5-1.8B)。
Ollama 允许通过 Modelfile 自定义模型参数,例如设置温度(temperature)、上下文窗口大小(num_ctx)等。创建 Modelfile 后使用 ollama create 命令生成新模型。
FROM qwen2
PARAMETER temperature 0.7
PARAMETER num_ctx 4096
Ollama 为开发者提供了一个高效、便捷的本地大模型部署方案。通过本文的介绍,你可以掌握从安装、命令行操作到 Python 及 Jupyter 集成的全流程。结合其 OpenAI 兼容性,Ollama 成为了构建私有化 AI 应用的重要基础设施。

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