Почему это вообще возможно? (И почему это безумие)
Orange Pi 6 Plus с процессором Rockchip RK3588 - это не просто очередной одноплатный компьютер. Это ARMv9-система с четырьмя ядрами Cortex-A76 и четырьмя Cortex-A55, 8 ГБ LPDDR4X и поддержкой NEON, DotProd и SVE. Звучит солидно, пока не вспомнишь, что QWEN3-30B - это 30 миллиардов параметров.
Запустить такую модель на Orange Pi - все равно что заставить Smart Fortwo перевезти пианино. Возможно, но медленно и с риском для всех участников процесса.
Но именно поэтому это интересно. Потому что если получится - вы получаете локальную LLM размером с GPT-3 на устройстве размером с кредитную карту. Без облаков, без подписок, без интернета.
Ожидайте скорость генерации 0.5-1.5 токена в секунду. Это не для чата в реальном времени. Это для экспериментов, демонстраций и ситуаций, когда приватность важнее скорости.
Что нам понадобится (кроме терпения)
- Orange Pi 6 Plus с установленной ОС (рекомендую Armbian Bookworm)
- Минимум 8 ГБ оперативной памяти (лучше 16 ГБ, если есть версия)
- Быстрая microSD карта или eMMC модуль (скорость чтения от 100 МБ/с)
- Активное охлаждение (процессор будет греться)
- SSD через USB3 (опционально, но сильно ускоряет загрузку модели)
Подготовка системы: не пропустите этот шаг
Большинство провалов начинаются здесь. Вы устанавливаете ОС, запускаете обновления и думаете - готово. Нет. ARM-системы требуют ручной настройки.
1 Настройка свопа и zram
8 ГБ ОЗУ для 30B модели - это смешно. Модель в формате IQ4_XS занимает около 16 ГБ. Значит, нужен своп. Но не обычный, а zram - сжатая оперативная память.
sudo apt install zram-tools -y
sudo nano /etc/default/zramswap
Меняем параметры:
# Размер zram в процентах от ОЗУ
PERCENT=50
# Алгоритм сжатия (lz4 быстрее, zstd лучше сжимает)
ALGO=lz4
# Приоритет свопа
PRIORITY=100
Перезапускаем:
sudo systemctl restart zramswap-tweaks.service
sudo systemctl restart zramswap.service
2 Установка зависимостей для компиляции
llama.cpp требует свежих версий компиляторов. В репозиториях Armbian часто лежат устаревшие пакеты.
sudo apt update
sudo apt install -y \
build-essential \
cmake \
git \
python3-pip \
libatomic1 \
gcc-12 \
g++-12 \
ninja-build
Устанавливаем альтернативные версии компиляторов:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
Компиляция llama.cpp: где большинство ошибается
Скопировать команды с GitHub и надеяться на лучшее - гарантированный провал. Особенно на ARM.
3 Клонирование и подготовка
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
# Используем актуальную версию на январь 2026
git checkout $(git describe --tags --abbrev=0)
Не используйте мастер-ветку! В январе 2026 в llama.cpp появилась поддержка новых квантований и оптимизаций под ARMv9, которых нет в старых версиях.
4 Критически важные флаги компиляции для ARMv9
Вот как НЕ надо компилировать:
# Плохо: общие флаги без оптимизаций под ARM
mkdir build && cd build
cmake .. -DLLAMA_CUBLAS=OFF
Вот правильная команда:
mkdir build && cd build
cmake .. \
-DCMAKE_C_COMPILER=gcc-12 \
-DCMAKE_CXX_COMPILER=g++-12 \
-DCMAKE_C_FLAGS="-march=armv9-a -mtune=cortex-a76 -O3 -pipe -fomit-frame-pointer -funsafe-math-optimizations" \
-DCMAKE_CXX_FLAGS="-march=armv9-a -mtune=cortex-a76 -O3 -pipe -fomit-frame-pointer -funsafe-math-optimizations" \
-DLLAMA_NATIVE=OFF \ # Важно! Включение ухудшает производительность на RK3588
-DLLAMA_ARM_FMA=ON \
-DLLAMA_ARM_DOTPROD=ON \
-DLLAMA_ARM_SVE=OFF \ # RK3588 не поддерживает SVE
-DLLAMA_CUBLAS=OFF \
-DLLAMA_METAL=OFF \
-DLLAMA_ACCELERATE=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-GNinja
Разберем ключевые моменты:
- -march=armv9-a: указываем конкретную архитектуру
- -mtune=cortex-a76: оптимизация под большие ядра RK3588
- -DLLAMA_NATIVE=OFF: парадокс, но автоопределение функций CPU часто выбирает неоптимальные пути
- -DLLAMA_ARM_DOTPROD=ON
5 Компиляция и тест
ninja
# Тестируем на маленькой модели
./bin/llama-cli -m ~/models/tinyllama-1.1b.q4_0.gguf -p "Hello" -n 10
Если видите вывод - компиляция прошла успешно. Если процесс падает с ошибкой сегментации - проверьте флаги и версию компилятора.
Загрузка и конвертация QWEN3-30B
QWEN3-30B в оригинальном формате весит около 60 ГБ. На Orange Pi это неприемлемо. Нужно квантование.
6 Скачивание и конвертация
Скачиваем оригинальную модель (если есть место):
# Создаем директорию для моделей
mkdir -p ~/models
cd ~/models
# Скачиваем QWEN3-30B (проверьте актуальность ссылки на январь 2026)
# Обычно модели лежат на Hugging Face
# Пример команды с huggingface-hub:
pip install huggingface-hub
huggingface-cli download Qwen/Qwen3-30B --local-dir Qwen3-30B
Конвертируем в GGUF и сразу квантуем в IQ4_XS:
cd ~/llama.cpp
python3 convert-hf-to-gguf.py ~/models/Qwen3-30B --outtype f16
# Квантование в IQ4_XS
./bin/quantize ~/models/Qwen3-30B/ggml-model-f16.gguf \
~/models/qwen3-30b-iq4_xs.gguf \
IQ4_XS
Квантование 30B модели на Orange Pi займет 6-10 часов. Лучше запускать на ночь. Или использовать более мощный компьютер для конвертации, а на Orange Pi загружать готовый GGUF.
Запуск и оптимизация параметров
Теперь самое интересное. Запускаем модель с правильными параметрами.
7 Оптимальные параметры запуска
cd ~/llama.cpp/build
./bin/llama-cli -m ~/models/qwen3-30b-iq4_xs.gguf \
-t 6 \ # 6 потоков (оставляем 2 ядра системе)
-c 2048 \ # контекст 2048 (больше - больше RAM)
-b 512 \ # batch size 512
-ngl 0 \ # НЕ используем GPU (у RK3588 слабый Mali)
--mlock \ # блокируем модель в RAM
--no-mmap \ # отключаем mmap (на ARM часто проблемы)
-p "Расскажи о квантовой физике" \
-n 256 \ # генерируем 256 токенов
--temp 0.7 \ # температура
--repeat-penalty 1.1 # штраф за повторения
Почему такие параметры:
- -t 6: 8 ядер, но 2 оставляем системе. Hyperthreading нет, поэтому больше потоков не дадут прирост
- -ngl 0: GPU RK3588 (Mali-G610) не ускорит LLM. Только CPU
- --mlock --no-mmap: на ARM системах с zram эти флаги стабилизируют работу
Мониторинг и диагностика проблем
Модель запустилась, но работает медленно? Проверяем:
# Мониторим использование CPU
htop
# Смотрим использование памяти
free -h
# Проверяем температуру
sudo apt install lm-sensors
sensors
| Проблема | Решение |
|---|---|
| Скорость < 0.3 токена/сек | Уменьшите -t до 4, проверьте температуру (должна быть < 80°C) |
| Модель не загружается | Уберите --mlock, добавьте --mmap. Проверьте целостность GGUF |
| Система зависает | Увеличьте zram, уменьшите -c до 1024 |
| Ошибка "illegal instruction" | Перекомпилируйте с -DLLAMA_ARM_DOTPROD=OFF |
Альтернативы: когда QWEN3-30B слишком много
Если 0.5 токена в секунду - это не ваш вариант, рассмотрите:
- QWEN3-14B: в 2 раза быстрее, почти такое же качество для большинства задач
- Nanbeige 3B: 10+ токенов в секунду, удивительно хорош для своего размера (подробнее в нашей статье про Nanbeige 3B vs 30B модели)
- Qwen2.5-Coder-7B: если нужен код, а не общение
Для сравнения производительности с другими платформами смотрите наш тест RK3588 NPU vs Raspberry Pi 5.
Что дальше? Серверный режим и API
llama.cpp поддерживает серверный режим. Запускаем:
./bin/llama-server -m ~/models/qwen3-30b-iq4_xs.gguf \
-t 6 -c 2048 -b 512 --port 8080 \
--host 0.0.0.0 --api-key orange_pi_key
Теперь к модели можно обращаться по HTTP:
curl http://localhost:8080/completion \
-H "Authorization: Bearer orange_pi_key" \
-H "Content-Type: application/json" \
-d '{"prompt": "Hello", "n_predict": 50}'
Или использовать с Ollama или другими фронтендами.
Итог: стоит ли игра свеч?
Запуск QWEN3-30B на Orange Pi 6 Plus - это технический трюк, а не практическое решение. Но именно такие трюки двигают индустрию вперед.
Через год, с появлением более мощных ARM-процессоров (ожидайте Cortex-X5 в одноплатниках к 2027) и оптимизаций в llama.cpp, скорость может вырасти в 3-5 раз. Уже сегодня Orange Pi AI Station показывает, что китайские производители серьезно нацелились на локальный ИИ.
А пока - это proof of concept. Доказательство того, что даже на устройстве за $100 можно запустить модель уровня GPT-3. Медленно, с натяжкой, но можно.
И когда в следующий раз кто-то скажет "для ИИ нужны видеокарты за $5000", вы сможете показать им кредитную карту с мозгом.