Skip to content

LV005-ollama简介

这一部分主要是介绍 ollama 以及怎么通过它运行大模型。

一、ollama

1. ollama 简介

Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。提供了一个简单的方式来加载和使用各种预训练的语言模型,支持文本生成、翻译、代码编写、问答等多种自然语言处理任务。

Ollama 的特点在于它不仅仅提供了现成的模型和工具集,还提供了方便的界面和 API,使得从文本生成、对话系统到语义分析等任务都能快速实现。

与其他 NLP 框架不同,Ollama 旨在简化用户的工作流程,使得机器学习不再是只有深度技术背景的开发者才能触及的领域。

Ollama 支持多种硬件加速选项,包括纯 CPU 推理和各类底层计算架构(如 Apple Silicon),能够更好地利用不同类型的硬件资源。

接口 Endpoints - Ollama 官方中文文档

文档 -- Ollama 中文文档|Ollama 官方文档

2. ollama 究竟是什么

最简单的一句话来概括:Ollama,就是大模型领域的 Docker。

在没有 Docker 的时代,我们要部署一个 Web 应用,得先在服务器上装操作系统,再装数据库,再装各种依赖库,配置环境变量……一套下来,人基本就晕了,而且换台机器还得重来一遍。Docker 的出现,把应用和它所有的依赖打包成一个轻量的“容器镜像”,我们只需要一条 docker run 命令,就能在任何支持 Docker 的机器上完美运行,省去了所有繁琐的环境配置。

Ollama 做的就是完全一样的事情,只不过对象从 Web 应用换成了大语言模型。一个大模型,本身其实是一堆巨大的参数文件(我们常说的 7B、13B 就是指参数量),要让它跑起来,我们需要:

(1)模型文件本身:得从 Hugging Face 这类地方下载,动辄几个 G 甚至几十个 G。

(2)运行框架:比如 PyTorch 或 TensorFlow。

(3)底层驱动:如果用 GPU 加速,还得有正确的 CUDA 或 ROCm 驱动。

(4)加载和推理代码:我们需要写代码来加载模型、处理输入(Tokenization)、执行推理、解码输出。

这一套流程,对于新手来说,每一步都可能踩坑。而 Ollama 的伟大之处就在于它的 核心设计哲学:极致简化与整合

  • 整合(Bundling):Ollama 把“模型权重”、“配置参数”和“运行所需的一切”全部打包成一个单一的模型文件(在 Ollama 里通过一个叫 Modelfile 的东西来定义)。我们不需要关心模型是什么格式(比如 GGUF),也不需要关心它具体怎么加载。

  • 简化(Simplicity):Ollama 提供了一个极其简单的命令行工具。我们想用阿里的通义千问模型?只需要一条命令:ollama run qwen。下载、配置、启动,所有复杂的工作,Ollama 在后台默默帮我们搞定。

所以,我们可以把 Ollama 理解为一个 本地大模型运行器和管理器。它在你的电脑上以后台服务的形式运行,负责管理所有模型文件,并提供了一个统一的命令行接口和 REST API 接口,让我们能轻松地与这些本地模型进行交互。

3. 硬件要求

在开始之前,我们得先了解自己的电脑有没有能力跑大模型,能跑多大的模型。虽然 Ollama 不硬件,但大模型本身是个吃内存和显存的“大胃王”。

  • 内存(RAM):建议至少有 16GB 内存。8GB 也能跑,但只能玩一些小模型(如 3B),而且可能会比较卡。32GB 或以上则能更流畅地运行 7B、13B 甚至更大的模型。

  • 硬盘(Storage):每个模型文件大小在 3GB 到几十 GB 不等,请确保有足够的硬盘空间。建议至少有 50GB 的可用空间。

  • 显卡(GPU):这是强烈推荐的选项!虽然 Ollama 也支持纯 CPU 运行,但速度会非常慢,体验很差。

(1)NVIDIA 显卡:最佳选择。需要安装正确的 CUDA 驱动。Ollama 会自动检测并使用。

(2)AMD 显卡:在 Linux 上支持较好(通过 ROCm),Windows 上的支持正在逐步完善。

(3)Apple Silicon(M1/M2/M3 芯片):苹果的 M 系列芯片内置了强大的 GPU(Metal),Ollama 对其支持非常好。

4. 安装 Ollama

4.1 Ollama 服务安装

下载的话在这里:Download Ollama on Windows,我这里选择的是 windows 版本,然后按提示一路安装就可以了。安装完毕可以在命令行执行下面的命令查看是否安装成功:

shell
ollama -v

Ollama 在安装后会自动在后台运行一个服务,在状态栏会出现一个小的“羊驼”图标,这就是 Ollama 的服务进程。

image-20251031143620942

注意:这个进程是开机就会自动启动。

4.2 显卡

这个主要参考 ollama/docs/gpu.mdx at main · ollama/ollama,这里还有中文文档:支持的 GPU -- Ollama 中文文档|Ollama 官方文档

