Вступление

Для начала хотел пояснить что это далеко не все нейронные сети, которые портировали на Эльбрус, как минимум можно вспомнить компанию SmartEngines. В данной статье хочу поделиться результатами моих экспериментов на тему нейронных сетей.

GGML

Ранее я уже писал о данной нейронной сети, однако в предыдущей статье данные устарели, так как ggml уже переделали на 1000 раз, хочу показать последние результаты, которых удалось добиться благодаря стараниям Ильи Курдюкова. В нынешнем ggml упор пошел больше на GPU чем на CPU. Поэтому для тестов предлагаю данный репозиторий. Его также можно установить на любое устройство, которое поддерживает ggml. Также имеется скрипт bench.sh, который можно запустить для тестов. Для скачивания модели есть скрипт ./download-koala.sh

Тесты ggml

Результаты представлены в миллисекундах.

16C тестировался под виртуальной машиной qemu-kvm, где было предоставлено 12 ядер. Как и в предыдущей статье тесты ggml проводятся без использования GPU.

Потоки

Ryzen 7 5800H, мс

Intel Core i5-12400, мс

Intel Core i5-8250U, мс

Эльбрус-16С, мс

Эльбрус-8СВ, мс

1

331.89

321.45

544.01

771.46

974.84

2

173.18

192.18

313.06

402.19

503.77

3

122.39

186.69

280.07

280.82

349.39

4

106.68

184.35

269.33

219.58

271.34

5

99.08

183.78

284.27

181.06

225.06

6

99.24

184.69

271.82

155.89

194.02

7

104.36

189.50

272.70

137.33

172.53

8

116.13

185.52

288.94

123.22

160.89

P.S. Тут представлены пока не все тесты, в дальнейшем дополню.

NCNN

ncnn - Это высокопроизводительный фреймворк нейросетевого вывода, оптимизированный для мобильной платформы. Также данный фреймворк поддерживает vulkan что позволяет запускать нейросети на видеокартах AMD. Тут уже больше не про оптимизации, а про мои "хотелки". Изначально я просто хотел запустить Stable-Diffusion на Эльбрусе, однако, pytorch полноценно пока не портирован под e2k. Поэтому я пошел по пути наименьшего сопротивления и нашел данный фреймворк вместе с которым можно использовать Stable-Diffusion. Ссылка на репозиторий. Для начала, благодаря данному фреймворку, запустил нейронную сеть Yolov3. Во всех последующих экспериментах использовалась видеокарта radeon RX6700XT. Сборка была сделана следующим образом:

git clone https://github.com/Tencent/ncnn.git
cd ncnn
git submodule update --init
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DNCNN_VULKAN=ON ..
make -j8
sudo make install

Если хотите запустить пример с работой нейронной сети yolov3 то можно выполнить следующие действия:

cd examples
make -j8
wget https://raw.githubusercontent.com/Qengineering/YoloV3-ncnn-Jetson-Nano/main/mobilenetv2_yolov3.param
wget https://github.com/Qengineering/YoloV3-ncnn-Jetson-Nano/raw/main/mobilenetv2_yolov3.bin
./yolov3 (изображение, на котором хотите запустить распознавание).png

Stable-Diffusion-ncnn

Ну и на сладкое генерация картинок. На данный момент все собирается без каких либо проблем. Единственное в коде изменил false на true в параметре use_vulkan_compute. Также скачал стандартные модели (AutoencoderKL-fp16.bin, FrozenCLIPEmbedder-fp16.bin, UNetModel-MHA-fp16.bin, AutoencoderKL-encoder-512-512-fp16.bin), предложенные разработчиком. После, в файле magic.txt заменил на свой промпт, и получил следующее изображение

Изображение, сгенерированное на Эльбрус-8СВ и видеокарте radeon RX6700XT
Изображение, сгенерированное на Эльбрус-8СВ и видеокарте radeon RX6700XT

Upscaler

Для апскейла изображения использовался waifu2x-ncnn-vulkan.

