На рынке уже есть решения для работы с моделями с открытым исходным кодом, такие как gpt4all. Для администраторов, девопсов и безопасников подобный инструмент почти бесполезен, так как мы не можем удобно предоставить его разработчикам и контролировать учетные записи пользователей.
А проект Ollama прекрасно решает наши проблемы. Если вы владеете английским, рекомендую посмотреть видео «host ALL your AI locally» от NetworkChuck. В нем Чак рассказывает, как разворачивает на домашнем сервере ИИ для своих дочерей на замену решения от OpenAI и показывает, как ограничить модели в помощи, добавить запрещенные темы или действия.
Основные отличия Ollama от других проектов — это предоставление API. И уже есть огромный выбор графических интерфейсов для этого API.
Проект доведен до ума и не требует танцев с бубном при запуске. Проект поддерживает Windows, Linux и MacOS. Инструкции по установке доступны по ссылке.
Я последовал примеру Чака и развернул проект у себя в WSL на Windows. Даже не пробовал консольный инструмент, а сразу скачал Open WebUI. Суть в том, что его лучше запускать в Docker, так как это готовый проект на React и у него есть официальный образ. Также есть и официальный чарт от Open WebUI.
Команды для моего случая:
curl -fsSL https://ollama.com/install.sh | sh #установка в wsl
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
# это уже запускаем в powershell
Далее смело заходим на localhost:3000 и регистрируемся. Первая учетка становится администратором по умолчанию, а все следующие улетают в pending и ожидают подтверждения от администратора. Сервис не использует внешние БД, а сохраняет все данные в папку ./data с помощью Sqlite. Подробнее с конфигурацией фронта и переменными окружения можно ознакомиться здесь.
Я протестировал установку на кластер без видеокарт и скажу — идея плохая. Сервис не то, что подвисает — он вовсе не работает. Рекомендую впервые в истории IT обоснованно закупить топовые видюхи на ваше железо :)
Начнем с официальных чартов. Перед установкой убедитесь в правильности чарта, возможно что-то изменилось. В момент написания статьи разработчики вынесли чарты Open WebUI в отдельный репозиторий. И до текущего момента с чартами у ребят происходят странности.
# добавляем репозиторий
helm repo add open-webui https://helm.openwebui.com/
helm repo update
# устанавливаем чарт (перед установкой рекомендую стянуть values проекта локально, внимательно ознакомиться и подправить под ваши потребности — поможет команда:
helm show values open-webui/open-webui > values.yaml)
helm upgrade --install open-webui open-webui/open-webui
helm upgrade --install open-webui open-webui/open-webui -f values.yaml # если редактировали values.yaml
Рекомендую поправить раздел и с установкой бэкенда Ollama. И добавить размер pv, так как моделей будет много и они будут тяжелые. По умолчанию чарт не содержит в себе возможности конфигурации размера volume. Лично я развернул оба чарта отдельно Ollama API и Open-WebUI отдельно, указав путь в values.yaml до моей API. Вы же можете пошаманить с values чарта Open-WebUI.
ollama:
# -- Automatically install Ollama Helm chart from https://otwld.github.io/ollama-helm/. Use [Helm Values](https://github.com/otwld/ollama-helm/#helm-values) to configure
enabled: true
# Example Ollama configuration with nvidia GPU enabled, automatically downloading a model, and deploying a PVC for model persistence
ollama:
gpu:
enabled: true
type: "nvidia"
number: 1
models:
- llama3
runtimeClassName: nvidia
persistentVolume:
enabled: true
После развертывания зарегистрируйтесь по примеру из раздела с локальной установкой. В настройках обратите внимание на раздел Connections, в нем отображены API. Если что-то не работает, проверьте правильность адреса.
Конфигурация сервера сильно зависит от ваших условий, но я составил список вещей, на которые нужно будет обратить внимание.
Настройка по умолчанию:
На скриншоте видно, что новый пользователь user1 находится в статусе ожидания, и для него экран выглядит так:
Сейчас в проекте есть три роли: pending, user, admin. Меняем их простым нажатием в поле Role. Сразу после смены роли пользователь сможет авторизоваться и запустить приложение.
В разделе Admin Settings мы можем менеджерить такие вещи, как удаление чатов, роли при регистрации по умолчанию, возможность регистрации, разрешенные для пользователей модели и бэкап базы.
2. Управляем моделями через настройки в разделе Models.
У моделей есть теги. На примере Llama3 теги 8b и 70b отличаются объемом и количеством записей в модели. От этого зависит точность работы модели и количество информации, на которой базируется модель. К примеру тег 8b содержит 8 миллиардов записей, а 70b по аналогии 70 миллиардов записей. Весит она больше, но и вычисления должна делать более подробные и точные.
Мы можем сделать Modelfiles, которые описывают ограничения и задачи уже существующей модели, и на ее основе создают свою. Так легко ограничивать темы для бесед: к примеру, запретить обсуждать мопсов на работе.
После создания модели нам необходимо добавить ее в whitelist для пользователей — и ограничения заработают.
3. Генерация картинок в Ollama
В ChatGPT от OpenAI такая возможность доступна только с подпиской, и картинки он генерит слабенькие.
Для добавления функционала в Ollama необходимо поднять еще один сервис — Stable Diffusion. Так как официального популярного чарта у него нет, можно вновь обратиться к видео Чака, чтобы понять принцип и развернуть сервис самостоятельно.
4. Расширения на Vscode
Например, вы оплачиваете Copilot, но не доверяете Microsoft и хотите развернуть локальное решение для помощи с кодом — есть экстеншены на Vscode.
Надеюсь, статья заинтересовала в развертывании собственного ИИ для портфолио, своей компании или домашнего использования. Если так — начальная инструкция у вас уже есть.
Если вам нужно обучить и интегрировать модель машинного обучения или решить бизнес-задачи, которые требуют обработки огромных объемов данных — мы в Core 24/7 с радостью поможем. Наши решения помогают автоматизировать процессы бизнеса с высокой степенью надежности.
Узнать больше