inteintegrity2026-10-22

Ejecutar modelos de visión y lenguaje en Raspberry Pi 5 con RK1820

Conecte un acelerador RK1820 M.2 a Raspberry Pi 5 mediante PCIe y ejecute MobileNetV2 y Qwen2.5-0.5B localmente con RKNN3 Runtime 1.1.0.

Raspberry PiRK1820RKNN3Rockchip

Raspberry Pi 5 puede utilizar un Rockchip RK1820 como acelerador de IA externo mediante PCIe. Este proyecto verifica el proceso completo, desde el montaje y la instalación del controlador hasta la inferencia de un modelo de visión y la generación local de texto, en una Pi 5 con un módulo RK1820 M.2 2242.

La Pi ejecuta Linux, RKNN3 Runtime y las aplicaciones de prueba. El RK1820 ejecuta el modelo. Verificamos la inferencia de MobileNetV2 y la generación de texto con Qwen2.5-0.5B usando Runtime 1.1.0 y una frecuencia NPU de 166 MHz.

La guía RK1820_RK1828 Raspberry Pi M.2 Quick Start, V1.0.0, de Rockchip describe los módulos RK1820 y RK1828. El dispositivo físico probado en este proyecto es un RK1820 2242. Estos resultados no confirman el rendimiento ni la compatibilidad de todos los módulos RK1828, adaptadores o imágenes de sistema.

Hardware y entorno verificado

ComponenteConfiguración probada
HostRaspberry Pi 5 Model B Rev 1.1
AceleradorRK1820 M.2 2242; el dispositivo informa de 2560 MB de memoria
ConexiónCable PCIe FPC y adaptador RK_EXT_PIHAT_RK182X
Enlace PCIe5.0 GT/s, x1
SODebian 13.7 (trixie), ARM64
Kernel6.18.50+rpt-rpi-2712
Paquete de instalaciónrknn3-rk182x-m2-2242_1.1.0_arm64.deb
Controlador PCIe3.3.1
Firmware del dispositivo / API RKNN31.1.0 / 1.1.0
rknn-smi1.3.0
Frecuencia NPU166 MHz

Refrigere tanto la Pi como el acelerador. La guía de Rockchip recomienda la fuente USB-C oficial de Raspberry Pi de 27W o una fuente equivalente adecuada. Compruebe los requisitos de entrada y las etiquetas del adaptador; la potencia total de un cargador no basta para determinar su idoneidad.

1. Montar y alimentar el hardware

Ver el vídeo de instalación en YouTube

  1. Desconecte la alimentación antes de manipular el módulo o el cable PCIe.
  2. Inserte el RK1820 en la ranura M.2 del adaptador y fíjelo con el tornillo correspondiente.
  3. Conecte la Pi 5 y el adaptador con el cable PCIe FPC. Compruebe la orientación de los contactos y cierre los seguros de ambos conectores.
  4. Revise la refrigeración y todas las conexiones antes de encender.
  5. Con el adaptador RK_EXT_PIHAT_RK182X de la guía, conecte la fuente a la entrada de alimentación USB-C del adaptador. El adaptador alimenta todo el sistema. Alimentar solo la entrada USB-C de la Pi puede dejar el acelerador sin alimentación.

Si el adaptador tiene varios conectores USB-C, identifique la entrada de alimentación mediante sus etiquetas o documentación antes de conectar la fuente.

2. Instalar el controlador y Runtime

Obtenga del proveedor de la placa o del SDK el paquete Debian correspondiente al módulo. Este proyecto utiliza el paquete 2242; para un módulo 2280, utilice el paquete correspondiente aprobado por el proveedor.

Los comandos siguientes se ejecutan en una shell Linux de la Pi. Al conectarse por SSH desde su PC, utilice su propio usuario, dirección y credenciales; estas instrucciones no requieren una contraseña predeterminada concreta.

bash
mkdir -p ~/rk1820_rk1828
cd ~/rk1820_rk1828

