Самостійний хостинг AI - Ollama Web UI

Сьогодні ми запустимо штучний інтелект (ШІ абл AI) і розташуємо його на власному сервері який знаходиться вдома. Доступ до AI буде через веб-інтерфейс як і у більшості self-hosted сервісів.

Самостійний хостинг AI - Ollama Web UI
Photo by xandro Vandewalle / Unsplash

Пререквізити

Ми будемо запускати все на локальному сервері Proxmox VE, який в мене давно налаштований. Для Ollama нам знадобиться Docker, який простіше за все запустити в будь-якій Linux OS. Я обрав Ubuntu без якихось передумов. Ви можете замінити на те, що зручно вам.

На моєму Proxmox сервері вже давно крутиться контейнер з Docker, але він для дрібніших сервісів. Обираючи як запустити Ollama я також вирішив, що хочу ізолювати його від інших self-hosted сервісів для більшого контролю над бекапами, оновленнями та виділеними ресурсами.

Ось що нам знадобиться.

  • Proxmox VE - сервер віртуалізіції
  • Ubuntu LXC template - для контейнера з Linux
  • Docker - для запуска Ollama, https://www.docker.com
  • Ollama - це інструмент для локального запуску LLM з відкритим кодом, включаючи Mistral і Llama 2. https://ollama.com

Підготовка контейнера

Для запуску Linux контейнера (LXC) в Proxmox нам знадобиться викачати підготовлений темплейт, а для цього зробіть наступне:

  1. Відкрийте ваш Storage/диск, зазвичай він у вас буде один і з назвою local
  2. Виберіть CT Templates
  3. Нажміть на кнопку Templates
  4. У вікні в полі пошуку введіть ubuntu
  5. Оберіть потрібну вервсію (я обрав 23.10) та завантажте її

Створюємо новий контейнер

Тепер в нас є темлейт для створення нового контейнера з Ubuntu 23.10. В самому правому верхньому куті натискаємо кнопку Create CT і заповнюємо всі необхідне. Пройдусь з вами покроково.

Крок 1. Задаємо Hostname (любе імʼя) та вводимо пароль, який пізніше буде потрібен для логіну в консолі під root користувачем

Крок 2. Обираємо попереднь закачаний темплейт

Крок 3. Задаємо розмір диску системи.

Я обрав 32 GB, бо мав бажання погратися з різними моделям. Враховуючи свої задачі ви могли б скоротити цей параметр як до 16 так і до 8 GB.

Крок 4. Обираємо кількісь ядер процесора, які будуть задіяні.

Якщо ваш сервер потужний і/або має за мету витрачати всі ресурси на AI, то обирайте максимальну кількість доступних ядер. В мене їх всього 4 і тому я вибрав усі, але забігаючи наперед скажу, що пізніше я понизив до 3, щоб ніколи не забирати всі ресурси з інших сервісів які також запущені в інших контейнерах на тому ж Proxmox сервері

Крок 5. Ставиво побільше опертаивної памʼяті.

Встановив 16 GB, щоб було де розвернутись бо в мене цього добра багато, але фактично бачив в загрузці лише до 1,5 GB

Крок 6. Налаштовуємо мережу

Зазвичай для сервісів які я хочу залишити на довго я назначаю статичну адресу, як і у даному випадку. Зверніть увагу, що формат вказаний як IPv4/CIDR, що зобовʼязує вас вказати маску мережі через дефіс, як от /24 у моєму та й у більшості випадків. Там де Gateway вкажіть адресу свого роутера.

Крок 7. Пропускаємо DNS та перевіряємо та підтверджуємо.

На цьому ж кроці ви можете поставити галочку біля Start after created, щоб контейнер образу ж запустився після створення, або ж вам прийдеться запустити його кнопкою Start. Нема різниці.

Крок 8. Запуск та підключення до контенера.

Коли контейнер створився, то він зʼявиться в лівій панелі з тим іменем, яке ви вказували. Обиражмо ваш контейнер і переходимо на вкладку Console

Так як у мене контейнер вже запущений то кнопка Start вже неактивна, але тепер ви знаєте де вона.

Коли загрузиться консоль то запитає у вас логін. У випадку контейнерві це завжди буде root і ваш пароль який вказали на першому кроці.

Коли все вірно введено, то ви побачите подібний результат

Тепер ви готові до установки всього іншого.

Установка

Перед початком установки бажано оновити всі пакети, а також нам знадобиться curl, бо в Ubuntu його нема за умовчуванням.

