Всех приветствую, это вторая часть об RKNPU. В прошлый раз разбирали работу RKNPU с LLM. Сегодня будем разбирать работу RKNPU с другими типами моделей, предназначенных для выполнения других задач, таких как, компьютерное зрение, генерация изображения, их анализ и т.д. Приступим к тестированию.
Программное обеспечение
Как и в прошлый раз, для RKNPU нужно rknn-toolkit2, rknn-toolkit-lite2. rknn-llm в этот раз не нужен, так как, в данной статье не будут тестироваться llm.
Для тестов использовался stable-diffusion, как и для RKNPU, так и для CUDA, AMD AVX2, Vulkan (в этот раз, будем сравнивать не только CPU и NPU RK3588, но и другие устройства, но об этом позже). Также сравним производительность в yolov8 на CPU и NPU RK3588, который находиться в составе rknn_model_zoo (почему именно так, будет объяснено позже).
Перейдём, собственно, к тестированию. Планировалось больше тестов, но тот же tts и whisper.cpp, по причине ошибок при сборке, не смогли быть протестированы. Также не были протестированы другие версии yolo – просто не увидел смысла в тестировании других моделей. А вот теперь точно можно перейти к тестированию.
Тестирование
Начнём со stable diffusion. Тут тестировался не только RK3588, а также – Nvidia Geforce RTX3060, AMD Ryzen 7 5700X, Ryzen 5 5625U. Результаты тестирования приведены ниже.
Начнём с RK3588. NPU быстрее CPU в 20 раз (что неплохо). А если сравнить с Ryzen, то они в любом случаи отстают от NPU, но при этом опережают CPU RK3588 от 3 до 8 раз (что неплохо). Отмечу, что тестирование AMD и Nvidia делалось в ОС Windows 10. Из-за этого, производительность CPU почти в 2 раза меньше, чем под Linux. А если сравнить NPU с RTX3060, то разница составляет в 4 раза, что очень хорошо. А почему? Всё просто. Если RTX3060 бывает на 8 и на 12 ГБ. Есть карты и на 16, и на 24, и на 48, и на 96 ГБ видеопамяти (есть серверные ускорители, но они стоят много). При этом, RK3588 может иметь до 32 ГБ ОЗУ по более низкой цене (правда не обеспечивая более высокую скорость).
Теперь перейдём к yolov8.
Тут было решено просто сравнить CPU и NPU RK3588 по одной причине – как правило, yolo используют во встраиваемых устройствах (как наберутся результаты, можно будет сравнивать c другими чипами). Теперь, собственно, к результатам. Разница составляет 7 раз. Хоть и меньше, чем в stable diffusion, но меньшая разница вызвана тем, что модель долго загружалась в NPU силами 1 потока процессорной части, поэтому разница уменьшилась.
Выводы
Если в LLM NPU RK3588 показал себя среднее, то в других типах нейросетей (не всех, правда говоря) показал себя неплохо. Действительно сильно быстрее, будучи сравнимым с Ryzen 9 5950X под Windows. И особенно хорошо в stable diffusion, отставая от RTX3060 в 4 раза (что уже хорошо). Достигнуто это было за счёт хаков, которые позволяют существенно увеличить производительность (примерно, раз в 7-20, по сравнению с процессорной частью).
На этом, про RKNPU почти всё. До встречи в следующих статьях.

