什么是 Ollama?
Ollama 是一个可以在本地部署和管理开源大语言模型的框架。它极大地简化了开源大语言模型的安装和配置细节,一经推出就广受好评,目前在 GitHub 上已获得大量 Star。
不管是著名的 Llama 系列,还是最新的 AI 新贵 Mistral,各种开源大语言模型都可以用 Ollama 实现一键安装并运行。支持的更多模型列表可以查看 Ollama 官网。
| Model | Parameters | Size | Download |
| --- | --- | --- |
| Llama 2 | 7B | 3.8GB | ollama run llama2 |
| Mistral | 7B | 4.1GB | ollama run mistral |
如何安装 Ollama 框架?
Ollama 支持各个平台:Mac、Windows 和 Linux,也提供了 Docker Image。在 Ollama 官网或 GitHub 可以下载,然后一键安装 Ollama 框架。
- Linux:
curl -fsSL https://ollama.com/install.sh | sh
- macOS:
curl -fsSL https://ollama.com/install.sh | sh
- Windows: 下载安装包后直接运行安装程序。
由于 Windows 上的相关配置可能随版本更新而变化,以下示例主要以 Linux 上运行 Ollama 来举例说明。
运行 Ollama 服务
在 Ollama 安装完成后,一般会自动启动 Ollama 服务,而且会自动设置为开机自启动。安装完成后,可以使用如下命令查看 Ollama 是否正常启动。如果显示'Active: active (running)'表示 Ollama 已经正常启动。
$ systemctl status ollama
● ollama.service - Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/ollama.service.d
└─environment.conf
Active: active (running) since Thu 2024-03-07 09:09:39 HKT; 4 days ago
Main PID: 19975 (ollama)
Tasks: 29 (limit: 69456)
Memory: 1.1G
CPU: 14min 44.702s
CGroup: /system.slice/ollama.service
└─19975 /usr/local/bin/ollama serve
在 Linux 上,如果 Ollama 未启动,可以用如下命令启动 Ollama 服务:ollama serve,或者 sudo systemctl start ollama。
通过分析 Linux 的安装脚本 install.sh,可以看到其中已经将 ollama serve 配置为一个系统服务,所以可以使用 systemctl 来 start / stop ollama 进程。
status "Creating ollama systemd service..."
cat <<EOF | $SUDO tee /etc/systemd/system/ollama.service >/dev/null
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=$BINDIR/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
启动 Ollama 服务后,可以查看当前的 Ollama 版本,以及常用命令。
~$ ollama -v
ollama version is 0.1.20
~$ ollama --help
Large language model runner
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
cp Copy a model
rm Remove a model
help Help about any command
如何下载并运行大语言模型?
至此,已经完成 Ollama 框架的安装,接下来,可以用一条命令在本地运行大语言模型。以著名的 Llama 为例:ollama run llama2。
如果还没有下载过指定的大语言模型,这条命令将会先执行 ollama pull llama2,将大语言模型下载到本地,再在本地运行大语言模型。
下载完成后,运行效果如下:
:~$ ollama run llama2
>>> who are you?
I am LLaMA, an AI assistant developed by Meta AI that can understand and respond to human input in a conversational manner...
>>> Send a message (/? for help)
模型管理命令
除了运行模型,还可以使用以下命令管理本地模型:
- 列出已下载的模型:
ollama list
- 拉取新模型:
ollama pull <model_name>
- 删除模型:
ollama rm <model_name>
- 查看模型详情:
ollama show <model_name>
REST API 与 Python 集成
Ollama 提供了 HTTP API 接口,方便开发者集成到应用程序中。
HTTP 请求示例
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt":"Why is the sky blue?",
"stream": false
}'
返回结果包含 JSON 格式的数据,包括模型名称、生成内容、耗时等信息。
Python 客户端示例
使用 Python 的 requests 库可以更灵活地调用 Ollama API:
import requests
response = requests.post('http://localhost:11434/api/generate', json={
'model': 'llama2',
'prompt': 'Why is the sky blue?',
'stream': False
})
if response.status_code == 200:
data = response.json()
print(data['response'])
else:
print(f"Error: {response.status_code}")
使用 API 接口,就可以实现更多灵活的功能,比如与 IDE 插件配合,实现本地的编程助手。
FAQ 与高级配置
如何查看运行的日志?
在 Linux 上运行命令 journalctl -u ollama,即可查看运行日志。
如何配置本地大模型对局域网提供服务?
在 Linux 上创建配置文件,并配置环境变量 OLLAMA_HOST 来指定对局域网提供服务的地址,再重启 Ollama 服务即可。
:~$ cat /etc/systemd/system/ollama.service.d/environment.conf
[Service]
Environment=OLLAMA_HOST=0.0.0.0:11434
如此配置后,即可由一台 GPU 服务器为本地局域网提供大语言模型的服务。
本地有多张 GPU,如何用指定的 GPU 来运行 Ollama?
在 Linux 上创建配置文件,并配置环境变量 CUDA_VISIBLE_DEVICES 来指定运行 Ollama 的 GPU,再重启 Ollama 服务即可。
:~$ cat /etc/systemd/system/ollama.service.d/environment.conf
[Service]
Environment=CUDA_VISIBLE_DEVICES=1,2
下载的大模型存储在哪个路径?
默认情况下,不同操作系统存储的路径如下:
- macOS:
~/.ollama/models
- Linux:
/usr/share/ollama/.ollama/models
- Windows:
C:\Users\<username>\.ollama\models
如何修改大模型存储的路径?
Linux 平台安装 Ollama 时,默认安装时会创建用户 ollama,再将模型文件存储到该用户的目录。但由于大模型文件往往特别大,有时需要将大模型文件存储到专门的数据盘,此时就需要修改大模型文件的存储路径。
官方提供的方法是设置环境变量 OLLAMA_MODELS。如果在安装完成后,可以创建如下配置文件,并配置环境变量 OLLAMA_MODELS 来指定存储路径,再重启 Ollama 服务。
:~$ cat /etc/systemd/system/ollama.service.d/environment.conf
[Service]
Environment=OLLAMA_MODELS=/path/to/custom/storage/OLLAMA_MODELS
若在安装前希望彻底修改,也可以修改安装脚本 install.sh,取消其中创建用户 ollama 的步骤,使用当前用户启动服务,并添加环境变量指定存储路径。
常见问题排查
- 端口冲突:如果 11434 端口被占用,请修改
OLLAMA_HOST 环境变量指定其他端口。
- 权限问题:确保当前用户有权限访问模型存储目录,必要时调整目录权限或使用 sudo。
- 显存不足:如果运行大模型时报错,尝试选择参数量更小的模型(如 3B 或 7B 版本),或增加物理内存。