Ubuntu 20.04 下使用 Ollama 本地部署 AI 大模型

Ubuntu 20.04 下使用 Ollama 本地部署 AI 大模型

    • 一、概述
    • [二、Ollama 安装](#二、Ollama 安装)
      • [2.1 一键安装(推荐)](#2.1 一键安装(推荐))
      • [2.2 本地安装(离线/手动)](#2.2 本地安装(离线/手动))
      • [2.3 验证安装](#2.3 验证安装)
      • [2.4 启动 Ollama 服务](#2.4 启动 Ollama 服务)
    • 三、环境变量配置
      • [3.1 OLLAMA_MODELS------自定义模型存储路径](#3.1 OLLAMA_MODELS——自定义模型存储路径)
      • [3.2 OLLAMA_HOST------允许远程访问](#3.2 OLLAMA_HOST——允许远程访问)
      • [3.3 OLLAMA_KEEP_ALIVE------模型驻留时间](#3.3 OLLAMA_KEEP_ALIVE——模型驻留时间)
      • [3.4 其他常用变量](#3.4 其他常用变量)
    • 四、模型管理
      • [4.1 拉取模型](#4.1 拉取模型)
      • [4.2 查看本地模型](#4.2 查看本地模型)
      • [4.3 运行模型](#4.3 运行模型)
      • [4.4 查看当前加载的模型](#4.4 查看当前加载的模型)
      • [4.5 模型推荐](#4.5 模型推荐)
        • [12GB 显存推荐(代码模型)](#12GB 显存推荐(代码模型))
        • [多卡配置(14 × 12GB = 168GB 显存)](#多卡配置(14 × 12GB = 168GB 显存))
    • 五、模型迁移到大硬盘
      • [5.1 定位模型实际存储位置](#5.1 定位模型实际存储位置)
      • [5.2 停止服务](#5.2 停止服务)
      • [5.3 创建目标目录](#5.3 创建目标目录)
      • [5.4 复制模型文件](#5.4 复制模型文件)
      • [5.5 验证复制完整性](#5.5 验证复制完整性)
      • [5.6 配置环境变量](#5.6 配置环境变量)
      • [5.7 重启服务](#5.7 重启服务)
      • [5.8 验证](#5.8 验证)
      • [5.9 (确认无误后)删除旧目录释放空间](#5.9 (确认无误后)删除旧目录释放空间)
    • [六、Python 调用本地 Ollama(OpenAI 兼容格式)](#六、Python 调用本地 Ollama(OpenAI 兼容格式))
      • [6.1 安装 Python 依赖](#6.1 安装 Python 依赖)
      • [6.2 编写调用代码](#6.2 编写调用代码)
      • [6.3 运行与测试](#6.3 运行与测试)
      • [6.4 注意事项](#6.4 注意事项)
      • [6.5 进阶用法](#6.5 进阶用法)
    • 七、常见问题排查
      • [7.1 连接超时(IPv6 问题)](#7.1 连接超时(IPv6 问题))
      • [7.2 权限不足](#7.2 权限不足)
      • [7.3 服务启动失败](#7.3 服务启动失败)
      • [7.4 模型加载超时](#7.4 模型加载超时)
      • [7.5 模型下载中断](#7.5 模型下载中断)
      • [7.6 模型不支持工具调用](#7.6 模型不支持工具调用)
    • 八、总结
  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入我的个人主页查看

一、概述

Ollama 是一个专为本地化 AI 模型设计的轻量级工具,通过轻量化架构与动态量化技术,实现了在消费级硬件上运行大模型的能力。相比云端服务,本地部署具有数据隐私可控、零延迟推理、硬件资源自主调配三大优势。

系统要求(配置越高越好):

  • 操作系统:Ubuntu 20.04 LTS 及以上
  • 内存:≥64GB(内存越大越好)
  • 存储:≥50GB 可用空间(模型文件较大)
  • GPU:NVIDIA 显卡,建议显存 ≥12GB,显存越大越好

二、Ollama 安装

2.1 一键安装(推荐)

在终端执行以下命令:

bash 复制代码
curl -fsSL https://ollama.com/install.sh | sh

此命令会自动下载并安装 Ollama 到系统。

国内网络加速:若下载缓慢,可设置镜像源后执行:

bash 复制代码
export OLLAMA_MIRROR="https://ghproxy.cn/https://github.com/ollama/ollama/releases/latest/download"
curl -fsSL https://ollama.com/install.sh | sed "s|https://ollama.com/download|$OLLAMA_MIRROR|g" | sh

2.2 本地安装(离线/手动)

如果网络环境受限或无法直接运行安装脚本,可参照 Ollama Linux 官方文档 手动下载安装包进行部署。

  1. 下载安装包

    Ollama GitHub Releases 下载适用于 Linux 的压缩包(ollama-linux-amd64.tar.zst),或通过官方链接直接下载:

    bash 复制代码
    curl -fsSL https://ollama.com/download/ollama-linux-amd64.tar.zst -o ollama-linux-amd64.tar.zst

    注意:由于国内访问 GitHub 较慢,上述命令可能超时。可尝试以下替代镜像源(任选其一):

    • Ollama 中文网:提供国内镜像下载地址,访问 https://github.com/ollamacn 获取最新链接。
    • Newbe 镜像站https://www.newbe.pro/Mirrors/Mirrors-ollama,选择 ollama-linux-amd64.tgz 下载。
    • GitHub 加速器 :可尝试 githubfast.com 等加速服务,但需注意其可用性可能随时变化。
  2. 解压到系统目录

    如从旧版本升级,需先移除旧库文件

    bash 复制代码
    sudo rm -rf /usr/lib/ollama

    将安装包解压到 /usr

    bash 复制代码
    sudo tar -C /usr -xf ollama-linux-amd64.tar.zst

    若下载的是 .tgz 格式,使用 sudo tar -C /usr -xzf ollama-linux-amd64.tgz

  3. 验证安装

    bash 复制代码
    ollama --version
  4. (可选)配置 systemd 服务

    手动安装后,如需开机自启,可参照官方文档创建 systemd 服务文件。快速启用(如果未自动生成):

    bash 复制代码
    sudo systemctl daemon-reload
    sudo systemctl enable ollama
    sudo systemctl start ollama

说明 :移除了原文档中使用 ghproxy.cncurl 下载命令,因为该镜像在实际使用中经常超时,效果不稳定。建议优先使用 Ollama 中文网或 Newbe 镜像站等更可靠的国内镜像源。

2.3 验证安装

bash 复制代码
ollama --version

2.4 启动 Ollama 服务

bash 复制代码
sudo systemctl start ollama
sudo systemctl enable ollama   # 设置开机自启

三、环境变量配置

Ollama 提供了多个环境变量用于自定义运行行为,以下是几个最常用的配置:

3.1 OLLAMA_MODELS------自定义模型存储路径

默认情况下,Ollama 将模型存储在 ~/.ollama/models(Linux)或 /usr/share/ollama/.ollama/models。系统盘空间有限时,建议将模型迁移到大容量硬盘。

方法一:通过 systemd 配置(推荐)

bash 复制代码
sudo systemctl edit ollama

添加以下内容:

复制代码
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"

保存后执行:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart ollama

方法二:临时设置(仅当前终端生效)

bash 复制代码
export OLLAMA_MODELS=/path/to/your/models

3.2 OLLAMA_HOST------允许远程访问

默认 Ollama 只监听本地 127.0.0.1,如需允许其他设备访问(如局域网内的 WebUI),设置为 0.0.0.0

复制代码
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

同时需要放行防火墙端口:

bash 复制代码
sudo ufw allow 11434/tcp

3.3 OLLAMA_KEEP_ALIVE------模型驻留时间

控制模型在内存中的存活时间,默认为 5m(5 分钟):

  • -1:模型永久驻留内存
  • 0:处理完请求后立即卸载
  • 24h:保持 24 小时

设置方式

bash 复制代码
export OLLAMA_KEEP_ALIVE=-1   # 临时设置

或通过 systemd 永久配置:

复制代码
[Service]
Environment="OLLAMA_KEEP_ALIVE=-1"

3.4 其他常用变量

变量 说明 默认值
OLLAMA_PORT 服务端口 11434
OLLAMA_NUM_PARALLEL 并发请求数 1
OLLAMA_MAX_LOADED_MODELS 同时加载的最大模型数 1
OLLAMA_LOAD_TIMEOUT 模型加载超时时间 5m

四、模型管理

4.1 拉取模型

bash 复制代码
ollama pull <模型名称>

例如拉取 DeepSeek-R1-7B:

bash 复制代码
ollama pull deepseek-r1:7b

4.2 查看本地模型

bash 复制代码
ollama list

4.3 运行模型

bash 复制代码
ollama run <模型名称>

进入交互式对话后,输入 /bye 或按 Ctrl+D 退出。

4.4 查看当前加载的模型

bash 复制代码
ollama ps

4.5 模型推荐

12GB 显存推荐(代码模型)
模型 量化后大小 特点
DeepSeek-Coder-V2-Lite ~9GB 12GB 显存能跑的最强代码模型
Qwen2.5-Coder-14B (Q4) ~8.7GB 性能强劲,紧随 DeepSeek
Qwen2.5-Coder-7B (Q4) ~4.4GB 轻量高效,可与 1.5B 模型组合使用
DeepSeek-Coder-6.7B ~4GB 经典代码模型
CodeGemma 7B ~5.6GB Google 出品,轻量级代码专家
多卡配置(14 × 12GB = 168GB 显存)

如果拥有多张 GPU,可配置 Ollama 使用所有显卡:

bash 复制代码
sudo systemctl edit ollama

添加:

复制代码
[Service]
Environment="CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7,8,9,10,11,12,13"
Environment="OLLAMA_SCHED_SPREAD=1"

保存后重启服务:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart ollama

在此配置下,可运行更大规模的模型,如 Qwen2.5-72B (INT4 量化,约 40-50GB)或 DeepSeek-V2-Lite(MoE 架构,资源友好)。


五、模型迁移到大硬盘

当模型文件过大需要迁移时,可按以下步骤操作:

5.1 定位模型实际存储位置

默认路径为 ~/.ollama/models,但有时模型可能被存储到其他位置(如 /usr/share/ollama/.ollama/models)。可通过以下命令查找:

bash 复制代码
sudo du -sh /usr/share/ollama/   # 检查该目录大小
sudo ls -la /usr/share/ollama/.ollama/models/

5.2 停止服务

bash 复制代码
sudo systemctl stop ollama

5.3 创建目标目录

bash 复制代码
sudo mkdir -p /data/ollama/models
sudo chown -R $(whoami):$(whoami) /data/ollama/models

5.4 复制模型文件

根据实际路径调整源目录:

bash 复制代码
sudo cp -rp /usr/share/ollama/.ollama/. /data/ollama/models/

5.5 验证复制完整性

bash 复制代码
sudo du -sh /data/ollama/models

应与原目录大小一致。

5.6 配置环境变量

bash 复制代码
sudo systemctl edit ollama

添加:

复制代码
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"

5.7 重启服务

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart ollama

5.8 验证

bash 复制代码
ollama list

5.9 (确认无误后)删除旧目录释放空间

bash 复制代码
sudo rm -rf /usr/share/ollama

权限说明 :Ollama 进程需要对目标路径的所有父目录具有执行(x)权限才能正常访问。如遇 permission denied,可执行 sudo chmod -R 755 /data/ollama/models


六、Python 调用本地 Ollama(OpenAI 兼容格式)

Ollama 提供了与 OpenAI API 完全兼容的接口,你可以使用 openai Python 库直接调用本地部署的模型。这种方式非常适合将模型集成到现有应用中。

6.1 安装 Python 依赖

首先确保已安装 openai 库(版本 ≥ 1.0.0):

bash 复制代码
pip install openai

6.2 编写调用代码

以下是一个完整的示例,展示了如何通过 OpenAI 兼容的接口与本地 Ollama 服务交互:

python 复制代码
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1", # 本地服务器IP地址
    api_key="ollama"  # 本地不需要真实 key,任意字符串即可
)

response = client.chat.completions.create(
    model="deepseek-r1:7b",  # 请替换为你实际存在的模型名称
    messages=[{"role": "user", "content": "帮我写一个 Hello world 代码"}]
)

print(response.choices[0].message.content)

6.3 运行与测试

将上述代码保存为 test_ollama.py,然后在终端执行:

bash 复制代码
python test_ollama.py

若一切正常,你将看到模型返回的 Python 代码段。

6.4 注意事项

  • 模型名称model 参数必须与你本地已拉取的模型名称完全一致。可通过 ollama list 查看已下载的模型列表。
  • base_url :如果 Ollama 服务不在本机,或者使用了非默认端口,请相应修改 base_url(例如 http://192.168.2.156:11434/v1)。
  • 超时处理 :若模型加载较慢,可以在客户端设置超时时间(如 timeout=60.0)。
  • 流式输出 :如需流式接收回复,可使用 stream=True 并迭代响应。

6.5 进阶用法

python 复制代码
# 流式输出示例
response = client.chat.completions.create(
    model="deepseek-r1:7b",
    messages=[{"role": "user", "content": "帮我写一个 Hello world 代码"}],
    stream=True
)
for chunk in response:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

更多用法可参考 OpenAI API 文档Ollama API 文档


七、常见问题排查

7.1 连接超时(IPv6 问题)

如果遇到 network is unreachabledial tcp [2606:4700::...]:443: connect: network is unreachable 错误,可临时禁用 IPv6:

bash 复制代码
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1

7.2 权限不足

如遇 permission denied,检查模型目录权限:

bash 复制代码
sudo chown -R $(whoami):$(whoami) /path/to/models
sudo chmod -R 755 /path/to/models

7.3 服务启动失败

查看详细日志:

bash 复制代码
sudo journalctl -u ollama -n 50 --no-pager

7.4 模型加载超时

对于超大模型,可延长加载超时时间:

复制代码
[Service]
Environment="OLLAMA_LOAD_TIMEOUT=20m"

7.5 模型下载中断

Ollama 支持断点续传,重新运行 ollama pull 即可继续下载。若反复中断,可考虑手动下载 GGUF 文件并通过 Modelfile 导入。

7.6 模型不支持工具调用

部分模型(如 deepseek-coder-v2:lite)不支持工具调用(Function Calling),会导致 Continue 等插件报错 does not support tools。解决方法:

  • 换用支持工具调用的模型(如 llama3.1qwen2.5 系列)
  • 在工具配置中禁用工具调用功能

八、总结

Ollama 极大降低了本地部署大模型的门槛。通过合理配置环境变量(特别是 OLLAMA_MODELS 自定义存储路径),可以有效管理系统盘空间;配合 Python 的 OpenAI 兼容接口,可以将模型能力无缝集成到各类应用中。

核心操作流程回顾

  1. 安装:一键脚本或手动下载解压
  2. 配置 :通过 systemctl edit ollama 设置环境变量
  3. 模型管理ollama pull 下载,ollama run 运行
  4. 迁移 :复制模型目录并修改 OLLAMA_MODELS 指向新路径
  5. 编程调用 :使用 openai 库通过标准 API 调用本地模型
  6. 排查 :查看日志 journalctl -u ollama 定位问题

在实际部署中,建议根据硬件配置选择合适的模型量化版本,以达到性能与资源消耗的最佳平衡。


附录:常用命令速查

命令 说明
ollama --version 查看版本
ollama list 列出本地模型
ollama pull <model> 下载模型
ollama run <model> 运行模型
ollama ps 查看加载中的模型
ollama stop <model> 卸载模型
ollama serve 手动启动服务
ollama create <name> -f Modelfile 从 Modelfile 创建模型
sudo systemctl status ollama 查看服务状态
sudo journalctl -u ollama -n 50 查看服务日志
相关推荐
大模型丫丫1 小时前
Loop Engineering:从强化学习视角看 Agent 循环的本质
java·人工智能·学习
乱世刀疤1 小时前
AI Weekly 7.27-8.2
人工智能
天天爱吃肉82181 小时前
# 商用车多体动力学实战笔记|第7篇:制动系统与制动热衰退、ABS滞环控制
大数据·人工智能·笔记·python·嵌入式硬件·汽车
牧艺1 小时前
别让 Agent 猜需求:前端用「一页 Spec」把返工砍掉一半
人工智能·agent·vibecoding
bamb001 小时前
一个项目带你入门AI应用开发08
python
时空节拍AI数字人1 小时前
多模态交互数字人:语音+视觉+触控如何融合
人工智能·microsoft·ai·aigc·交互·语音识别
quanjui1 小时前
【智能体从对话到决策】虚拟环境下大语言模型的部署与智能体交互研究
人工智能·语言模型·交互
鸿芯微控科技1 小时前
MFC质量流量控制器流量不准怎么排查?设定值、反馈值与参考流量对比,附Python代码
c++·python·mfc
bellus-1 小时前
win11使用ubuntu 26.04
linux·运维·ubuntu