Настройка локального ИИ помощника на Ollama + Open-WebUI

📅 18 Июн 2024 18:42 | 👁 143 | 🕐 5 мин.

Появился интерес попробовать использовать локально нейросети. После не продолжительного поиска в интернете на эту тему, было решено попробовать сделать на Ollama.

Содержание

  1. Введение
  2. Установка и настройка Ollama
  3. Загрузка языковых моделей Ollama
  4. Установка и настройка Open – Web-UI

Введение

Ollama – является открытым фреймворком для локального развертывания и управления мощными языковыми моделями (LLM), такими как Llama 3, Phi 3, Mistral, Gemma и другими, на вычислительных ресурсах пользователя. Оно позволяет установить и запустить выбранную модель без необходимости использования облачных сервисов, а также предоставляет доступ к этой модели через простое API.

Open WebUI — это расширяемый , многофункциональный и удобный автономный веб-интерфейс, предназначенный для работы полностью в автономном режиме. Он поддерживает различные программы LLM, включая Ollama и API-интерфейсы, совместимые с OpenAI.

Интерфейс Open - Web-UI

Интерфейс Open – Web-UI

Теперь когда мы знаем что есть что, можно приступить к установки. Кстати нужно отметить, что запускать мы будем не на GPU, а на CPU, так как стенда с хорошими производительными видео картами у меня нет, но есть дешевый тестовый сервер:

  • CPU: Intel Xeon E5-2680 v3 2.50GHz 12 core 24 threads x 2
  • RAM: 64GB DDR4

Установка и настройка Ollama

Запускать Ollama мы будем на Debian GNU/Linux 12 (bookworm).

Установка достаточно простая, есть скрипт для автоматической установки. И собственно вся установка сводится к одной строчке.

# curl -fsSL https://ollama.com/install.sh | sh

Собственно на этом вся установка завершена, если нужна более подробная информация по ручной установки, то можно обратиться к официальной документации по установки на linux.

Так как мы будем разворачивать Open – Web-UI на другой машине, то нам необходимо настроить Ollama так, чтоб он принимал запросы не только на локальном(по умолчанию), но и на сетевом интерфейсе. Для этого нам необходимо отредактировать сервис запуска ollama.service следующим образом, добавив директиву OLLAMA_HOST в Environment.

# cat /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="OLLAMA_HOST=0.0.0.0"

[Install]
WantedBy=default.target

Теперь нам необходимо обновить настройки сервиса и запустить Ollama:

# systemctl daemon-reload
# systemctl start ollama

Проверяем что сервис слушает запросы на всех интерфейсах:

# netstat -tulpn | grep ollama
tcp6 0 0 :::11434 :::* LISTEN 1247/ollama

Так же если перейти в браузер по адресу машины на которой стоит ollama с портом 11343, как пример http://<IP_адрес_ollama>:11434, то мы увидим надпись “Ollama is running” что свидетельствует о том, что сервис запущен и готов к работе.

Загрузка языковых моделей Ollama

Собственно говоря Ollama это фреймворк, который позволяет запускать различные языковые модели типа LLAMA3(от Meta), Mistral AI, Phi3(от Microsoft), весь список доступных моделей можно посмотреть на официальной странице Ollama на github или в библиотеки моделей.

Что нужно знать о моделях для их запуска. Первое это размер модели, чем больше модель, тем больше оперативной памяти она будет требовать, а так же будет более чувствительной к вычислительным ресурсам. Модели более 7b(это приблизительно 7 миллиардов весов и связей) лучше запускать на видеокартах, так как производительность TPS(количество генерируемых токенов в секунду) на CPU будет очень низкой.

Сама загрузка моделей происходить достаточно просто:

# ollama run codestral:22b
pulling manifest
pulling 22a849aafe3d...  33% ▕█████            4.1 GB/ 12 GB  1.2 MB/s   1h59m

После команды ollama run <нужная_модель> начнется загрузка модели. После загрузки запустится выбранная модель и прям в консоли можно начинать чатиться и задавать вопросы языковой модели. Но это не совсем удобно и поэтому мы установим Open-Web-UI.

Так же стоит отметить, языковые модели занимают достаточно много дискового пространства и по умолчанию находятся /usr/share/ollama/models, если вы планируете использовать множество языковых моделей, то вам возможно потребуется изменить место их хранения.

Для этого есть специальная директива OLLAMA_MODELS, она так же как и OLLAMA_HOST добавляется в параметры сервиса в Environment.

Альтернативный вариант – это сделать симлинк, но это не совсем правильный вариант.

Установка и настройка Open – Web-UI

Open Web-UI будем устанавливать на отдельную машину через Docker образ. Так как изначально я взял чистую машину, выполняем стандартные манипуляции по обновлению системы, устанавливаем Docker и запускаем контейнер с Open-Web-UI.

Обновление системы Debian GNU/Linux 12 (bookworm):

# apt update && apt upgrade -y

После обновления системы по документации установки Docker на Linux устанавливаем Docker.

Согласно документации удаляем все ненужные зависимости:

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove $pkg; done

Далее нам необходимо добавить репозитории Docker и установить официальные GPG ключи репозиториев:

# apt-get update
# apt-get install ca-certificates curl
# install -m 0755 -d /etc/apt/keyrings
# curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
# chmod a+r /etc/apt/keyrings/docker.asc

# echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt-get update

После установки ключей и настройки репозиториев мы можем установить сам Docker:

# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Теперь можем запустить контейнер с Open-Web-UI, исходя из документации Open-Web-UI, нам необходимо запустить контейнер следующим образом:

# docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=http://<IP_адрес_ollama>:11434 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Стоит обратить внимание на параметр OLLAMA_BASE_URL, так как Ollama у нас запущена другом узле, нам необходимо указать fqdn имя или IP адрес нашего сервера Ollama, в нашем случае это IP адрес, так же обязательно нужно указать протокол  – http://<IP_адрес_ollama>:11434.

После этого вы можете войти в браузере на страницу http://<IP_адрес_Open-Web-UI>:3000 и пройти регистрацию в качестве администратора, после чего можно начинать использовать языковые модели и задавать им свои вопросы.

Первый запуск Open Web-UI

Первый запуск Open Web-UI

После регистрации вы попадете в интерфейс и можете заниматься дальнейшем обучением.

Касательно моделей, я пробовал работать с моделями llama3:8b и mistral:7b, из личных наблюдений, mistral лучше поддерживает русский язык. На CPU отвечают достаточно быстро эти модели, попробовал модель codestral:22b, вот тут уже сложнее идут ответы и по хорошему нужна видеокарта.

Поделиться

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

(Required)