
奥拉马, 本地 AI 入门
几个月来,我一直在修补本地和开源 AI; 我想在一系列帖子中与您分享它在我们日常工作中的一些可能性. 但在第一份文档中,我们将了解如何设置它以及其可能性的一些基本概念.
第一件事, 如果你愿意,我会告诉你我今天用它做什么,以防它作为一个想法; 目前, 专门用于生成文本, 他可能很穷, 但这是一个非常广阔的世界. 范围从接收任何通知或警报系统, 该警报使您更人性化,或者可以建议从何处开始解决. 发送定期电子邮件, 我的组织每天发送的电子邮件, 每月… 嗯,这给了他们另一种感觉, 它为他们提供某些数据并使它们非常真实. 也适用于家庭自动化系统, 让我能与家庭对话, 它提醒我, 使用语音, 不同的短语…
目前, 正如我所说, 生成文本; 但可能性很多, 例如连接到数据库,这允许我们使用自然语言进行查询. 或者就我们发送给 AI 的文档进行对话和提问的可能性, 或图像,并且他描述了他所看到的… 在整个文档中,我将提供一些简单的示例,以便可以做一些有趣的事情.
第二个, 不错, 这叫什么… 可以想象,有很多选择和可能性, 我要和你谈谈 奥拉马 (用于 AI 模型和应用程序的开源库). Ollama 将允许我们使用 LLM (大型语言模型), 这是, 针对 AI 训练的语言模型, 它们可以是开源的,也可以是付费的, 可能 100% 离线与否, 适量. 显然,根据我们使用的 LLM,我们将需要或多或少的功率, 这是, 具有 GPU,以便立即做出响应. 我们将能够使用 Ollama API 与其他系统远程提问, 非常非常强大. 我推荐你 打开 WebUI 作为 Ollama 的 GUI 界面, 因此,使用我们的浏览器,我们将拥有您期望能够舒适地与您的 AI 一起工作的界面.
我说了什么, 我们需要一个 GPU 来获得最佳性能, 这将取决于我们使用的 LLM 和每个模型所需的 GB, 这样,响应将是即时的. 至于兼容的硬件,它是相当广泛的 (英伟达, AMD公司, 苹果 M1…), 我离开你 这是它的列表.
我将把这篇文章分成:
- 在 Windows 上快速安装 Ollama 和 Open WebUI, Mac 或 Linux
- 使用 Docker 在 Proxmox 上的 Linux MV 上安装 Ollama 和 Open WebUI
- 通过 Open Web UI 访问并开始使用
- 图像识别
- 与文档交互
- 几个
在 Windows 上快速安装 Ollama 和 Open WebUI, Mac 或 Linux
如果你想证明它, 现在很快, 这是选项, 因为您将能够在 Linux 上安装 Ollama, Mac 或 Windows, 如果您想在本地运行, 使用您的 GPU. 我们将转到 Ollama 下载网站, 我们将选择我们的操作系统并将其下载给我们, 下一个, 下一步和已安装.
在 Linux 上,我们将按如下方式下载并安装它:
curl -fsSL https://ollama.com/install.sh | 嘘 >>> 下载 ollama... ######################################################################## 100,0%##O#-# >>> 正在将 ollama 安装到 /usr/local/bin... >>> 创建ollama用户... >>> 将 ollama 用户添加到渲染组... >>> 将 ollama 用户添加到视频组... >>> 将当前用户添加到ollama组... >>> 创建 ollama systemd 服务... >>> 启用并启动 ollama 服务... 在 /etc/systemd/system/ollama.service →创建符号链接 /etc/systemd/system/default.target.wants/ollama.service. >>> 已安装 NVIDIA GPU.
如果我们愿意,我们可以直接下载一个 LLM 并从 shell 试用:
Ollama Run Mistral Pull Manifest Pull E8A35B5937A5... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████▏ 4.1 GB 拉动 43070e2d4e53... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████▏ 11 KB 拉动 e6836092461f... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████▏ 42 B 拉 ed11eda7790d... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████▏ 30 B 拉 f9b1e3196ecf... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████▏ 483 B 验证 sha256 摘要写入清单是否成功删除任何未使用的层 >>> 你好,你好! 这意味着 "你好" 西班牙语.
如果我们希望它响应 API 查询,我们必须编辑服务文件 'nano /etc/systemd/system/ollama.service' ‘ 添加:
环境="OLLAMA_HOST=0.0.0.0:11434"
我们给服务充值:
sudo systemctl daemon-reload sudo systemctl restart ollama
如果我们想让 GUI 从浏览器管理我们的 AI,我们将不得不设置 Open WebUI, 在 Docker 容器中最快、最方便:
git 克隆 HTTPS://github.com/open-webui/open-webui.git CD open-webui/ sudo Docker compose up -d
并且我们可以通过攻击机器的 IP 端口 3000tcp 来打开浏览器 (违约).
使用 Docker 在 Proxmox 上的 Linux MV 上安装 Ollama 和 Open WebUI
这部分我告诉你为什么… 我的想法是拥有一台用于集中式 AI 的机器, 一台不同系统可以指向以进行不同查询的机器, 为此, 必须是虚拟机 (关于优势, 高可用性, 备份, 快照…), 我们将显卡传递到其并具有其 GPU 的 VM. 为此,我们将使用 Proxmox, (有一天,我们谈到了 VMware 的自杀) VM 将是 Ubuntu 服务器 24.04. 当我们在做这件事时,, 在该 VM 中,它将在 Docker 容器中运行 Ollama 和 Open WebUI.
以下是我在 Proxmox 中直通显卡所遵循的步骤, 我不知道他们是否是最正确的, 但它运行良好.
安装 Proxmox 后 8.2, 以最低限度进行配置, 已运行 Proxmox VE 安装后 Proxmox VE 帮助脚本, 我们将告诉 Proxmox 不要使用该 PCIe 显卡, 我们开始使用 'nano /etc/default/grub 编辑 GRUB’ ,然后我们修改以下行:
#GRUB_CMDLINE_LINUX_DEFAULT="安静" GRUB_CMDLINE_LINUX_DEFAULT="安静的 intel_iommu=在 iommu=pt vfio_iommu_type1 initcall_blacklist=sysfb_init" 英特尔--> GRUB_CMDLINE_LINUX_DEFAULT="安静 intel_iommu=开启" AMD公司> GRUB_CMDLINE_LINUX_DEFAULT="安静 amd_iommu=开启"
我们执行
update-grub 的
我们使用 'nano /etc/modules' 添加了以下模块:
我住vfio_iommu_type1 vfio_pci vfio_virqfd
我们使用 'nano /etc/modprobe.d/blacklist.conf' 锁定驱动程序:
黑名单 Nouveau 黑名单 NVIDIA 黑名单 NVIDIA* 黑名单 Radeon
我们用: 'spci -n -s 01:00’, 如您所见, 如果有好奇的人, 就我而言,它是 NVIDIA RTX 3060 12GB 连接到 PCIe 1.
01:00.0 0300: 10之:2504 (修订版 A1) 01:00.1 0403: 10之:228和 (修订版 A1)
我们编辑 'nano /etc/modprobe.d/vfio.conf’
KVM 选项 ignore_msrs=1x 选项 vfio-pci ids=10de:2504,10之:228e disable_vga=1
我们编辑 'nano /etc/modprobe.d/kvm.conf’
KVM 选项 ignore_msrs=1
最后我们编辑了 'nano /etc/modprobe.d/iommu_unsafe_interrupts.conf’
选项 vfio_iommu_type1 allow_unsafe_interrupts=1"
我告诉你,我确信我会为 Proxmox 中的显卡直通留下一个步骤, 但是在重新启动主机后,您将看到如何完美地将 GPU 添加到 VM.
下一步, 将在 Proxmox 中创建 VM, 以下是我心中的一些事情; 在 'System' 选项卡中’ 我们必须注明 'Q35’ 作为机器类型, ,然后在 BIOS 选项中选择“OVMF (UEFI)’,
在 'Memory' 选项卡中’ 我们必须取消选中“气球设备”’
在 CPU 选项, 编辑处理器, 在类型, 我们必须至少选择 x86-64-v3.
创建 VM 后,我们可以向其添加 PCI 设备, 我们编辑 VM 硬件和 “加” > “PCI 设备”. 我们检查 All Functions, ROM 杆, 主 GPU 和 PCI-Express.
显然,在该显卡中,我们将连接显示器以安装操作系统 (Ubuntu 服务器 24.04) 并在屏幕上看到. 我们还必须通过 USB 键盘/鼠标进行安装。
然后我们可以在 VM 中安装 OS, 我们必须考虑安装驱动程序, 在 Ubuntu 桌面中,我认为它们是在安装过程中安装的,并且在服务器中也标记了一个“勾号”, 否则, 我们仍然可以安装它们:
sudo Ubuntu-drivers install sudo apt-get update sudo apt-get upgrade sudo reboot
重新启动 VM 后,我们查看它是否使用 cat /proc/driver/nvidia/version 正确加载’
NVRM 版本: NVIDIA UNIX x86_64 内核模块 535.171.04 周二 3月 19 20:30:00 UTC (世界标准时间) 2024 GCC 版本:
Continuaríamos con la instalación de Docker (官方文档) en la MV Ubuntu:
sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc echo \ "黛博 [拱 = $(dpkg --print-architecture) 签名者=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-版本 && 回波 "$VERSION_CODENAME") 稳定" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Debemos instalar ahora el NVIDIA Container Toolkit (官方文档) y lo habilitamos para Docker:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | 须藤 gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#黛博 [签名者=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt update sudo apt -y install nvidia-container-toolkit sudo systemctl restart docker sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker
Y ya es hora de desplegar los contenedores de Ollama y Open WebUI, 为此:
git 克隆 HTTPS://github.com/open-webui/open-webui.git cd open-webui/
Y le añadimos estos cambios al contenedor de Ollama, para que pueda usar la gráfica y nos abra el puerto para las APIs (nano docker-compose.yaml):
运行: NVIDIA 环境: - NVIDIA_VISIBLE_DEVICES=所有端口: - 11434:11434
最后,我们卸载并启动集装箱:
sudo docker compose up -d
然后我们可以通过攻击虚拟机的 IP 来打开浏览器, 到端口 3000TCP (违约).
通过 Open Web UI 访问并开始使用
我们第一次访问 Open WebUI 时,我们可以通过单击创建一个帐户 “注册”, 我们只需输入我们的名字即可创建一个帐户, 电子邮件和密码, 点击 “创建帐户”.
从这里开始,我们将可以进行交互, 正如我们所看到的,我们可以创建新的聊天并向他们咨询我们需要的内容,
首先也是最重要的事情是下载大型语言模型 (法学硕士), 从“设置”中’ > '模型’ 我们可以直接从我们键入 Ollama.com 中提取它们,例如 Mistral:7b, 当然,我建议您访问 最常用的 LLM, 您所要做的就是输入您感兴趣的模型,然后单击下载图标. 我推荐你 (直到今天) 美洲驼3, 这真是太棒了.
我们等待它下载… 当然,我们想下多少就下多少.
当您创建新聊天时,您可以选择任何下载的模型来开始交互.
什么都没有, 我们开始修补, 我们可以向您提出任何问题….
图像识别
例如,如果我们使用 Llama2 LLM,我们可以在对话中或通过 API 向您发送图像,并要求您向我们描述它, 一个令人印象深刻的 Grafana 剪纸示例… 我不再给你任何线索…
与文档交互
查看其可能性的另一个快速示例… 从文档’ 我们可以上传任何文件,然后就其内容进行对话. 您可以上传一本书并询问它一些事情或建议, 去, 这取决于这本书是关于什么的… 或者我上传的 Active Directory 迁移白皮书的这个例子, 和…
然后在聊天中,我们可以通过键入 # 并选择我们在文档上放置的标签. 令人 印象 深刻…
几个
好吧,用于完成文档, 我们将在未来看到一些事情, 看起来非常非常好, 不仅如此,我们还看到, 如果不是所有的可能性,例如,它与 API 以及能够将任何系统与我们的 AI 集成. 安全的 AI, 当地, 自由, Ollama 将继续存在!
在以后的文章中, 多亏了这个 API,我们将能够集成 Centreon 的通知, 由 Elasticsearch, 我们的智能家居与 Home Assistant, 我确实会打电话给她,问她问题, 以直观的方式控制家中的任何设备, 收到非常好奇的警报和很长的等…
例如,如果我们想用 curl 抛出一个示例查询:
Curl HTTP://本地主机:11434/api/generate -d '{ "型": "米斯特拉尔:7b", "提示": "你知道毕尔巴鄂竞技吗?", "流": 假 }' {"型":"米斯特拉尔:7b","created_at":"2024-03-29T12:38:07.663941281Z","响应":" 是的, 我知道毕尔巴鄂竞技俱乐部, 是一家位于毕尔巴鄂市的西班牙职业足球俱乐部, 巴斯克地区. 它成立于 14 十月 1894 目前效力于西甲, 西班牙甲级联赛. 他以基于他的哲学的比赛风格而闻名, 优先考虑俱乐部青年组的升级球员的发展. 它的体育场是 San Mamés。"
或者能够放置参数来选择模型, 让你或多或少产生幻觉的温度, 长度… 我们将看到更多示例:
Curl HTTP://XXX.XXX.XXX.XXX:11434/api/generate -d '{ "型": "米斯特拉尔:7b", "提示": "你知道毕尔巴鄂竞技吗?", "流": 假, "温度": 0.3, "max_length": 80}'
井, 我不再参与其中, 要了解可能性,我认为这是值得🙂的 我们会看到更多的东西和好奇. 事实是,我不得不省略一些东西,因为我在我的业务中使用它们,它们是不同的价值,很多时候你已经知道竞争对手供应商会发生什么…
一个拥抱,祝你一周愉快!