Copie rknn3-rk182x-m2-2242_1.1.0_arm64.deb en este directorio e instálelo:

bash
sudo apt update
sudo apt install -y ./rknn3-rk182x-m2-2242_1.1.0_arm64.deb

El instalador compila el controlador PCIe e instala el firmware, Runtime, la herramienta de gestión y los programas de prueba. Compruebe que la compilación y la configuración del paquete terminan correctamente antes de reiniciar:

bash
sudo reboot

La Pi necesita acceder a los repositorios APT configurados para obtener dependencias como DKMS. Si falla su descarga, encontrar el archivo .deb local no significa que la instalación haya finalizado. Resuelva la conectividad y repita la instalación. La compilación también requiere las cabeceras del kernel en ejecución; compruebe uname -r y /lib/modules/$(uname -r)/build si falla.

3. Verificar el dispositivo y seleccionar una frecuencia compatible

Después de reiniciar y volver a conectarse:

bash
lspci -nn
ls -l /dev/pcie-rkep-* 2>/dev/null
sudo rknn-smi info
sudo rknn-smi -v
sudo rknn-smi info -t npu_freq

La enumeración PCIe de nuestra prueba incluyó:

text
0001:01:00.0 Processing accelerators [1200]: Rockchip Electronics Co., Ltd RK182x Edge AI Computing Coprocessor [1d87:182a] (rev 01)

Debe existir un nodo /dev/pcie-rkep-* y rknn-smi info debe indicar RK1820, Online, OK. Registre las versiones del controlador, firmware y API antes de probar los modelos.

Nuestro módulo 2242 informó de las frecuencias 166, 200, 250 y 300 MHz. Utilizamos 166 MHz para la prueba inicial:

bash
sudo rknn-smi set -t npu_freq -d 0 -s 166
sudo rknn-smi info -t npu_freq

Seleccione un valor de la salida real Available NPU Freq del dispositivo. No aplique el ejemplo de 400 MHz de un módulo 2280 a esta configuración 2242.

Si el dispositivo no aparece, examine el enlace y el controlador por separado:

bash
lsmod | grep rkep
sudo dmesg | grep -iE 'pcie|rkep|rknn' | tail -100

Durante la configuración inicial, el controlador estaba cargado, pero el enlace PCIe externo indicaba link down, no aparecía ningún endpoint RK en lspci y fallaba la inicialización de rknn-smi. Las comprobaciones posteriores mostraron link up, 5.0 GT/s PCIe x1 y el endpoint RK. Un controlador cargado no demuestra por sí solo que el enlace funcione. Revise la alimentación del adaptador y la conexión FPC antes de reinstalar repetidamente el software. Las observaciones disponibles no permiten identificar qué cambio físico restableció el enlace.

4. Ejecutar MobileNetV2

Prepare una pareja de modelo y pesos correspondientes en:

text
~/rk1820_rk1828/MobileNetV2/
├── mobilenetv2-12.rknn
└── mobilenetv2-12.weight

Esta prueba reutilizó la pareja MobileNetV2 de un paquete RKNN3 existente en rknn3_models/v1.0.0/cnn/MobilenetV2. Esa pareja completó la inferencia con Runtime 1.1.0; esto no implica que todos los modelos antiguos sean compatibles. Obtenga modelos preconvertidos compatibles del proveedor del SDK o utilice la descarga de modelos RKNN3 (código de acceso: rknn) y compruebe los nombres y las instrucciones.

Ejecute en la Pi:

bash
cd ~/rk1820_rk1828/MobileNetV2
sudo rknn3_model_test \
  mobilenetv2-12.rknn \
  mobilenetv2-12.weight \
  0x1 '' '' 0 1

La herramienta 1.1.0 instalada recibe core_mask justo después de la ruta de pesos. Los argumentos vacíos omiten los archivos de entrada y salida de referencia; 0 selecciona la forma y 1 ejecuta una iteración. Consulte rknn3_model_test --help si su versión difiere de este proyecto o de la guía anterior.

