ollama.service无法创建由OLLAMA_MODELS定义的文件夹,或者在手动创建文件夹时无法运行,

polhcujo  于 4个月前  发布在  其他
关注(0)|答案(7)|浏览(48)

你好,

我遇到了一个问题,无法将模型文件放入我的主文件夹中,因为我的根分区大小有限。我遵循了这里的FAQ和收集到的信息来设置OLLAMA_MODELS在ollama.service中。当启动服务时,日志报告服务器无法在我的home目录中创建文件夹。显然是权限问题。

目前我在这里,我找不到解决这个问题的方法,尽管查看了各种关于systemd的资源。有人能指点我一下吗?

我正在使用Arch上的ollama-cuda包。

[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" "GIN_MODE=release" "OLLAMA_MODELS=/home/crystal/Applications/ollama_model"
User=ollama
Group=ollama
Restart=on-failure
RestartSec=3
Type=simple
PrivateTmp=yes
ProtectSystem=full
ProtectHome=yes

[Install]
WantedBy=multi-user.target
Feb 23 11:02:46 terrier systemd[1]: Started Ollama Service.
Feb 23 11:02:46 terrier ollama[37688]: Error: mkdir /home/crystal: permission denied
Feb 23 11:02:46 terrier systemd[1]: ollama.service: Main process exited, code=exited, status=1/FAILURE
Feb 23 11:02:46 terrier systemd[1]: ollama.service: Failed with result 'exit-code'.```
vmpqdwk3

vmpqdwk31#

我也尝试了其他事情。
使用我的用户/组修改 ollama.service:

User=crystal
Group=crystal

我还尝试将我的用户名添加到 ollama 组并运行:

User=crystal
Group=ollama

没有起作用(即没有创建文件夹),尽管现在的日志消息已经不同了:

Feb 23 11:41:19 terrier systemd[1]: ollama.service: Main process exited, code=exited, status=1/FAILURE
Feb 23 11:41:19 terrier systemd[1]: ollama.service: Failed with result 'exit-code'.
tcbh2hod

tcbh2hod2#

尝试这个
更改OLLAMA_MODELS路径
步骤:

  • 创建目录:sudo mkdir /usr/local/share/ollama-models

  • 授予所有权:sudo chown ollama:ollama /usr/local/share/ollama-models

  • 更新服务文件:编辑/etc/systemd/system/ollama.service文件并修改:

    -- Environment="OLLAMA_MODELS=/usr/local/share/ollama-models"

  • 重启Ollama:sudo systemctl restart ollama

h43kikqp

h43kikqp3#

感谢。

由于我的目标是将模型放在主文件夹中(/ 中没有剩余的存储空间),我已经根据你的建议进行了调整。

我手动创建了 /home/crystal/Applications/ollama_model,然后添加了 sudo chown ollama:ollama,并将其保留在 ollama.service 中:

User=ollama
Group=ollama
Environment="HOME=/var/lib/ollama" "GIN_MODE=release" "OLLAMA_MODELS=/home/crystal/Applications/ollama_model"

仍然出现相同的错误,服务器无法启动:

Feb 23 11:58:22 terrier systemd[1]: ollama.service: Main process exited, code=exited, status=1/FAILURE
Feb 23 11:58:22 terrier systemd[1]: ollama.service: Failed with result 'exit-code'.

这是我的主目录中模型文件夹当前的权限设置:
drwxr-xr-x 2 ollama ollama 4.0K Feb 23 11:54 ollama_model
有什么问题吗?

pdtvr36n

pdtvr36n4#

请注意,当从shell启动时:

export OLLAMA_MODELS=/home/crystal/Applications/ollama_model
ollama serve

服务器启动没有问题,并且模型在/home/crystal/Applications/ollama_model正确下载。看起来问题与通过systemd启动ollama服务器有关。

mrfwxfqh

mrfwxfqh5#

在Ubuntu上也存在这个问题。解决方法是导出并提供服务。

e5njpo68

e5njpo686#

问题是 ProtectHome=yes ,使用 systemctl edit ollama 并创建一个覆盖:

[Service]
ProtectHome=

这是一个hack,你不应该这么做,而且你绝对不应该给它访问你自己的用户,为它创建一个新的主目录。
我的目标是让模型位于主文件夹(/ 中没有剩余的存储空间)
所以你把 / 和 /home 分开了,现在空间不够了吗?
考虑一下你是否真的需要一开始就分隔它们

0qx6xfy6

0qx6xfy67#

我将补充一点,我很高兴终于找到了这个问题的解决方法。我的模型位于/pool/models下的zfs池中,所以保护home不是我的问题。

编辑:它确实解决了权限问题,但我仍然没有检测到任何模型。也许是因为我的文件是LMStudio/LocalAI兼容的?

相关问题