Ollama 实战笔记:本地大模型安装配置全教程

目录

大模型与Ollama初体验

Ollama介绍和特性

Ollama是一个轻量级、易于使用的大模型管理和部署工具,主要用于简化大模型的运行和交互。并且为开发者和用户提供了快速加载、管理和调用多种主流大模型的能力,同时支持本地化部署各类大模型。

核心特点:

  • ✓ 轻量化设计:Ollama体积小巧,安装简单,适合个人开发者和小型团队
  • ✓ 多模型支持:支持多种主流大模型,如Llama系列、Qwen系列、Deepseek系列等
  • ✓ 资源优化:通过量化技术降低模型显存占用,减少对高性能GPU的依赖
  • ✓ 易用性:提供命令行工具和图形化界面,方便用户操作
  • ✓ 扩展性强:可以与其他工具(如 Kubernetes、Docker)结合,实现分布式部署和管理

Ollama与其它工具对比

Ollama

官网:https://ollama.com/

安装简单,提供 CLI 和 WebUI,适合初学者和开发者。支持量化技术降低内存占用,适合普通硬件、支持 Linux、macOS 和 Windows、支持大部分主流模型。但是 Ollama 并发性能不如 vLLM。

vLLM

官网:https://vllm.ai/

vLLM 是一个高效的大模型推理和服务引擎,在多 GPU 环境下性能表现优异,更适合大规模在线推理服务。但是 vLLM 的部署复杂度较高,需要一定的技术基础,主要面向 Linux,跨平台支持有限。

LocalAI

官网:https://localai.io/

LocalAI 和 Ollama 相似,是一个轻量级的本地大模型服务框架,开箱即用,无需复杂配置。但是性能优化不如 vLLM 和 Ollama,并且功能较少,比如不支持多线程加速等。

Ollama安装部署

Linux 手动安装 Ollama

参考文档:https://github.com/ollama/ollama/blob/main/docs/linux.md

下载并安装 Ollama:

bash 复制代码
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
sudo tar -C /usr -xzf ollama-linux-amd64.tgz

创建 Ollama 专用用户:

bash 复制代码
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
sudo usermod -a -G ollama $(whoami)

创建 Ollama 模型存储目录:

bash 复制代码
mkdir /data/ollama/models
chown -R ollama.ollama /data/ollama/

创建 Ollama 启动 Service:

systemd 复制代码
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/data/ollama/models"

[Install]
WantedBy=default.target

将上述配置保存到 /etc/systemd/system/ollama.service

启动 Ollama 服务:

bash 复制代码
systemctl daemon-reload
systemctl enable --now ollama

查看启动状态:

bash 复制代码
systemctl status ollama

预期输出:

复制代码
● ollama.service - Ollama Service
   Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: disabled)
   Active: active (running) since ...

测试端口:

bash 复制代码
curl 127.0.0.1:11434

预期输出:

复制代码
Ollama is running

Ollama 常用命令详解

下载模型
bash 复制代码
ollama pull deepseek-r1:1.5b

输出示例:

复制代码
pulling manifest
pulling aabd4debf0c8... 100% ▕██████████████████████████████████████████████████████████████████████████▏ 1.1 GB
pulling 369ca498f347... 100% ▕██████████████████████████████████████████████████████████████████████████▏ 387 B
pulling 6e4c38e1172f... 100% ▕██████████████████████████████████████████████████████████████████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕██████████████████████████████████████████████████████████████████████████▏ 148 B
pulling a85fe2a2e58e... 100% ▕██████████████████████████████████████████████████████████████████████████▏ 487 B
verifying sha256 digest
writing manifest
success
查看本地模型列表
bash 复制代码
ollama list

输出示例:

复制代码
NAME               ID            SIZE    MODIFIED
deepseek-r1:1.5b   a42b25d8c10a 1.1 GB  3 minutes ago
phi:latest         e2fd6321a5fe 1.6 GB  27 minutes ago
查看模型详情
bash 复制代码
ollama show deepseek-r1:1.5b

输出示例:

复制代码
  architecture        qwen2
  parameters          1.8B
  context length      131072
  embedding length    1536
  quantization        Q4_K_M

Parameters
  stop "<|begin▁of▁sentence|>"
  stop "<|end▁of▁sentence|>"
  stop "<|User|>"
  stop "<|Assistant|>"

License
  MIT License
  Copyright (c) 2023 DeepSeek
启动一个模型并进入交互模式
bash 复制代码
ollama run phi

交互示例:

复制代码
>>> who are you?
I am Phi, a large language model trained by Microsoft. I'm here to help you with any questions or tasks you have. What can I assist you with today?
查看当前正在运行的模型
bash 复制代码
ollama ps

输出示例:

复制代码
NAME               ID            SIZE    PROCESSOR   UNTIL
phi:latest         e2fd6321a5fe 5.4 GB  100% GPU   4 minutes from now
deepseek-r1:1.5b   a42b25d8c10a 2.0 GB  100% GPU   About a minute from now
停止一个运行中的模型
bash 复制代码
ollama stop phi:latest

停止后再次查看:

bash 复制代码
ollama ps

输出示例:

复制代码
NAME               ID            SIZE    PROCESSOR   UNTIL
deepseek-r1:1.5b   a42b25d8c10a 2.0 GB  100% GPU   17 seconds from now
删除一个本地模型
bash 复制代码
ollama rm phi:latest

