Ollama: 自托管LLM的简单方案
这两天心血来潮,看着机箱里面的早就不用来打游戏的显卡,总觉得需要做点什么。碰巧看到Ollama,似乎自托管LLM变得比以往容易了很多。特此尝试并记录一下。文中涉及了Ollama的部署和使用,以及两个UI的使用:Big-AGI和Ollama WebUI。
Ollama是什么
大概可以理解为一个本地运行LLM的Framework或者说Platform。跑起来之后可以很方便的对接一众支持的LLM模型,然后还可以对接一众UI。大概可以理解为一种LLM和UI/app之间的Multiplexer。
既然只是一个平台或者说Framework,那么自然还是需要UI和LLM才能运行的。在Ollama的Github page上面已经列出了一些选项,个人也进行了一些尝试,在此记录了一下最近的尝试。
Ollama会expose一个OpenAI compatible的API在11434端口上面,然后一种给ChatGPT做的UI大概只需要一些简单的修改就可以对接Ollma上面的模型了。
至于Ollama支持的模型,自然Meta的llama2是在列的。其他的还有最近挺火的Mixtral 8x7b以及Mistral还有Llava2。
Installation and/or Deployment
Ollama本身提供了一个 ollama
command line tool 来管理 service up/down 以及模型的pull and deletion。
安装非常简单,Ollama有个Linux上面安装的文档。
# Download the install script
curl https://ollama.ai/install.sh | sh
# other than the script, use this to install manually
sudo curl -L https://ollama.ai/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama
# Create a user specifically for runing ollama
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
之后最好把Ollama的服务设置为自动启动的。这个任务自然落到Systemd上面。
写一个systemd的service config: /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
[Install]
WantedBy=default.target
Reload the service config and enable ollama service.
sudo systemctl daemon-reload
sudo systemctl enable ollama
但是到此为止,Ollama目前只会接受来自172.0.0.1的请求。所以如果你像我一样希望在另一个Host上面的跑UI,那么到这一步还不够。要开放所有IP的访问,需要设置Environment variable。