Далі дуже рекомендую просто копіювати і виконувати команди построково. Деякі з них будуть вимагати підтвердження та займатимуть певний час. Тож запасіться кавою, та не поспішайте
sudo apt update
sudo apt upgrade
apt install curl

Установка Docker

Після виконання наступних команд у вас буде запущений повноцінний докер, де ви могли б розміщувати не лише AI, але сьогодні не про це.

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker

Якщо все пройшло успішно, то вам для перевірки мають бути доступні наступні команди

docker -v
docker ps

Установка Ollama WebUI

Хочу зарані вказати, що версія, яку ми розглядаємо в рамках цієї інструкції буде використовувати лише потужності процесора, тобто CPU only версія.

Якщо ж у вас є відеокарта, то рекомендую переглянути наступні лінки

А ми продовжуемо і викачуємо docker-compose.yaml

wget -O docker-compose.yaml  https://raw.githubusercontent.com/fixtse/blueprints/main/docker/docker-compose-ollama.yaml

Для запуску виконуємо

docker compose up -d
docker compose up -d

Для оновлення, коли знадобиться

docker compose pull
docker compose up --force-recreate -d

Ollama Web UI

Наш контенер повністю налаштований і готовий до роботи. Після перезапуску контейнера в Proxmox автоматично буде запускатись Docker, а з ним і Ollama Web UI

З цього моменту Ollama Web UI має стати достуним за статичною адресою, яку вказували при налаштуванні контейнера. Ваша лінка має виглядати подібним чином:

http://192.168.1.30:3000

Важливо відмітити, що сервіс буде доступний на порту 3000

Відкриваємо браузер і реєструємось. Перший зареєстрований користувач автоматично стає адміністратором

Ось так виглядатиме інтерфейс після входу. Всім користувачам ChatGPT має бути доволі знайомим.

Але покищо ми не маємо жодної моделі AI, з якою могли б побалакати. То ж перейдемо до моделей.

Установка моделей

В бібліотеці https://ollama.com/library ви можете відшукати багацько моделей під різні задачі. Рекомендую витратит свій час і розібратись з ними.

На прикладі моделі home-3b-v3, яка створена для управління Home Assistant, я покажу як додавати нові моделі.

Спочатку шукаємо потрібну модель в бібліотеці і відкриваємо, щоб ознайомитись. На сторінці моделі бачимо код установки, з якого нам потрібна лише остання частина, а саме назва моделі. В моєму випадку копіюю все виділене червоним.

Далі повертаюсь в веб інтерфейс та натискаю на кнопку налаштувань, а вже у самому діалоговому вікні обираю розділ з моделями, вставляю імʼя, та натискаю зелену кнопку для завантаження. Це займе певний час і ви бачитимете прогресс закачування.

Коли модель готова, то закриваємо вікно і обираємо нашу модель у випадашці. Ну,і розпочинаємо діалог.

Ось декілька моделей які я додав собі.

Посилання на деякі з них залишаю нижче:

fixt/home-3b-v3
The “Home” model is a fine tuning of the StableLM-Zephyr-3B model. It achieves a score of 97.11% score for JSON function calling accuracy.
llama2
Llama 2 is a collection of foundation language models ranging from 7B to 70B parameters.
mistral
The 7B model released by Mistral AI, updated to version 0.2.

Резюме

Маючи виділений сервер і достатньо ресурсів на ньому ми можемо запустити приватний штучний інтелект в своїй локальній мережі, який працюватиме без усіляких лімітів. Для цього нам не потрібен надто потужний сервер, а тим більше непотрібна і дорога відеокарта. Цей приклад, довотить те, що сьогодні люди навчились запускати AI майже на всьому для своїх персональних великих, або не дуже задач. Звісно, що на швидкість відповіді дуже впливатиме потужність вашого заліза, але якщо ви запускаєте це не для бізнесу, а для себе, то час чікування має вас задовільнити.

Особисто мені все це було потрібно для керування розумним будинком Home Assistant.

Ollama Web UI має можливість глибокого налаштування, а також контролю доступу. Ви можете обмежитись реєстрацією лише для сімʼї та друзів, або ж відкрити все у публічний доступ. Те що, це не просто консольний варіант, або API, а повноцінний веб додаток, робить користування простим і зручним.

Read more

How to add ads.txt file in self-hosted Ghost blog

Як додати ads.txt до блогу на платформі Ghost

Додаєте ads.txt до блогу на Ghost? Дізнайтесь, як створити файл, опублікувати його на GitHub, налаштувати перенаправлення через redirects.yaml та перевірити коректність роботи. Це простий спосіб забезпечити відповідність стандартам реклами для вашого блогу.

By Volodymyr Lavrynovych