Мы в лаборатории «Синнтерком» собираем ИИ-решения на локальном железе — таком, где данные не покидают периметр заказчика. Когда к нам приехала Repka Pi 5, мы поставили себе простую цель: к вечеру плата должна отвечать на вопросы языковой моделью, причём на встроенном нейропроцессоре, а не только на CPU. Получилось. Рассказываем, как повторить, и показываем честные цифры.
Что за железо #
Repka Pi 5 — российская плата на Rockchip RK3588: четыре ядра Cortex-A76 (2,26 ГГц у нашего образца) плюс четыре A55, у нас версия с 16 ГБ памяти и модулем eMMC на 64 ГБ. Внутри чипа — NPU на 6 TOPS (INT8), три вычислительных ядра. Форм-фактор Raspberry Pi 5, вес — 58 граммов вместе со штатным радиатором: мы взвесили сами, плата встанет в шкаф автоматики, терминал или корпус станка.

Приятная неожиданность: в вендорном ядре Repka OS (6.1.115) уже стоит драйвер нейропроцессора RKNPU v0.9.8 — ровно тот, что нужен рантаймам Rockchip. Ничего пересобирать не пришлось.
Путь: три шага #
Шаг 1 — проверить NPU. Берём librknnrt (рантайм RKNN 2.3.2 из открытого SDK Rockchip) и любую rknn-модель, запускаем rknn_benchmark. У нас тестовая модель отработала со средним временем 771 мс на прогон — на несколько процентов быстрее, чем тот же тест на другой плате с RK3588, которая была под рукой. Драйвер из коробки совместим — можно жить.
Шаг 2 — языковая модель на NPU. Для LLM у Rockchip отдельный стек — RKLLM. Ставим рантайм (мы работали с SDK 1.3.0), берём готовую сборку модели под RK3588 — мы использовали Qwen3.5-4B в 8-битном квантовании W8A8 (файл ~5,6 ГБ, на eMMC помещается свободно) — и поднимаем сервер с OpenAI-совместимым API из примеров SDK. Всё завелось без единой правки под Repka OS.
Шаг 3 — тот же вопрос на CPU. Для сравнения ставим Ollama (llama.cpp) с той же моделью в 8 битах.
СОВЕТ
На big.LITTLE ограничьте генерацию четырьмя потоками: на восьми быстрые A76 ждут медленные A55, и скорость заметно падает. В Ollama это строка PARAMETER num_thread 4 в Modelfile.
Цифры #
Все замеры — штатный радиатор, без обдува, комнатная температура:
| Конфигурация | Скорость |
|---|---|
| NPU, Qwen3.5-4B W8A8 | 2,4 токена/с, 30 генераций подряд без деградации |
| CPU, та же модель в 8 битах | 4,8 токена/с (контрольный RK3588-стенд рядом — 4,5) |
| CPU, модель 9 млрд параметров, 4 бита | 3,7 токена/с — плата тянет и такой класс |
К СВЕДЕНИЮ
Почему CPU обогнал NPU? Генерация текста упирается не в вычислительную мощность (TOPS), а в скорость чтения весов из памяти — а память у CPU и NPU здесь общая. Разницу делает зрелость софта: llama.cpp выжимает из памяти больше, чем текущий NPU-стек RKLLM. Зато NPU-вариант оставляет процессор свободным под остальную работу — для встраиваемых задач это часто важнее.
Про тепло скажем честно: под длинной непрерывной генерацией SoC выходит на ~84 °C — производительность не падает, но запаса немного. На плате есть штатный разъём вентилятора; для круглосуточных ИИ-сценариев рекомендуем им воспользоваться.
Что это значит на практике #
Плата размером с банковскую карту за день превращается в автономного ИИ-ассистента: отвечает по документам, без интернета и без передачи данных наружу. Для задач, где важен реестр Минпромторга, у Repka уже есть зарегистрированные модели, и производитель говорит, что Pi 5 на подходе.
Проверить всё написанное можно вживую: Repka Pi 5 стоит первой в каталоге стендов нашей открытой лаборатории — lab.synntes.com. Задайте ей вопрос сами и посмотрите на скорость, нагрев и загрузку в реальном времени: мы показываем работу железа как есть, без рекламных цифр.
Источники и сборки #
Всё, что мы использовали, открыто:
- rknn-llm — стек Rockchip для языковых моделей на NPU: рантайм, примеры серверов, конвертер;
- rknn-toolkit2 — рантайм librknnrt и rknn_benchmark для проверки NPU;
- Qengineering/Qwen3.5-4B-rk3588 — готовая сборка модели под RK3588, конвертировать самому не пришлось;
- Ollama — CPU-вариант через llama.cpp;
- repka-pi.ru — Repka OS и документация платы.
Приложение: поднять NPU-вариант за десять команд #
Проверено на Repka OS v1.0.4 (ядро 6.1.115, драйвер RKNPU v0.9.8 уже в системе). Понадобится ~6 ГБ свободного места.
# 1. Рантайм RKLLM из открытого SDK
git clone --depth 1 https://github.com/airockchip/rknn-llm
sudo cp rknn-llm/rkllm-runtime/Linux/librkllm_api/aarch64/librkllmrt.so /usr/lib/
# 2. Готовая сборка модели под RK3588 (~5,6 ГБ)
pip3 install -U "huggingface_hub[cli]"
hf download Qengineering/Qwen3.5-4B-rk3588 \
qwen3.5-4b_w8a8_rk3588.rkllm --local-dir ~/models
# 3. Сервер с OpenAI-совместимым API — из примеров SDK
cd rknn-llm/examples/rkllm_server_demo
pip3 install flask
python3 flask_server.py \
--rkllm_model_path ~/models/qwen3.5-4b_w8a8_rk3588.rkllm \
--target_platform rk3588
# 4. Первый вопрос (из соседнего терминала)
curl http://127.0.0.1:8080/rkllm_chat \
-H "Content-Type: application/json" \
-d '{"model":"qwen3.5-4b","messages":[{"role":"user","content":"Привет! Кто ты?"}],"stream":false}'
CPU-вариант ещё короче: curl -fsSL https://ollama.com/install.sh | sh, затем ollama run qwen3.5:4b-q8_0 (и не забудьте совет про четыре потока выше).
Нагрузку на NPU по ходу генерации видно в /sys/kernel/debug/rknpu/load, температуру — в /sys/class/thermal/thermal_zone0/temp.
Статья подготовлена лабораторией ИИ ООО «Синнтерком» (Пермь, lab.synntes.com). Плату предоставила команда Repka Pi.