Настройка LLM на NanoPi R76S (RK3576)

Published on 28.04.2026

У меня Ubuntu 24, обычный образ с FriendlyElec не подготовленный к нейросетям.

Тут есть два пути. Запуск rkllm — специальнособранной сетки для запуска llm на rockchip и запуск форка llama.cpp.

Разберу оба.

rkllm

Официальная документация направляет нас на https://github.com/rockchip-linux/rknpu2. Возможно оно даже работает, но нигде никто не указывает, какие нужны пререквесты. В частности я ловил такие ошибки:
Сами драйвера на NPU установлены, но к устройству нет доступа. Оказывается нет прав.

bash: fix_freq_rk3576.sh: No such file or directory
=========init….===========
E RKNN: [23:03:17.632] failed to open rknpu module, need to insmod rknpu dirver!
E RKNN: [23:03:17.632] failed to open rknn device!
E RKNN: [23:03:17.732] Device is not available Get device properties failed

Оказывается фиксится это просто

sudo usermod -aG render $USER
sudo usermod -aG video $USER
sudo reboot

Перезагрузка обязательно, NPU не хватает нормально права.

В поисках решения в чем же дело я наткнулся на другой проект — https://github.com/Pelochus/ezrknpu

Ставится он просто

curl https://raw.githubusercontent.com/Pelochus/ezrknpu/main/install.sh | sudo bash

Собственно минут через 5-10 все установится и можно будет работать с сеткой. Для запуска простая команда, например

GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/Pelochus/deepseek-R1-distill-qwen-1.5B # Running git lfs pull after is usually better
cd deepseek-R1-distill-qwen-1.5B && git lfs pull # Pull model
rkllm DeepSeek-R1-Distill-Qwen-1.5B_W8A8_RK3588.rkllm 1024 1024 # Run!

Основная проблема — надо конвертировать формат моделей в rkllm. По мне так это гемор, а потом топаем дальше.

rk-llama.cpp

Это форк llama.cpp под наши процы, её и запустим https://github.com/invisiofficial/rk-llama.cpp

git clone https://github.com/invisiofficial/rk-llama.cpp
cd rk-llama.cpp
git checkout d90f5fea7210020b427f9919c4b74f10e165a4fd

Обращу внимание, что мы берем не последнюю версию. Судя по всему последний (на 28.08.26) коммит должен был как раз сделать возможность настраивать сетку под наш чип (rk3576), но что-то пошло не так. Потому откатываемся назад и руками поправим так, как нужно нам.

В файле ggml/src/ggml-rknpu2/rknpu2-configuration.cpp нужно изменить две строчки

  1. rk3588_config.core_count = 2; (change from 3 to 2)
  2. rk3588_config.max_k_limit = 4096; (change from 8192 to 4096)

Дальше собираем как обычно

mkdir build && cd build
cmake .. -DLLAMA_RKNPU2=ON
make -j4

И запускаем

# Set new max limit for open files
ulimit -n 65536

# Start chat with the model
./build/bin/llama-cli -m ./gemma-3-1b-it-Q8_0.gguf

Собственно все. Для запуска сервера (для подключения внешних инструментов) используем другой бинарь

./rk-llama.cpp/build/bin/llama-server -m /home/taz/models/qwen/qwen2.5-3b-instruct-q8_0.gguf -ngl 99 -c 4096 --host 0.0.0.0 --port 8080
Taz
Author: Taz

Posted in:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *