课程
Google DeepMind 刚刚发布了 Gemma 3,这是其开源模型的下一代版本。Gemma 3 专为在手机和笔记本等低资源设备上直接运行而设计。这些模型针对单个 GPU 或 TPU 的快速性能进行了优化,并提供多种大小以适配不同的硬件需求。
在本教程中,我将一步步讲解如何通过 Ollama 在本地设置并运行 Gemma 3。完成之后,我还会展示如何使用 Gemma 3 和 Python 构建一个文件助手。
为何要在本地运行 Gemma 3?
在本地运行如 Gemma 3 这样的 大语言模型(LLM)有以下几个关键好处:
- 隐私: 数据保留在本地设备,保护敏感信息。
- 低延迟: 省去网络传输,带来更快的响应。
- 可定制性: 可以根据特定需求和实验对模型进行调优。
- 成本效率: 利用现有硬件,减少云端使用费用。
- 离线可用: 即使没有网络连接,应用也能正常运行。
- 可控性: 提升我们对计算环境的安全与控制。
使用 Ollama 在本地设置 Gemma 3
安装 Ollama
Ollama 是一个适用于 Windows、Mac 和 Linux 的平台,支持运行与分发 AI 模型,便于开发者将这些模型集成到项目中。我们将使用它在本地下载并运行 Gemma 3。
第一步是从Ollama 官方网站下载并安装。

安装时,请确保勾选安装命令行工具:

完成安装后,我们可以在终端使用 ollama 命令检查是否正确安装。结果应类似如下:

下载 Gemma 3
要通过 Ollama 下载模型,使用 pull 命令:
ollama pull <model_name>:<model_version>
可用模型列表见Ollama 的库。
Gemma 3具体提供四个模型:1b、4b、12b 和 27b,其中 b 表示十亿,对应模型的参数数量。
例如,要下载参数为 1b 的 gemma3,使用命令:
ollama pull gemma3:1b
如果不指定模型版本,默认会下载 4b 模型:
ollama pull gemma3
列出本地模型
我们可以使用以下命令列出本地已有的模型:
ollama list
就我而言,输出显示我有两个模型:
NAME ID SIZE MODIFIED
gemma3:1b 2d27a774bc62 815 MB 38 seconds ago
gemma3:latest c0494fe00251 3.3 GB 22 minutes ago
在终端中聊天
我们可以用 Ollama 通过 run 命令与模型聊天:
ollama run gemma3

