Ollama:本地部署与运行大型语言模型工具
概述
Ollama 是一个专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计的工具。它支持 macOS、Linux 和 Windows 多个平台,通过命令行即可快速拉取、运行和管理模型。
官方网站:https://ollama.com/
GitHub:https://github.com/ollama/ollama
安装
Linux 安装
由于服务器环境通常使用 Linux,以下以 Linux 操作系统为例记录说明。通过命令直接安装如下:
root@master:~/work# curl -fsSL https://ollama.com/install.sh | sh
安装过程中会显示下载进度、创建用户、配置 systemd 服务等步骤。若检测到 NVIDIA GPU,会自动识别。
验证安装
查看 ollama 的状态:
root@master:~/work# systemctl status ollama
输出应显示 Active: active (running)。安装成功后执行 ollama -v 命令,查看版本信息:
root@master:~# ollama -v
ollama version is 0.1.38
配置
编辑 /etc/systemd/system/ollama.service 文件来对 ollama 进行配置。
1. 更改 HOST
默认参数配置启动时仅本地访问,需配置 HOST 开启监听任何来源 IP:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
2. 更改模型存储路径
不同操作系统大模型存储路径默认如下:
- macOS:
~/.ollama/models
- Linux:
/usr/share/ollama/.ollama/models
- Windows:
C:\Users\.ollama\models
官方提供设置环境变量 OLLAMA_MODELS 来更改模型文件的存储路径:
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"
注意:指定目录的权限需正确。如果服务无法启动,可通过授权给相应的目录权限解决:
chown ollama:ollama /data/ollama/models
查看日志调试问题:
journalctl -u ollama
3. 更改运行 GPU
配置环境变量 CUDA_VISIBLE_DEVICES 来指定运行 Ollama 的 GPU,适用于多卡环境:
Environment="CUDA_VISIBLE_DEVICES=0,1"
4. 应用配置
重载 systemd 并重启 Ollama:
systemctl daemon-reload
systemctl restart ollama
5. 访问测试
浏览器访问 http://IP:11434/,出现 Ollama is running 代表成功。

Ollama 命令
Shell 窗口输入 ollama,打印相关命令说明:
root@master:~/work# ollama
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
常用操作命令:
ollama serve: 启动 ollama
ollama pull: 从注册仓库中拉取模型
ollama run: 运行模型
ollama list: 列出已下载模型
ollama rm: 删除模型
模型库
Ollama 的 Library 类似 Docker Hub,在这里可以查找受 Ollama 支持的大模型。
以下是一些可以下载的示例模型:
注意:Ollama 支持 8 GB 的 RAM 可用于运行 7B 型号,16 GB 可用于运行 13B 型号,32 GB 可用于运行 33B 型号。当然这些模型是经过量化过的。

使用示例
下载模型
root@master:~# ollama pull llama3:8b
pulling manifest
pulling 00e1317cbf74... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 4.7 GB
verifying sha256 digest
writing manifest
success
查看模型
root@master:~# ollama list
NAME ID SIZE MODIFIED
llama3:8b a6990ed6be41 4.7 GB 3 minutes ago
运行模型并进行对话
root@master:~# ollama run llama3:8b
>>> hi
Hi! How's your day going so far? I'm here to chat and help with any questions or topics you'd like to discuss. What's on your mind?
自定义模型
从 GGUF 导入
Ollama 支持在 Modelfile 文件中导入 GGUF 模型。创建一个名为 Modelfile 的文件,其中包含一条 FROM 指令,包含要导入的模型的本地文件路径:
FROM ./Llama3-FP16.gguf
在 Ollama 中创建模型:
ollama create llama3 -f Modelfile
运行模型:
ollama run llama3
自定义提示
Ollama 库中的模型可以通过提示进行自定义。例如设置温度参数和 SYSTEM 消息:
FROM llama3
# 设置温度参数
PARAMETER temperature 1
# 设置 SYSTEM 消息
SYSTEM """
作为 AI 智能助手,你将竭尽所能为员工提供严谨和有帮助的答复。
"""
更多参数说明参考官方 Modelfile 文档。
从 PyTorch 或 Safetensors 导入
所谓从 PyTorch 或 Safetensors 导入 Ollama,其实就是使用 llama.cpp 项目,对 PyTorch 或 Safetensors 类型的模型进行转换、量化处理成 GGUF 格式的模型,然后再用 Ollama 加载使用。
开启服务
运行模型后,执行 ollama serve 命令启动 Ollama 服务,然后就可以通过 API 形式进行模型调用。
ollama serve 会自动启动一个 http 服务,可以通过 http 请求模型服务。首次启动会自动生成 ssh 私钥文件,同时打印公钥内容。
root@master:/usr/local/docker# ollama serve
...
time=2024-05-16T09:27:27.635Z level=INFO source=payload.go:44 msg="Dynamic LLM libraries [cpu cpu_avx cpu_avx2 cuda_v11 rocm_v60002]"
time=2024-05-16T09:27:31.401Z level=INFO source=types.go:71 msg="inference compute" id=GPU-4c974b93-cf0c-486e-9e6c-8f91bc02743c library=cuda compute=7.0 driver=12.2 name="Tesla V100S-PCIE-32GB" total="31.7 GiB" available="16.5 GiB"

