编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

手把手教你快速部署Ollama与大模型

wxchong 2025-02-17 14:22:07 开源技术 34 ℃ 0 评论

摘要

本教程解释了如何安装Ollama和Open WebUI,以及如何添加语言模型。

介绍

本教程解释了如何在运行Ubuntu或Debian的服务器上安装Ollama以运行语言模型。它还展示了如何使用Open WebUI设置聊天界面,以及如何使用自定义语言模型。

先决条件

  • 一台运行Ubuntu/Debian的服务器
  • 你需要具有root用户权限或具有sudo权限的用户。
  • 在开始之前,你应该完成一些基本配置,包括防火墙。
  • 你可以选择在同一台服务器或两台不同的服务器上安装Ollama和Web UI。如果你选择在不同的服务器上安装它们,你将需要两台运行Ubuntu/Debian的服务器。
  • 本教程已在Ubuntu 22.04Debian 12上进行了测试。

Step 1 -安装Ollama

以下步骤解释了如何手动安装Ollama。为了快速开始,你可以使用安装脚本,并继续进行"第二步 - 安装Ollama WebUI"。

安装脚本: curl
https://ollama.ai/install.sh | sh

要自己安装Ollama,请按照以下步骤操作:

  • 如果你的服务器有Nvidia GPU,请确保已安装CUDA驱动。如果未安装CUDA驱动,请现在安装。在Nvidia配置器中,你可以选择你的操作系统并选择安装程序类型来查看你需要运行的命令。
  sudo apt update
  sudo apt install -y nvidia-kernel-open-545
  sudo apt install -y cuda-drivers-545
  • 下载Ollama二进制文件并创建Ollama用户
  sudo curl -L https://ollama.ai/download/ollama-linux-amd64 -o /usr/bin/ollama
  sudo chmod +x /usr/bin/ollama
  sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
  • 创建服务文件。 默认情况下,你可以通过127.0.0.1端口11434访问Ollama API。这意味着API只在localhost上可用。
  • 如果你需要从外部访问Ollama,你可以取消注释Environment并设置一个IP地址来访问Ollama API。使用0.0.0.0将允许你通过服务器的公共IP访问API。如果你使用Environment,请确保你的服务器防火墙允许访问你设置的端口,这里是11434
  • 如果你只有一台服务器,你不需要修改下面的命令。
  • 复制并粘贴下面的整个代码块。这将创建新文件/etc/systemd/system/ollama.service并在EOF之间添加新文件的内容。
  sudo bash -c 'cat <<'EOF' > /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
  #Environment="OLLAMA_HOST=0.0.0.0:11434"

  [Install]
  WantedBy=default.target

  EOF
  • 重新加载systemd守护进程并启用Ollama服务
  sudo systemctl daemon-reload
  sudo systemctl enable ollama
  sudo systemctl start ollama

你可以使用ollama --version再次确认安装是否成功。

使用systemctl status ollama检查状态。如果Ollama没有活动和运行,请确保你运行了systemctl start ollama

现在,你可以在终端中启动语言模型并提出问题。例如:

  • 你可以使用ollama rm 来删除一个模型。
  • 下一步解释了如何安装Web UI,以便你可以通过Web浏览器在漂亮的用户界面中提问。

Step 2 安装Open WebUI

在Ollama的GitHub文档中,你可以找到不同Web和终端集成的列表。本示例解释了如何安装Open WebUI。

手动安装Open WebUI

  • 安装npm和pip,克隆WebUI仓库,并创建示例环境文件的副本:
  sudo apt update && sudo apt install npm python3-pip git -y
  git clone https://github.com/ollama-webui/ollama-webui.git
  cd ollama-webui
  cp -RPp example.env .env

.env中,默认情况下,连接到Ollama API的地址设置为localhost:11434。如果你在与Open WebUI相同的服务器上安装了Ollama API,你可以保留此设置。如果你在与Ollama API不同的服务器上安装了Open WebUI,请编辑.env并将默认值替换为你安装了Ollama的服务器的地址。

  • 安装package.json中列出的依赖项并运行名为build的脚本:
  • 如果你遇到错误,例如Not compatible with your version,请运行以下命令以使用最新版本:
  • curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash source ~/.bashrc nvm install node && nvm use node npm install -g npm@latest
  • 现在尝试再次运行npm i && npm run build
  • 安装所需的python包:
  cd backend
  sudo pip install -r requirements.txt -U
  • 如果你遇到错误,你可以考虑使用--break-system-packages,如下所示:
  • sudo pip install -r requirements.txt -U --break-system-packages
  • 使用ollama-webui/backend/start.sh启动Web UI。
  • 如果你在不同的服务器上安装了Ollama,请确保在启动Web UI之前,Ollama服务器上的防火墙允许访问API端口。API的默认端口是11434

Step 3 使用Docker安装Open WebUI

对于这一步,你需要安装Docker。如果你还没有安装Docker,现在可以使用这个教程来安装。

  • 快速安装Docker:
  sudo apt update && sudo apt install docker.io apparmor -y

