Локальный ChatGPT на Orange Pi 6 Plus (16 ГБ RAM)

Полный разбор установки llama.cpp, загрузки модели и подключения Open WebUI

Плата: Orange Pi 6 Plus
RAM: 16 ГБ
GPU: не использовался
Система: Ubuntu 24.04
Модель: Mistral 7B Instruct v0.2 Q4_K_M (GGUF)

Цель — полностью локальный AI-ассистент, работающий офлайн.


ЭТАП 1 — Подготовка системы

Обновление системы и установка базовых пакетов для компиляции:

sudo apt update && sudo apt upgrade -y
sudo apt install git build-essential cmake python3-venv python3-pip -y

ЭТАП 2 — Установка и сборка llama.cpp

Переходим в домашнюю директорию, клонируем репозиторий и выполняем сборку.

cd ~
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

После завершения сборки проверяем наличие исполняемых файлов в каталоге build/bin/:

ls build/bin

В списке присутствуют ключевые файлы:

  • llama-cli (для работы в терминале)
  • llama-server (для поднятия API)

Проверяем работоспособность:

./build/bin/llama-cli --help

Справка отобразилась — сборка прошла успешно.

ЭТАП 3 — Установка huggingface_hub (ошибка PEP 668)

При попытке установить пакет глобально:

pip install --upgrade huggingface_hub

Возникает ошибка:

externally-managed-environment

Причина: Ubuntu 24.04 блокирует глобальную установку pip-пакетов для предотвращения конфликтов с системным менеджером пакетов.

ЭТАП 4 — Создание виртуального окружения

Обходим ограничение с помощью venv:

python3 -m venv hf_env
source hf_env/bin/activate
pip install --upgrade pip
pip install huggingface_hub

Проверяем установку (команда hf, а не huggingface-cli):

hf --help

ЭТАП 5 — Регистрация и получение токена Hugging Face

  1. Регистрируемся на huggingface.co.
  2. Переходим: Profile → Settings → Access Tokens → Create new token (тип: Read).
  3. Авторизуемся в терминале: hf auth loginВставляем токен. На вопрос о добавлении git credential отвечаем N.

ЭТАП 6 — Скачивание модели

Создаем каталог для моделей и скачиваем Mistral 7B в квантовании Q4_K_M (оптимальный баланс качества и производительности).

mkdir ~/models
cd ~/models
hf download \
  TheBloke/Mistral-7B-Instruct-v0.2-GGUF \
  mistral-7b-instruct-v0.2.Q4_K_M.gguf \
  --local-dir .

Размер файла: ≈ 4.37 ГБ.

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

deactivate

ЭТАП 7 — Первый запуск модели (CLI)

Переходим в каталог llama.cpp и запускаем модель для проверки. Флаг -i (интерактивный режим) в текущих версиях может не работать, используем прямой ввод.

cd ~/llama.cpp
./build/bin/llama-cli \
  -m ~/models/mistral-7b-instruct-v0.2.Q4_K_M.gguf \
  -c 4096 \
  -p "Объясни, что такое нейросеть простыми словами."

Модель успешно загружается и выводит ответ в терминале.

ЭТАП 8 — Запуск API сервера

Запускаем llama-server, который создаст OpenAI-совместимый API.

./build/bin/llama-server \
  -m ~/models/mistral-7b-instruct-v0.2.Q4_K_M.gguf \
  -c 4096 \
  --host 0.0.0.0 \
  --port 8080

Проверяем доступность API из другого терминала:

curl http://localhost:8080/v1/models

Ожидаемый ответ:

json

{
  "id":"mistral-7b-instruct-v0.2.Q4_K_M.gguf",
  "owned_by":"llamacpp"
}

Сервер работает корректно.

ЭТАП 9 — Встроенный веб-интерфейс llama-server

После запуска сервера в браузере доступен простой интерфейс по адресу:

http://<IP-адрес-платы>:8080

(например, http://192.168.1.99:8080)

Через него можно отправлять запросы для быстрого тестирования.

ЭТАП 10 — Установка Open WebUI

Для более комфортного использования устанавливаем Open WebUI в отдельном виртуальном окружении.

cd ~
python3 -m venv webui
source webui/bin/activate
pip install --upgrade pip
pip install open-webui

Запускаем веб-интерфейс:

open-webui serve --host 0.0.0.0 --port 3000

Адрес доступа:

http://192.168.1.99:3000

При первом входе потребуется создать учетную запись администратора.

ЭТАП 11 — Подключение Open WebUI к llama-server

В интерфейсе Open WebUI переходим:
Настройки администратора (Admin Settings) → Подключения (Connections) → OpenAI API

  • Base URL: меняем с https://api.openai.com/v1 на http://192.168.1.99:8080/v1
  • API Key: вводим любое значение, например, test (llama-server не проверяет ключи).

После сохранения модель mistral-7b-instruct-v0.2.Q4_K_M.gguf автоматически появится в списке доступных.

ЭТАП 12 — Проблема языка

При первом общении модель начала отвечать на китайском языке. Это распространенная проблема для некоторых сборок базовых моделей.

Решение: добавлен системный промпт в настройках чата Open WebUI:

Ты — полезный AI-ассистент. Всегда отвечай на русском языке.

После этого ответы стали корректными (русскими).

ЭТАП 13 — Проблема галлюцинаций

В ходе тестирования была выявлена критическая особенность: модель склонна выдумывать факты (галлюцинировать).

При запросе технических характеристик платы Orange Pi 6 Plus модель выдала правдоподобные, но полностью вымышленные данные, которых нет в реальности.

Причины:

  1. Размер модели: 7 миллиардов параметров — это относительно небольшая модель, склонная к обобщениям.
  2. Квантование (Q4): Сжатие модели для экономии RAM снижает точность рассуждений.
  3. Отсутствие RAG: Модель не имеет доступа к интернету или локальной базе данных с документацией.
  4. Принцип работы: LLM предсказывают следующее слово, опираясь на статистические закономерности, а не обращаются к базе фактов.

Итог

На Orange Pi 6 Plus (16 ГБ RAM) удалось successfully развернуть полноценный локальный аналог ChatGPT:

  • ✓ Скомпилировать llama.cpp из исходников.
  • ✓ Скачать и запустить языковую модель Mistral 7B.
  • ✓ Поднять OpenAI-совместимый API-сервер.
  • ✓ Установить и настроить стильный веб-интерфейс Open WebUI.
  • ✓ Получить полностью автономного AI-ассистента, работающего офлайн.

Главное ограничение: неточность и выдумывание фактов. Как показало тестирование, Mistral 7B Instruct в связке с локальным запуском склонна к галлюцинациям — она может выдавать вымышленные данные, сохраняя видимость уверенности. Это делает её пригодной для творческих задач, написания кода или текстов, но требует критической проверки фактов.

Следующим шагом будет тестирование других моделей (например, Qwen2.5 7B или русскоязычных Saiga/YandexGPT), а также внедрение RAG-систем (Retrieval-Augmented Generation) для подключения к документации и повышения точности ответов.