跳至内容

如何在本地使用 Ollama 安装并运行 Gemma 3

了解如何使用 Ollama 在本地安装、设置并运行 Gemma 3,并在您的设备上构建一个简单的文件助手。
已更新 2026年10月6日  · 12分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

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 命令行

完成安装后,我们可以在终端使用 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

在终端中使用 Ollama 与 Gemma 3 聊天

请注意,如果用 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 出现了两次)。以下是请求它解释脚本工作原理的示例:

使用脚本将 Gemma 3 作为本地文件助手

结语

我们已成功通过 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。


François Aubry's photo
Author
François Aubry
LinkedIn
全栈工程师,CheapGPT 创始人。我一直热爱教学。从学生时代起,我就积极寻找机会为同学提供辅导与帮助。这份热情促使我攻读博士学位,并在此期间担任助教,以支持我的学术追求。那些年里,我在传统课堂环境中收获了极大的成就感,既建立联系也促进学习。随着在线学习平台的兴起,我也看到了数字教育的变革潜力。事实上,我曾参与我们大学一款此类平台的建设。我致力于将传统教学理念与创新的数字方法相融合。我的热情在于打造既有吸引力、信息量充足,又能让当代学习者轻松获取的课程。
主题
人工智能
大语言模型

用这些课程学习 AI!

课程

使用 LangChain 的 Retrieval Augmented Generation (RAG)

3 小时
20.9K
学习使用 LangChain 的检索增强生成(RAG)将外部数据与 LLM 集成的前沿方法。
查看详情Right Arrow
开始课程
查看更多Right Arrow