周末闲着无事,想试试安装的 PicHome 个人版 3.0.0 中的 ollama 图片理解。这个 ollama 属于第一次接触,但看着与其并列的几个,如火星图片理解、阿里云以图搜图、阿里百炼都属于大模型应用,这个也应该类似。这些图片理解主要的功能就是根据 Prompt 提示词,给出图片内容对应的标签、描述和文件名,可以批量执行,不需要个人去定义。

基础环境

ollama 官网 上可以找到很多的大模型,按照文档里的说法,这是属于跟 docker 类似的管理工具,只不过这个是安装管理开源大模型的。我也是这时候才了解到,我的服务器 ecs.e-c1m4.large 没有独立GPU,无法使用Ollama的GPU加速功能。

lspci | grep -i "vga\|3d\|display"
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
服务器没有配备物理GPU,甚至连一块NVIDIA显卡的影子都没有。它只有一个用于基础显示的虚拟显卡,其性能主要用于系统管理,完全不支持Ollama这类AI工具进行GPU加速。

安装 ollama

没有也要硬上,直接使用 linux 的脚本安装:

curl -fsSL https://ollama.com/install.sh | sh

太慢了,几分钟才 0.1%,Ctrl+C 取消下载,问 deepseek 要解决方法。使用 GitHub 加速器不管用,然后使用了手动下载再上传解压的策略。

ollama github 发布版本,选择当前 v0.20.3 版本下的 ollama-linux-arm64.tar.zst

#.zst格式需要zstd工具来解压
sudo apt update && sudo apt install zstd -y
# 上传到服务器解压
sudo tar -C /usr -xf ollama-linux-amd64.tar.zst
# 查看版本
ollama --version
ollama version is 0.20.2

之后是把 ollama 添加为服务运行:

# 创建服务文件
sudo tee /etc/systemd/system/ollama.service > /dev/null <<EOF
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"

[Install]
WantedBy=default.target
EOF

# 创建运行用户

sudo useradd -r -s /bin/false -U -m -d /nonexistent ollama

# 重载并启动服务

sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama

# 检查服务状态
sudo systemctl status ollama

然后修改配置允许远程服务,我这里因为有阿里云的安全组,所以直接打开也没事。后面证明确实需要,不仅是 pichome 的 docker 需要访问,本地测试开源大模型是否有效也需要 127.0.0.1

sudo systemctl edit ollama
# 添加,Ctrl+o 保存,Ctrl+x 退出
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
# 重启服务
sudo systemctl daemon-reload
sudo systemctl restart ollama
# 验证服务
curl http://localhost:11434
Ollama is running

curl -I http://localhost:11434/
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Date: Sun, 05 Apr 2026 08:16:11 GMT
Content-Length: 17

sudo netstat -tulnp | grep 11434
tcp6       0      0 :::11434                :::*                    LISTEN      825/ollama 

# 查看 ollama 服务的完整配置
systemctl cat ollama

使用 ollama 下载、配置开源大模型

让 deepseek 推荐了几个适合 2核 8 g 的服务器的视觉类型模型,选择了 moondream:

ollama pull moondream
# 查看列表 ls 也可以
ollama list

此时后台配置选项里是没有 moondream 的,还需要配置 PicHome 容器访问宿主机。

# 修改 docker-compose.yml,添加 extra_hosts
services:
  pichome-app:
    image: your-pichome-image
    # ... 其他配置
    extra_hosts:
      - "host.docker.internal:host-gateway"
# 重启服务
docker compose up -d

后台配置 API 地址:http://host.docker.internal:11434

之后选中安装的模型即可。几个 prompt 参考火星图片理解里的默认配置,复制保存。

到了这一步就是如何让大模型运行起来了。deepseek 的理解是要配置定时任务,而后台定时任务里也确实有关于 AI 的任务。

修改代码中的配置 /config/config.php

remote['on'] = 1 开启远程调用功能;remote['cron'] = 1 是关键开关,它将关闭用户访问触发的模式,并允许通过独立的脚本请求来执行计划任务
$_config['remote']['on'] = 1;
$_config['remote']['cron'] = 1;

crontab -e 添加系统定时任务:

* * * * * docker exec -u www-data pichome-app php /var/www/html/cron.php >> /var/log/pichome_cron.log 2>&1

# 查看是否添加成功
crontab -l

# 检查日志文件
tail -f /var/log/pichome_cron.log
success

测试使用大模型

但是到了这个时候,我还是看不出有没有运行,success 和执行时间的变化并不能消解我对于标签、描述等内容完全没有变化的怀疑。于是打算直接运行试一下。

# 进入模型命令行
ollama run moondream
> 请用中文描述这张图片:/path/to/your/image.jpg
# 或者使用 API 调用
curl http://localhost:11434/api/generate -d '{
  "model": "moondream",
  "prompt": "Why is the sky blue?",
  "stream": false
}'

结果返回的是英文,然后不存在的文件地址竟然也能输出标签,这让我对这个 moondream 失去了信心。然后让 deepseek 给我推 “正常运行的 vl 模型,支持中文”的大模型。推荐了 Qwen2-VL-2B 没找到,但看到了 qwen2.5vlqwen3-vl,后面还有版本,尽量选择小一点的。

ollama list
NAME            ID              SIZE      MODIFIED   
qwen2.5vl:7b    5ced39dfa4ba    6.0 GB    3 days ago    
qwen3-vl:2b     0635d9d857d4    1.9 GB    3 days ago 

安装好之后,测试结果就是,带不动,一直转圈。无语,本地 Mac(8 核 16g 核显)下载了一个 Ollama 客户端,然后下载模型,还是带不动...

我算是知道为什么都去使用收费的 API 了,个人部署的压根带不动啊。这样看来,web 版免费的 deepseek 还是厂家送福利了。

删除不用的大模型:

# 删除不需要的大模型
ollama rm moondream:latest

PS:API 调用返回的是一个个的 json 格式数据,里面包含了模型返回的词,这让我想起来 token 翻译就是词元,不知道有没有关联。

4.10 补充使用说明

ollama 如果不选择 vl 类型的模型,也不处理图片识别,是可以正常对话的。

测试了 gemma3:4bqwen2.5:3b,问题很大。尝试点了对话框下的地球,还是不能查询网络信息,这就导致了严重幻觉,上下文理解偏差很大。比如先说 A 再说 B,它经常会忽略 B,依然围绕着 A 回答。也没办法去查文献,所以一些知识类的东西,只能回答沾边的内容,车轱辘话。

尝试让它写点颜色小说,被严词拒绝了。

本地部署的开源模型(如 Qwen、LLaMA)本身没有内置联网的内容审核机制。但部分模型(尤其是官方原版)在训练时进行了“安全对齐”,可能会拒绝生成极端暴力或违法内容。如果你需要完全“百无禁忌”,需寻找社区专门训练的 “Uncensored”(去审查版)​ 或 “CausalLM”​ 类模型,但请注意法律与道德风险。

这也让我理解了某个站点上 撞墙 的真正含义,感觉他们也不会去部署什么开源版本,因为服务器(要带显卡)的成本太高了。直接对接各家大模型厂家的 API 是最直接、最省力的。

文章目录