如前所述,你可以选择在同一台服务器上安装Open WebUI和Ollama,或者在两台不同的服务器上安装它们。

  • 在与Ollama相同的服务器上安装Open WebUI
  sudo docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
  • 在与Ollama不同的服务器上安装Open WebUI 在启动Open WebUI之前,请确保Ollama服务器上的防火墙允许访问API端口。API的默认端口是11434
  sudo docker run -d -p 3000:8080 -e OLLAMA_API_BASE_URL=http://:11434/api -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

:11434替换为你安装了Ollama的服务器的地址。

在上面的Docker命令中,默认端口设置为3000。这意味着,你可以通过http://:3000访问Open WebUI。如果你的服务器上有活动的防火墙,你需要在能够访问聊天UI之前允许端口。下一步将解释如何操作。

允许Web UI端口

如果你有防火墙,请确保它允许访问Open WebUI端口。如果你手动安装了它,你需要允许端口8080 TCP。如果你使用Docker安装,你需要允许端口3000 TCP。

要双重检查,你可以使用netstat并查看哪些端口正在使用。

holu@:~$ netstat -tulpn | grep LISTEN
Proto    Recv-Q    Send-Q    Local Address       Foreign Address     State
tcp           0         0    127.0.0.1:11434     0.0.0.0:*           LISTEN
tcp           0         0    0.0.0
.0:8080        0.0.0.0:*           LISTEN

端口11434用于Ollama API。端口8080用于Web界面。

有几种不同的防火墙工具。本教程涵盖了Ubuntu的默认防火墙配置工具ufw。如果你使用的是不同的防火墙,请确保它允许端口8080或3000 TCP的入站流量

管理ufw防火墙规则:

  • 查看当前防火墙设置 要检查ufw防火墙是否激活以及你是否已经有规则,你可以使用:
  holu@remote-server:~# ufw status
  Status: active

  To                         Action      From
  --                         ------      ----
  OpenSSH                    ALLOW       Anywhere
  OpenSSH (v6)               ALLOW       Anywhere (v6)
  • 允许端口8080或3000 TCP 如果防火墙是活动的,运行此命令以允许入站流量到端口8080或3000 TCP:
  sudo ufw allow proto tcp to any port 8080

如果你使用了Docker,请将8080替换为3000

  • 查看新的防火墙设置 现在应该已经添加了新规则。要检查,请使用:

如果需要删除任何规则,请单击此处。

  • 删除规则 你可以使用以下命令删除规则:
  sudo ufw status numbered   # 带编号列出所有规则
  sudo ufw delete    # 通过指定编号删除规则

Step 4 添加模型

在访问Web UI之后,你需要创建第一个用户账户。这个用户将具有管理员权限。要开始你的第一次聊天,你需要选择一个模型。你可以在Ollama官方网站上浏览模型列表。在这个例子中,我们将添加"llama2"。

Step 5 添加你自己的模型

如果你想通过用户界面添加新模型,你可以通过http://:8080/modelfiles/create/来做到这一点。如果需要,请将8080替换为3000

以下将重点介绍如何通过终端添加新模型。首先,你需要连接到安装了Ollama的服务器。使用ollama list列出到目前为止可用的模型。

  • 创建模型文件 你可以在Ollama GitHub文档中找到模型文件的要求。在模型文件的第一行FROM 中,你可以指定你想使用的模型。在这个例子中,我们将修改现有的模型llama2。如果你想添加一个全新的模型,你需要指定模型文件的路径(例如FROM ./my-model.gguf)。
  • 保存以下内容:
  FROM llama2

  # 数字越大,答案越有创意
  PARAMETER temperature 1

  # 如果设置为"0",模型在生成响应时不会考虑任何先前的内容或对话历史。每个输入都被视为独立的。
  # 如果你设置一个大的数字,例如"4096",模型在生成响应时会考虑先前的内容或对话历史。"4096"是将被考虑的标记数量。
  PARAMETER num_ctx 4096

  # 设置聊天助手在响应中应具有的"个性"。你可以设置聊天助手应如何回应以及以哪种风格回应。
  SYSTEM 你是一个情绪化的美洲驼,只谈论自己的蓬松羊毛。

在GitHub上可以找到可用参数的列表。

  • 从模型文件创建模型
  ollama create moody-lama -f ./new-model

moody-lama替换为你的新模型的唯一名称。

  • 检查新模型是否可用 使用Ollama命令列出所有模型。moody-lama也应该在列表中。
  • 在WebUI中使用你的模型 当你回到Web UI时,模型现在也应该在选择一个模型的列表中。如果它还没有显示,你可能需要快速刷新一下。

结论

在本教程中,你学习了如何在你自己的服务器上托管AI聊天,并如何添加你自己的模型。

关于作者

小土。多年数字化工作经验,待过央企、干过互联网,做过厂商,业务、研发、交付、商务等多方面均有涉猎,多个CV、NLP及KG项目落地经验。

欢迎在评论区留下你的想法和问题。你也可以在公众号搜索“售前笔记”找到我。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表