今天也是心血来潮,本地搭建了个 Ollama
来玩玩
系统:Arch Linux 6.10.2
NVIDIA 驱动版本:555.58.02
- 安装
ollama
,这里选择了 cuda
版本,能发挥显卡的力量
1
| sudo pacman -S ollama-cuda
|
- 启动服务
1
| sudo systemctl enable --now ollama.service
|
如果需要配置其他服务进行远程连接,比如 docker 部署 open-webui
,则需要修改配置文件 ollama.service
加环境变量,加个 OLLAMA_HOST
,因为 systemd
不认识系统的环境变量,所以不能修改 /etc/profile
之类的配置,而是要单独修改 systemd
配置
1
| sudo systemctl edit ollama.service
|
加一段配置在 ### Editing
和 ### Edits
之间
1 2
| [Service] Environment="OLLAMA_HOST=0.0.0.0"
|
接着两部曲
1 2
| sudo systemctl daemon-reload sudo systemctl restart ollama.service
|
最后可以检查一下 sudo systemctl cat ollama.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| # /etc/systemd/system/ollama.service [Unit] Description=Ollama Service Wants=network-online.target After=network.target network-online.target
[Service] ExecStart=/usr/bin/ollama serve WorkingDirectory=/var/lib/ollama Environment="HOME=/var/lib/ollama" User=ollama Group=ollama Restart=on-failure RestartSec=3 Type=simple PrivateTmp=yes ProtectSystem=full ProtectHome=yes
[Install] WantedBy=multi-user.target
# /etc/systemd/system/ollama.service.d/override.conf [Service] Environment="OLLAMA_HOST=0.0.0.0"
|
(这里不建议直接修改原来的配置文件,用 edit
来修改会往同名 service.d
文件夹里加一段配置 override.conf
优先加载,这样不怕改烂了原来的配置,也不会出现 .pacmew
这种问题)
- 跑模型
比如跑个通义千问
1 2 3 4 5 6
| ➜ ~ ollama run qwen2 >>> 你是谁 我是阿里云开发的一款超大规模语言模型,我叫通义千问。作为一个AI助手,我的目标是帮助用户获得准确、有用的信息,解决他们的问题和困惑。我会不断学习和进步,不 断提升自己的能力,为用户提供更好的服务。如果您有任何问题或需要帮助,请随时告诉我,我会尽力提供支持。
>>> Send a message (/? for help)
|
- 跑个
open-webui
AUR 仓库里有包,但是编译不过,所以放弃,转 docker
1 2 3 4 5 6 7 8 9 10 11
| services: open-webui: container_name: open-webui image: linweiyuan/open-webui ports: - 8080:8080 volumes: - ./data:/app/backend/data extra_hosts: - host.docker.internal:host-gateway restart: unless-stopped
|
- 测试结果
Spring AI
测试
1 2 3 4 5
| spring: ai: ollama: chat: model: qwen2
|
也正常
1 2 3 4 5 6 7 8 9 10 11
| ➜ ~ http :8080/ai/generate message==你是谁 HTTP/1.1 200 Connection: keep-alive Content-Type: application/json Date: Sat, 03 Aug 2024 16:00:30 GMT Keep-Alive: timeout=60 Transfer-Encoding: chunked
{ "generation": "我是阿里云开发的一款超大规模语言模型,我叫通义千问。" }
|
华丽的分割线
难绷