输出示例:

复制代码
deleted 'phi:latest'

删除后再次查看:

bash 复制代码
ollama list

输出示例:

复制代码
NAME               ID            SIZE    MODIFIED
deepseek-r1:1.5b   a42b25d8c10a 1.1 GB  42 hours ago

更详细的命令参考: https://docs.ollama.com/cli

Ollama WebUI 部署

注意:Ollama WebUI 需要使用 Docker 启动,如果服务器没有安装 Docker,需要先安装 Docker。

创建数据目录:

bash 复制代码
mkdir -p /data/ollama/webui

直接使用 docker 部署即可:

bash 复制代码
docker run -d -p 3000:8080 -e ENABLE_OPENAI_API=false -e OLLAMA_BASE_URL=http://[OLLAMA_HOST]:11434 -e HF_HUB_OFFLINE=1 -v /data/ollama/models:/root/.ollama -v /data/ollama/webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

启动后通过宿主机的 3000 端口访问即可。

Ollama 服务端常用配置

启动 Ollama 服务端:

bash 复制代码
ollama serve

使用自定义端口启动:

bash 复制代码
OLLAMA_HOST=0.0.0.0:11435 ollama serve

常用环境变量:

环境变量 说明 默认值
OLLAMA_DEBUG 启用调试模式,设置为 1 表示开启 -
OLLAMA_HOST 指定 Ollama 服务绑定的 IP 地址和端口 127.0.0.1:11434
OLLAMA_KEEP_ALIVE 设置模型在内存中保持加载的时间 5m
OLLAMA_MAX_LOADED_MODELS 限制每块 GPU 上同时加载的最大模型数量 -
OLLAMA_MAX_QUEUE 设置请求队列的最大长度,超过限制新请求会被拒绝 -
OLLAMA_MODELS 指定模型文件存储的目录路径 ~/.ollama/models
OLLAMA_NUM_PARALLEL 限制同时处理的最大并行请求数 -
OLLAMA_NOPRUNE 禁用启动时模型清理操作 -
OLLAMA_ORIGINS 指定允许跨域访问的来源列表(逗号分隔) -
OLLAMA_SCHED_SPREAD 强制将模型调度到所有可用 GPU 上,均匀分布 -
OLLAMA_FLASH_ATTENTION 启用 Flash Attention 技术,硬件不支持可能报错 -
OLLAMA_KV_CACHE_TYPE 指定 K/V 缓存的量化类型 f16
OLLAMA_GPU_OVERHEAD 预留显存,防止其他进程因显存不足而崩溃 -
OLLAMA_LOAD_TIMEOUT 设置模型加载的最大超时时间(分钟) 5m

限制使用指定GPU

默认情况下,Ollama 可以使用所有可用 GPU 进行模型推理。如果需要限制 Ollama 只能使用特定的 GPU,可以通过 CUDA_VISIBLE_DEVICES 环境变量进行控制。

例如,限制 Ollama 只能使用 01 两个 GPU,编辑 /etc/systemd/system/ollama.service

systemd 复制代码
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/data/ollama/models"
Environment="CUDA_VISIBLE_DEVICES=0,1"

[Install]
WantedBy=default.target

修改完成后,重新加载配置并重启 Ollama 服务:

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

参考官网说明: https://docs.ollama.com/gpu#gpu-selection

进阶说明

如果你的系统中搭载了多张英伟达显卡,且希望限制 Ollama 仅使用其中部分显卡,可将 CUDA_VISIBLE_DEVICES 设置为以逗号分隔的显卡列表。

  • 使用数字编号:可以直接使用数字编号作为显卡标识,但编号顺序可能会发生变化
  • 使用 UUID(推荐):使用 UUID 更为可靠,不会因硬件变更而改变

查看显卡的 UUID:

bash 复制代码
nvidia-smi -L

强制使用 CPU 运算:如果想忽略显卡并强制 Ollama 使用 CPU 运算,可输入无效的显卡编号,例如:

复制代码
Environment="CUDA_VISIBLE_DEVICES=-1"
相关推荐
淬炼之火4 小时前
笔记:对MoE混合专家模型的学习和思考
人工智能·笔记·学习·语言模型·自然语言处理
鸟电波4 小时前
硬件笔记——Allegro绘制PCB(未完待续)
笔记·嵌入式硬件·智能硬件
中屹指纹浏览器4 小时前
2026分布式多账号运维体系中指纹浏览器的架构设计与工程落地
经验分享·笔记
布局呆星4 小时前
Vue3+TS 笔记:Props 与 Emits 的正确打开方式
javascript·vue.js·笔记
talen_hx2964 小时前
《kafka核心源码解读》学习笔记 Day 02
笔记·学习·kafka
oi..4 小时前
CSRF安全攻防:Referer 校验与 Token 防护详解
前端·网络·笔记·测试工具·安全·网络安全·csrf
Fate_I_C4 小时前
创意创新孵化器平台
笔记
智者知已应修善业4 小时前
【51单片机独立按键控制数码管动态显示和LED间隔闪烁并清零】2023-5-28
c语言·经验分享·笔记·算法·51单片机
talen_hx2964 小时前
《零基础入门Spark》学习笔记 Day 15
大数据·笔记·学习·spark