我怎么知道我电脑有没有 NVIDIA 显卡?右键点击“【此电脑】” → “【属性】”→ “【设备管理器】”,展开“【显示适配器】”看看。如果有 NVIDIA GeForce/RTX/Quadro 等字样,就是 N 卡。如果只有 Intel HD Graphics 或 AMD Radeon Graphics,那可能无法使用 NVIDIA 的 GPU 加速。我自己的是这样的:

image-20251031191420870

这里我的好像装完就能直接用,就没怎么折腾了。当时的显卡信息如下:

品牌NVIDIA
显存大小6 GB
显卡名称NVIDIA GeForce RTX 3060 Laptop GPU
驱动日期2023-11-30
驱动版本31.0.15.4630
名称NVIDIA GeForce RTX 3060 Laptop GPU

二、本地部署大模型

1. ollama 支持哪些模型?

在这里 Ollama Search 我们可以看到大量的大模型,例如:

image-20251031183721255

这里可以选择一个最小的千问模型来测试。

2. 基本命令

这里学习基本命令的过程中,我们下载一个 qwen3 的 0.6B 模型。

2.1 拉取模型

我们通过以下命令拉取模型:

shell
ollama pull <model-name>

【例】

shell
ollama pull qwen3:0.6b

中途会有以下提示信息:

shell
E:\AI> ollama pull qwen3:0.6b
pulling manifest
pulling manifest
pulling manifest
pulling manifest
pulling manifest
pulling manifest
pulling manifest
pulling 7f4030143c1c: 100% ▕█████████████████████████████████████████████▏ 522 MB
pulling ae370d884f10: 100% ▕█████████████████████████████████████████████▏ 1.7 KB
pulling d18a5cc71b84: 100% ▕█████████████████████████████████████████████▏  11 KB
pulling cff3f395ef37: 100% ▕█████████████████████████████████████████████▏  120 B
pulling b0830f4ff6a0: 100% ▕█████████████████████████████████████████████▏  490 B
verifying sha256 digest
writing manifest
success

在 windows 下,拉取的模型默认存放在 %HOMEPATH%\.ollama\models 中,目录结构是这样的:

shell
models
├── blobs
   ├── sha256-3e4cb14174460404e7a233e531675303b2fbf7749c02f91864fe311ab6344e4f-partial
   ├── #...
   └── sha256-d18a5cc71b84bc4af394a31116bd3932b42241de70c77d2b76d69a314ec8aa12
└── manifests
    └── registry.ollama.ai
        └── library
            └── qwen3
                └── 0.6b

5 directories, 23 files

Tips:windows 下安装完 ollama 后,会有图形界面的,我们进入设置可以修改模型的默认路径的,因为模型一般都是很大的,这里还是不要都放到 C 盘的好

2.2 列出本地模型

查看已下载的模型列表:

shell
ollama list

【例】

shell
E:\AI> ollama list
NAME          ID              SIZE      MODIFIED
qwen3:0.6b    7df6b6e09427    522 MB    2 minutes ago

2.3 删除模型

删除本地模型:

shell
ollama rm <model-name>

例如:

shell
ollama rm llama2

2.4 运行模型

运行已下载的模型:

shell
ollama run <model-name>

例如:

shell
ollama run llama2

3. 运行模型

我们上面已经下载好了 qwen3:0.6b ,我们执行下面的命令运行这个模型:

shell
ollama run qwen3:0.6b

【例】

image-20251031183931022

然后我们就可以开始问答啦。

image-20251031184018799

4. 退出模型

我们执行快捷键 Ctrl + d 就可以退出了。

三、API 交互

上面是直接使用 ollama 运行了大模型,我们要是想要使用 Python 或者其他脚本访问的话,该怎么办?Ollama 也提供了基于 HTTP 的 API,允许开发者通过编程方式与模型进行交互。

1. 启动 ollama 服务

在使用 API 之前,需要确保 Ollama 服务正在运行。可以通过以下命令启动服务:

shell
ollama serve

默认情况下,服务会运行在 http://localhost:11434。我们可以直接访问这个链接,下图所示就表示已经在运行了。

image-20251031184125235

【例】

但是我这里报错了:

shell
E:\AI> ollama serve
Error: listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

报错显示端口已经被占用,我们可以通过下面的命令查看端口被谁占用了:

shell
netstat -aon|findstr 11434

会得到以下信息:

shell
E:\AI> netstat -aon | findstr 11434
  TCP    127.0.0.1:11434        0.0.0.0:0              LISTENING       14280
  TCP    127.0.0.1:11434        127.0.0.1:56723        ESTABLISHED     14280
  TCP    127.0.0.1:11434        127.0.0.1:58716        ESTABLISHED     14280
  TCP    127.0.0.1:56723        127.0.0.1:11434        ESTABLISHED     9008
  TCP    127.0.0.1:58716        127.0.0.1:11434        ESTABLISHED     9008