Una ejecución correcta muestra la inicialización del modelo, All 1 loops completed successfully y el tiempo medio de ejecución. En una ejecución registrada a 166 MHz, el modelo tardó 11.343 ms, con un total por iteración de 12.249 ms incluyendo la sincronización de entrada y salida.

Este comando utiliza entradas aleatorias y omite la comparación con salidas de referencia. Verifica el proceso de inferencia, no la precisión de clasificación. Son mediciones de una sola ejecución, no una prueba de rendimiento sostenido.

5. Generar texto con Qwen2.5-0.5B

En la descarga de modelos RKNN3, introduzca el código rknn y acceda a:

text
RKNN3_SDK/rknn3_models/v1.1.0/llm/Qwen2.5-0.5B

Copie los cuatro archivos de esa misma versión al directorio de trabajo de la Pi. Conserve los nombres oficiales, que no incluyen el sufijo -Instruct utilizado en la guía anterior:

text
~/rk1820_rk1828/Qwen2.5-0.5B/
├── Qwen2.5-0.5B.rknn
├── Qwen2.5-0.5B.weight
├── Qwen2.5-0.5B.tokenizer.gguf
└── Qwen2.5-0.5B.embed.bin

Los cuatro archivos suman aproximadamente 632 MB (603 MiB). Verifique los tamaños y la integridad de la transferencia; no combine un modelo antiguo con el archivo embedding de otro modelo.

Ejecute:

bash
cd ~/rk1820_rk1828/Qwen2.5-0.5B
sudo rknn3_session_test \
  Qwen2.5-0.5B.rknn \
  Qwen2.5-0.5B.weight \
  Qwen2.5-0.5B.tokenizer.gguf \
  Qwen2.5-0.5B.embed.bin \
  2048 256 0xff

Este modelo proporciona una configuración de contexto de 2048 tokens, por lo que utilizamos 2048 en lugar de 1024 de la guía anterior. El argumento siguiente limita la generación a 256 tokens nuevos y el último es la máscara de núcleos.

El programa del proveedor ejecuta automáticamente preguntas incorporadas; el comando no acepta una pregunta como argumento posicional. Las pruebas originales incluyen preguntas en chino e inglés sobre la relatividad. Para la grabación destinada a la comunidad anglófona, cambiamos únicamente la pregunta china del programa local por Explain the basic concepts of relativity. y conservamos una copia de seguridad. Este cambio de presentación no es necesario para ejecutar el modelo; una instalación sin modificar puede mostrar primero la prueba en chino.

Compruebe que se genera texto legible, aparecen las estadísticas y se muestra END TEST. Alcanzar el límite de tokens nuevos es normal si la respuesta supera los 256 tokens.

ObservaciónResultado registrado
Frecuencia NPU166 MHz
Contexto / máximo de tokens nuevos2048 / 256
Generación de la prueba en inglés 1255 tokens de decodificación en 3820.02 ms; 66.75 tokens/s
Generación de la prueba en inglés 2255 tokens de decodificación en 3821.18 ms; 66.73 tokens/s
Código de salida0
Dispositivo tras la pruebaOnline / OK

Las velocidades corresponden a la estadística Generate de la herramienta. Excluyen el prefill y la inicialización del modelo y varían según las preguntas, la configuración, la frecuencia y la versión del modelo. La herramienta informa de 256 tokens de salida y contabiliza 255 en la fase Generate cronometrada; la tabla mantiene esa distinción.

Qué demuestra este proyecto

La configuración Pi 5 + RK1820 verificada permite realizar una prueba de inferencia CNN y generar texto localmente mediante RKNN3 Runtime. Puede servir de base para una aplicación en la que la Pi gestione las entradas, la coordinación y la interfaz, mientras el RK1820 ejecuta la inferencia. Las pruebas de estabilidad prolongadas y de precisión específicas de la aplicación deben realizarse por separado de esta validación inicial.