git clone https://github.com/nihui/waifu2x-ncnn-vulkan
cd waifu2x-ncnn-vulkan
git submodule update --init --recursive
mkdir build
cd build
cmake ../src
cmake --build . -j 8

./waifu2x-ncnn-vulkan -i input.png -o output.png -n 2 -s 2

Заключение

В данной статье я просто хотел показать что нейронные сети можно запускать на компьютерах под управлением процессора Эльбрус. Если нужна более подробная информация по установке, можно перейти по ссылке.

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


  1. le2
    03.08.2023 07:48
    +5

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

    1. без GPU сравнивался инференс квантованных моделей.

    2. а что с векторными расширениями? Есть ли вообще программная поддержка в Эльбрусе?

    3. тестов на плавающей точке нет?

    4. Эльбрус в этих задачах примерно как ноутбучный процессор с TDP 15Вт?

    5. у i5 - 8 потоков. Почему тесты только для 4 потоков?


    1. IgeNial
      03.08.2023 07:48

      Теплопакет у ноутбучных SoC - понятие относительное. Для 5800H у AMD указано 45W Default TDP и 35-54W cTDP. На деле же у меня в Lenovo Legion 7 16" он потребляет до 75 Вт в течение минут 5, потом потребление снижается до 66 Вт. И не забывайте про разницу в техпроцессах, которая между TSMC N7P и TSMC 16FF, прямо скажем, здоровенная


      1. le2
        03.08.2023 07:48
        +2

        занижать паспортные TDP это норма сейчас для всех производителей. У меня Тредриппер с паспортными 280Вт, по факту до 350Вт. Но это единственная характеристика по которой можно сделать какую-то быструю оценку.


        1. Civil
          03.08.2023 07:48

          занижать паспортные TDP это норма сейчас для всех производителей

          Это не совсем так. Просто то что обычно измеряют люди - не соответствует методике измерения и расчета TDP. AMD свою методику публиковала полуофициально в виде ответа в одном из постов на реддите, Intel публикует более явно в виде всяких whitepaper'ов (разных для разных поколений процессоров, и упрощенно где-то в районе FAQ). И что хуже всего - методики измерения разные (а некоторые вендоры еще и не публикуют свои методики, насколько я знаю), чтобы сравнивать их было затруднительно.


      1. Civil
        03.08.2023 07:48
        +2

        И не забывайте про разницу в техпроцессах, которая между TSMC N7P и TSMC 16FF, прямо скажем, здоровенная

        Это не так важно, так как сравнение скорее продукта который должен был выйти в 2022-2023 году (но так и не вышел) с мобильным продуктом 2021 года от AMD и мобильным же интелом 2017 года - то есть с этой точки зрения сравнение нечестное в пользу Эльбруса. А что МЦСТ решила в свое время выбрать 16нм техпроцесс - это проблема МЦСТ.

        И чтобы не писать лишний комментарий - собственно к статье по-прежнему те же претензии и замечания, что были к прошлой. И про методику тестирования и про результаты.


        1. t-jet
          03.08.2023 07:48

          Я думаю все банально просто, у автора был доступ к такому оборудованию, вот он и провел тесты на нем. Странный упрек. Или вы предлагаете, что бы ублажить весь хабр взять в аренду или купить 20 платформ и потом на них все сравнить, в надежде, что никто не прикопается ?


          1. Civil
            03.08.2023 07:48
            +1

            Это скорее всего так, но об этом надо писать в заголовке и обозначать, что это дополнительное преимущество для Эльбруса, как болен нового процессора из представленных, с заметно большим энергопотреблением и при этом оба процессора-конкурента не используют все имеющиеся возможности. Иначе это введение читателей в заблуждение.

            Плюс это в первую очередь ответ на комментарий выше и конкретную фразу. Потому что для честного сравнения надо ставить конкурентами процессоры 2022-2023 года с близким TDP, например


  1. Pppnnn
    03.08.2023 07:48

    Зачем на процессоре с производительностью пентиума 3 нужны нейросети?