REST API
更多具体 API,请参阅官方 API 文档。
1. 生成回复
curl http://IP:11434/api/chat -d '{
"model": "llama3:8b",
"messages": [
{ "role": "user", "content": "你好啊" }
]
}'
请求参数示例:
{
"model": "llama3",
"prompt": "你好啊",
"stream": false
}
2. 与模型聊天
curl http://IP:11434/api/chat -d '{
"model": "llama3",
"messages": [
{
"role": "system",
"content": "你是一个乐于助人的 AI 助手。"
},
{
"role": "user",
"content": "你好啊"
}
],
"stream": false
}'
One-API
One-API 是一个 OpenAI 接口管理 & 分发系统,支持各类大模型。这里使用 Docker 快速进行部署。
GitHub:https://github.com/songquanpeng/one-api
部署
拉取镜像:
docker pull justsong/one-api
创建挂载目录:
mkdir -p /usr/local/docker/oneapi
启动容器:
docker run --name one-api -d --restart always -p 3001:3000 -e TZ=Asia/Shanghai -v /usr/local/docker/oneapi:/data justsong/one-api
访问 IP:3001,初始账号用户名为 root,密码为 123456。
管理本地模型
在创建渠道时选择 Ollama,然后手工填上自己要使用的模型,密钥任意,最重要的是后面在代理中写上自己 ollama 服务的地址即可。
测试成功后,在各类 OpenAI 套壳软件中,通过配置类似于 OpenAI 的密钥、API 地址等参数,就可以像使用 OpenAI 一样。
Open WebUI
Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线操作。它支持各种 LLM 运行程序,包括 Ollama 和 OpenAI 兼容的 API。
GitHub:https://github.com/open-webui/open-webui
Docker 部署
使用 Docker 快速安装部署 Open WebUI,需要注意:确保在 Docker 命令中包含 -v open-webui:/app/backend/data。因为它确保数据库正确安装并防止任何数据丢失。
- 默认配置安装(如果计算机上有 Ollama):
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
- Ollama 位于不同的服务器上:
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
- 支持 Nvidia GPU:
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
- 捆绑 Ollama 支持:
使用 GPU 支持:
docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
仅适用于 CPU:
docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
配置
访问 http://IP:3000,创建一个账号 (管理员)。进入 Open WebUI 后,在 Settings 中进行相关设置,如设置语言、Ollama 的访问地址、选择模型等。

常见问题与优化
内存不足
如果运行大模型时显存或内存不足,可以尝试以下方法:
- 使用量化更小的模型(如 Q4_K_M 代替 FP16)。
- 减少
OLLAMA_MAX_LOADED_MODELS 的值。
- 关闭其他占用 GPU 的程序。
远程访问失败
如果无法通过 IP 访问 Ollama 服务:
- 检查防火墙是否开放了 11434 端口。
- 确认
OLLAMA_HOST 配置为 0.0.0.0。
- 检查 systemd 服务状态及日志。
卸载 Ollama
停止并禁用服务:
systemctl stop ollama
systemctl disable ollama
删除服务文件和 Ollama 二进制文件:
rm /etc/systemd/system/ollama.service
rm $(which ollama)
清理 Ollama 用户和组:
rm -r /usr/share/ollama
userdel ollama
groupdel ollama
清理模型数据(可选):
rm -rf ~/.ollama/models