请注意,如果用 run 命令调用尚未下载的模型,它会通过 pull 自动下载。
在后台运行 Gemma 3
要在 Python 中使用 Gemma 3,我们需要让它在后台运行。可以使用 serve 命令实现:
ollama serve
如果执行该命令时出现以下错误,很可能说明 Ollama 已在运行中:
Error: listen tcp 127.0.0.1:11434: bind: address already in use
当 Ollama 一直在后台运行时,可能会出现这个错误。
在本地结合 Python 使用 Gemma 3
设置 Python 环境
Ollama 提供了一个 Python 包,可轻松连接到在本机运行的模型。
我们将使用Anaconda来设置一个 Python 环境并添加必要的依赖。这样做有助于避免与我们现有的其他 Python 包发生冲突。
安装好 Anaconda 后,我们可以用如下命令创建环境:
conda create -n gemma3-demo -y python=3.9
该命令会创建名为 gemma3-demo 的环境,并使用 Python 版本 3.9。-y 选项可在设置过程中自动对所有询问回答“是”。
接着,使用以下命令激活环境:
conda activate gemma3-demo
最后,使用命令安装 ollama 包:
pip install ollama
用 Python 向 Gemma 3 发送消息
如下所示,我们可以用 Python 给 Gemma 3 发送一条消息:
from ollama import chat
response = chat(
model="gemma3",
messages=[
{
"role": "user",
"content": "Why is the sky blue?",
},
],
)
print(response.message.content)
根据您的硬件情况,模型可能需要一些时间来回答,因此执行脚本时请耐心等待。
前文提到,gemma3 默认指向 gemma3:4b。因此当我们将 model="gemma3" 指定为模型时,将会使用该版本。
若要使用其他模型——例如 1B 模型——则需要改为传入参数 model=”gemma3:1b”(前提是我们已通过 ollama pull gemma3:1b 命令拉取)。要列出可用模型,可使用 ollama list 命令。
如果希望按词流式输出答案,可以使用 stream=True 并按块打印响应:
from ollama import chat
stream = chat(
model="gemma3",
messages=[{"role": "user", "content": "Why is the sky blue?"}],
stream=True,
)
for chunk in stream:
print(chunk["message"]["content"], end="", flush=True)
这样能带来更好的用户体验,因为用户无需等待完整答案生成后再查看。
要进一步了解 ollama 包,请查阅其文档。
使用 Gemma 3 构建文件助手
本节我们将学习如何构建一个 Python 脚本,使我们可以在终端中就某个文本文件的内容提问。该脚本可用于检查代码文件中的潜在问题,或从任意文档中查询信息。
脚本概览
我们的目标是创建一个 Python 命令行工具,它读取一个文本文件,并利用 Gemma 3 回答与其内容相关的问题。以下是实现步骤:
搭建脚本结构
首先,我们需要设置 Python 脚本所需的导入和基础结构:
import sys
from ollama import chat
def ask_questions_from_file(file_path):
# Read the content of the text file
with open(file_path, "r") as file:
content = file.read()
# Loop to keep asking questions
while True:
question = input("> ")
print()
if question.lower() == "exit":
break
# Use Gemma 3 to get answers
stream = chat(
model="gemma3",
messages=[
{"role": "user", "content": content},
{"role": "user", "content": question},
],
stream=True,
)
for chunk in stream:
print(chunk["message"]["content"], end="", flush=True)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python ask_file.py <path_to_text_file>")
else:
file_path = sys.argv[1]
ask_questions_from_file(file_path)
核心功能封装在 ask_questions_from_file() 函数中。该函数以文件路径作为参数,首先打开并读取指定文本文件的内容。该内容将作为背景信息用于回答问题。
文件内容加载后,脚本进入循环,持续提示我们输入问题。当我们输入问题时,脚本会将文件内容与问题一并发送给 Gemma 3 模型,由其处理并生成答案。
与模型的交互通过流式机制进行,允许在答案生成的同时实时显示。如果我们输入 exit,循环将结束,脚本停止运行。
脚本末尾会检查运行方式是否正确,即是否提供了一个命令行参数(文本文件路径)。如果未提供,它会显示使用说明,指引我们以正确方式运行脚本。该设置使我们可以在命令行中高效地使用脚本。
执行脚本
将上述代码保存为例如 ask.py。要测试脚本,运行命令:
python ask.py ask.py
这将运行脚本来就其自身提问(因此上面命令中 ask.py 出现了两次)。以下是请求它解释脚本工作原理的示例:

结语
我们已成功通过 Ollama 和 Python 在本地设置并运行 Gemma 3。此方式可确保数据隐私、提供低延迟、具备定制选项,并可能带来成本节省。以上步骤不仅适用于 Gemma 3——也同样适用于托管在 Ollama 上的其他模型。
如果想进一步增强脚本功能,例如让其支持 PDF,最佳方式是使用Mistral OCR API。我们可以将 PDF 转换为文本,使脚本能够就 PDF 提问,从而更通用、更强大。
借助这些工具,我们现在可以在自己的设备上探索并与大型模型交互。
FAQs
在本地运行 Gemma 3 的硬件要求是什么?
能否在本地运行 Gemma 3 取决于您选择下载的具体模型规模。较小的模型如 gemma3:1b 注重效率,可在性能较弱的设备上运行,例如配备单块 GPU 的笔记本电脑,甚至某些高性能平板。较大的模型如 gemma3:27b 则需要更多计算资源,例如配备高端 GPU 的多核工作站。请务必将您设备的规格与模型的资源需求进行对照,以确保兼容性。
我可以同时运行多个 Gemma 3 实例吗?
可以,只要您的硬件资源(CPU、GPU 和内存)足以支撑额外的计算负载,您就能同时运行多个 Gemma 3 实例。每个在后台运行的模型实例都会占用额外的系统资源,请确保系统能够承受多进程运行而不出现明显的性能下降。
搭建 Python 环境是否必须使用 Anaconda?
虽然强烈推荐使用 Anaconda,因为它便于创建隔离环境、管理依赖并避免与其他 Python 包冲突,但这并非必需。您也可以使用其他虚拟环境工具,如 venv 或 virtualenv。