发现确实被占用了,我们再来看一下被谁占用了:

shell
tasklist | findstr "14280"

会看到以下信息:

shell
E:\AI> tasklist | findstr "14280"
ollama.exe                   14280 Console                    1     68,004 K

发现就是 ollama 占用的,其实我们安装完毕后它就自动启动了,要是没有自动启动的话,可以通过上面的命令启动。

2. API 端点

Ollama 提供了一些主要 API 端点来给开发者调用。

2.1 生成文本(Generate Text)

  • 端点POST /api/generate

  • 功能:向模型发送提示词(prompt),并获取生成的文本。它适用于需要一次性生成文本响应的场景,如问答系统、文本创作等。

  • 请求格式

    json
    {
      "model": "<model-name>", // 模型名称
      "prompt": "<input-text>", // 输入的提示词
      "stream": false, // 是否启用流式响应(默认 false)
      "options": {
        // 可选参数
        "temperature": 0.7, // 温度参数
        "max_tokens": 100 // 最大 token 数
      }
    }

请求参数通常包含模型名称(model)、提示文本(prompt)、是否启用流式输出(stream)、生成文本的最大 token 数量(max_tokens)、控制生成文本的随机性(temperature)、控制生成文本的多样性(top_p)以及生成文本的停止条件(stop)等参数。

  • 响应格式

    json
    {
      "response": "<generated-text>", // 生成的文本
      "done": true // 是否完成
    }

2.2 聊天(Chat)

  • 端点POST /api/chat

  • 功能:支持多轮对话,模型会记住上下文。它允许用户与模型进行连续的对话,模型会记住上下文信息,并根据用户的后续提问或陈述继续对话。

  • 请求格式

    json
    {
      "model": "<model-name>", // 模型名称
      "messages": [
        // 消息列表
        {
          "role": "user", // 用户角色
          "content": "<input-text>" // 用户输入
        }
      ],
      "stream": false, // 是否启用流式响应
      "options": {
        // 可选参数
        "temperature": 0.7,
        "max_tokens": 100
      }
    }

除了模型名称和可选的控制参数外,还包含一个消息列表(messages),用于传递对话中的每条消息及其角色(如用户或助手)。

  • 响应格式

    json
    {
      "message": {
        "role": "assistant", // 助手角色
        "content": "<generated-text>" // 生成的文本
      },
      "done": true
    }

2.3 列出本地模型(List Models)

  • 端点GET /api/tags

  • 功能:列出本地已下载的模型。

  • 响应格式

    json
    {
      "models": [
        {
          "name": "<model-name>", // 模型名称
          "size": "<model-size>", // 模型大小
          "modified_at": "<timestamp>" // 修改时间
        }
      ]
    }

2.4 拉取模型(Pull Model)

  • 端点POST /api/pull

  • 功能:从模型库中拉取模型。

  • 请求格式

    json
    {
      "name": "<model-name>" // 模型名称
    }
  • 响应格式

    json
    {
      "status": "downloading", // 下载状态
      "digest": "<model-digest>" // 模型摘要
    }

3. 使用实例

3.1 生成文本

使用 curl 发送请求:

shell
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3:0.6b",
  "prompt": "你好,你能帮我写一段C 语言hello world代码吗?",
  "stream": false
}'

这个命令在 windows 的 cmd 终端和 powershell 中支持的都不是很好,可以用其他终端尝试,这里就不做示例了,后面会学习用 Python 来调用这个大模型实现功能。

3.2 多轮对话

使用 curl 发送请求:

shell
curl http://localhost:11434/api/chat -d '{
 "model": "qwen3:0.6b",
 "messages": [
  {
   "role": "user",
   "content": "你好,你能帮我写一段 Python 代码吗?"
  }
 ],
 "stream": false
}'

3.3 列出本地模型

使用 curl 发送请求:

shell
curl http://localhost:11434/api/tags

【例】

image-20251031191707738

四、使用 GPU

1. Python 脚本

这里我们需要写一个调用大模型处理的脚本,可以参考 [LV035-实验 1-结构化提示词与输出](/ai/application /126b0f85161f00b305caa178)

2. ollama ps

通过观察 PROCESSOR 就能看到,大模型是用的 cpu 还是 gpu,还是混合的。我们通过 ollama ps 命令:

shell
ollama ps

这个时候运行一下 Python 脚本,会看到如下信息:

image-20251031191554450

可以看到默认情况下,跑的全部都是 GPU。所以我就没管了,先这样,后面有问题再补充。

参考资料:

Ollama 系列---ollama 使用 gpu 运行大模型 - jaxiid - 博客园

(3 封私信) 在 Windows 系统中设置环境变量强制让 Ollama 使用 GPU 运行,可以按照以下步骤操作 - 知乎

保姆级教程:Ollama 本地化部署大模型从入门到精通,这一篇就够了!_ollmam-CSDN 博客