目录
- 大模型与Ollama初体验
-
- Ollama介绍和特性
- Ollama与其它工具对比
- Ollama安装部署
-
- [Linux 手动安装 Ollama](#Linux 手动安装 Ollama)
- [Ollama 常用命令详解](#Ollama 常用命令详解)
- [Ollama WebUI 部署](#Ollama WebUI 部署)
- [Ollama 服务端常用配置](#Ollama 服务端常用配置)
- 限制使用指定GPU
大模型与Ollama初体验
Ollama介绍和特性
Ollama是一个轻量级、易于使用的大模型管理和部署工具,主要用于简化大模型的运行和交互。并且为开发者和用户提供了快速加载、管理和调用多种主流大模型的能力,同时支持本地化部署各类大模型。
核心特点:
- ✓ 轻量化设计:Ollama体积小巧,安装简单,适合个人开发者和小型团队
- ✓ 多模型支持:支持多种主流大模型,如Llama系列、Qwen系列、Deepseek系列等
- ✓ 资源优化:通过量化技术降低模型显存占用,减少对高性能GPU的依赖
- ✓ 易用性:提供命令行工具和图形化界面,方便用户操作
- ✓ 扩展性强:可以与其他工具(如 Kubernetes、Docker)结合,实现分布式部署和管理
Ollama与其它工具对比
Ollama
安装简单,提供 CLI 和 WebUI,适合初学者和开发者。支持量化技术降低内存占用,适合普通硬件、支持 Linux、macOS 和 Windows、支持大部分主流模型。但是 Ollama 并发性能不如 vLLM。
vLLM
vLLM 是一个高效的大模型推理和服务引擎,在多 GPU 环境下性能表现优异,更适合大规模在线推理服务。但是 vLLM 的部署复杂度较高,需要一定的技术基础,主要面向 Linux,跨平台支持有限。
LocalAI
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 只能使用 0 和 1 两个 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"