Настройка 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 нужно изменить две строчки
- rk3588_config.core_count = 2; (change from 3 to 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 8080Posted in: