Проверка использования процессора Rockchip NPU в Linux

В наши дни все новые устройства стали оснащаться встроенными чипами искусственного интеллекта. Правильный технический термин для «чипа ИИ» – NPU, что означает нейронные процессоры.

Если у вас есть встроенный NPU, вы можете задаться вопросом, использует ли его ваша система.

В этом руководстве я расскажу, как отслеживать использование NPU на моем процессоре Rockchip.

Данный метод применим только для NPU, встроенного в процессор Rockchip. Я протестировал его на своем устройстве ArmSoM Sige7 с процессором RK3588. Вы можете проверить, есть ли в вашей системе npu, с помощью этой команды:

dmesg | grep -i npu

Проанализируйте полученный результат, чтобы понять, есть ли в системе NPU или нет.

Проверка использования NPU Rockchip

К счастью, Rockchip использует функцию debugfs. Debugfs – это особый тип виртуальной файловой системы, которая предоставляет отладочную информацию в режиме реального времени, подобно тому, что вы получаете с помощью proc.

Файл, который предоставит вам данные об использовании NPU в любой момент времени, выглядит следующим образом:

/sys/kernel/debug/rknpu/load

Вот что он показывает, когда я запустил его на своем устройстве ArmSoM. Он показывает использование всех трех ядер NPU:

abhishek@armsom:~$ sudo cat /sys/kernel/debug/rknpu/load
NPU load:  Core0:  0%, Core1:  0%, Core2:  0%,
abhishek@armsom:~$

Как вы можете видеть, он просто показывает использование NPU в данный момент. Не очень удобно, если вы хотите отслеживать использование NPU.

Альтернативой может быть сочетание с командой watch, которая будет выполнять ту же команду, что и выше, но каждые две секунды (по умолчанию):

watch sudo cat /sys/kernel/debug/rknpu/load

Вот снимок экрана, на котором я выполнял локальный LLM, использующий NPU:

Чтобы остановить выполняющуюся команду watch, нажмите Ctrl + C.

Чтобы действительно увидеть использование NPU, необходимо запустить программу, которая должна использовать NPU. В противном случае значение всегда будет равно 0 для всех ядер.Есть и другой способ мониторинга использования NPU. Я обнаружил его, когда экспериментировал с проектом ezrknpu для запуска LLM на Rockchip NPU.

В проекте есть скрипт ntop.sh, который показывает использование NPU в виде команды top. Что не совсем верно, поскольку команда top не загрязняет экран. Скрипт ntop.sh, с другой стороны, заполняет экран всеми этими строками, и они не исчезают после нажатия Ctrl + C.

Содержание сценария таково:

#!/bin/bash
Title: ntop.sh
Author: Pelochus
Brief: A very basic 'top' style program that shows the status of the NPU in Rockchip's SoCs 
Variables
CLEAR=""
Parameters check
if [[ $1 = '-h' ]]
then
    echo
    echo "ntop Help"
    echo
    echo "-c: Clears output every refresh"
    echo "-h: Shows this help screen"
    echo 
    echo "For more information visit https://github.com/Pelochus/ezrknpu"
    echo
    exit 
elif [[ $1 = '-c' ]]
then
    CLEAR="clear"
fi
while true; do
    eval $CLEAR # If empty, will not clear
    cat /sys/kernel/debug/rknpu/load
    sleep 0.5
done

Важной частью является цикл while в конце. Вот пример проверки использования NPU с помощью этого скрипта.

Заключение

Как видите, не существует стандартной команды типа top, которая показывает использование NPU для различных производителей. На данный момент у меня есть только Rockchip, поэтому мои исследования были ограничены и, следовательно, это руководство ограничилось NPU Rockchip.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен itsfoss.com

Комментарии (0)