QWEN3-30B на Orange Pi 6 Plus: компиляция llama.cpp и оптимизация ARMv9 | AiManual
AiManual Logo Ai / Manual.
29 Янв 2026 Гайд

Запуск QWEN3-30B на Orange Pi 6 Plus: полный гайд по компиляции llama.cpp и оптимизации под ARMv9

Пошаговый гайд по компиляции llama.cpp с оптимизацией под ARMv9 для запуска QWEN3-30B на Orange Pi 6 Plus. Флаги компиляции, квантование IQ4_XS, настройка систе

Почему это вообще возможно? (И почему это безумие)

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
💡
Не используйте обычный своп на microSD! Каждая запись сокращает жизнь карты. Zram работает в RAM, поэтому безопасен для накопителя.

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 это неприемлемо. Нужно квантование.

💡
На январь 2026 лучший формат для баланса качества/размера - IQ4_XS. Он сохраняет около 95% качества оригинальной модели при размере 16-18 ГБ. Более агрессивные квантования (IQ3_XS, Q2_K) слишком сильно портят 30B-модель.

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", вы сможете показать им кредитную карту с мозгом.