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

Недавно в разговоре с уже нынешними коллегами мне вспомнилась эта дискуссия и я решил довести это до конца. Для этого был подобран ближайший аналог от NVIDIA с точки зрения микроэлектроники: фабрика, тех.процесс, площадь кристалла и потребляемая мощность. В результате была выбрана видеокарта GT730 и произведено сравнение с устройством NM Card от НТЦ Модуль.

Disclaimer

Вся информация получена из открытых источников, открытой документации и/или докладов на конференциях.

Сравнение характеристик чипов

К1879ВМ8Я
К1879ВМ8Я

Модуль NM Card построен на базе процессора К1879ВМ8Я, также известного как NM6408, изготовленного на фабрике TSMC по технологическим нормам 28 нм в 2017 году. Площадь кристалла составляет 83 мм2, содержит 1.05 млрд транзисторов, потребляемая мощность не превышает 35 Вт [1]. Микросхема содержит контроллер PCIe 2.0 x4 и интерфейс к памяти DDR3. Пиковая (теоретическая) производительность составляет 512 GFLOPS в формате данных fp32 без поддержки fp16, bf16 или int8. Процессорные ядра NMC4 работают на тактовой частоте 1ГГц.

GK208B
GK208B

Ближайшими аналогами этого чипа выглядят два графических процессора от NVIDIA: GK208B обновлённого поколения Kepler для дискретных видеокарт [2] и GM108S поколения Maxwell для сегмента ноутбуков [3]. Оба чипа практически идентичны, вышли в марте 2014 года. В связи с тем, что GM108S поставляется только в составе ноутбуков, а их цена на вторичном рынке высоковата для простого удовлетворения любопытства, был выбран первый вариант. Однако стоит отметить, что Maxwell является более новой архитектурой, поддерживается более актуальным стеком ПО и потенциально способен достичь большей производительности. Характеристики обоих систем-на-кристалле (СнК) приведены в таблице ниже:

К1879ВМ8Я

GK208B

Фабрика и тех.процесс

TSMC, 28нм

TSMC, 28нм

Площадь кристалла, мм2

83

87

Количество транзисторов, млрд

1.05

1.02

Максимальная мощность, Вт

35

23

Контроллер PCIe

Gen 2, x4

Gen 2, x8

Интерфейс памяти

DDR3

DDR3*

Пиковая производительность, GFLOPS

512

692.7

Частота, МГц

1000

902

* — также поддерживается память GDDR5

Сравнение модулей

Модуль NM Card
Модуль NM Card

В качестве модуля на базе NM6408, как уже было сказано, выбран NM Card [4]. В плане производительности все модули с одним NM6408 показывают идентичную производительность, которая приведена в документации на фреймворк для инференса от Модуля под названием NMDL [5], на которую я и буду ссылаться в дальнейшем.

MSI GT730
MSI GT730

За пару дней поисков по местным барахолкам мне удалось найти видеокарту MSI GT 730 (N730K-2GD3H/LPV1) [6].  Видеокарта была произведена в 2016 году и достаточно близко соответствует модулю NM Card. Обе карты имеют пассивное охлаждение, однако у GT730 всего 2 ГБ памяти против 5 ГБ у NM Card. Это может сказаться при работе с более требовательными к памяти сетями, к которым ни одна из исследуемых не относится. Второе отличие заключается в штатной частоте: 902 МГц против 1000 МГц у NM6408, но её можно одним действием поднять в Afterburner. После этого пиковая производительность составит 768 GFLOPS, что соответствует разнице в 1.5 раза относительно NM6408.

Тестовый стенд и софт

Тестовый стенд
Тестовый стенд

В качестве тестового стенда я достал лежащий без дела компьютер с весьма скромными характеристиками: i3-7100 и 8 ГБ памяти DDR4. Однако, поскольку осуществляется замер производительности видеокарты, это не должно оказать значительного влияния. В связи с достаточно старой архитектурой, последняя версия CUDA, которая работает с этой картой, является 11.6. Современный onnxruntime поставляется с зависимостью от CUDA 12.x, для CUDA 11.x требуется собирать onnxruntime самостоятельно.

В итоге, чтобы получить работающую версию onnxruntime с cuDNN и TensorRT, были найдены и выбраны следующие версии компонентов:

Компонент

Версия

onnxruntime

1.14

CUDA

11.6.2

cuDNN

8.7.0

TensorRT

8.5.3.1

В качестве бенчмарка была написана простая программа с применением onnxruntime, которая загружала модель, запускала инференс с батчем 1 и измеряла время исполнения на протяжении 10 секунд, после чего бралось среднее время выполнения. Для чистоты эксперимента была сделана попытка по максимуму использовать референсные модели, которые распространяются в качестве дополнительных данных к фреймворку NMDL.

Название модели

Использована референсная модель

Комментарий

alexnet

+

inception_229

+

resnet-18

-

Некорректный параметр модели

resnet-50

+

squeezenet

-

Некорректный параметр модели

yolov2-tiny

-

Несовпадение размеров между слоями внутри модели

yolov3-tiny

+

yolov5s

+

yolo3

+

inception_512

+

unet

+

yolo5l

-

Не предоставлена модель

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

Результаты сравнения

Важное отличие измеряемых величин заключается в том, что NMDL возвращает время выполнения по шкале времени управляющего ядра arm без учёта пересылок данных входных и выходных тензоров. Onnxruntime не предоставляет такого механизма, в связи с чем в этом эксперименте метки времени берутся по шкале CPU до и после выполнения запуска инференса через onnxruntime. Таким образом, при прочих равных, полученные значения производительности от onnxruntime будут ниже.

Название модели

Результат GT730, fps

Результат NM Card, fps

Ускорение, %

alexnet

42.05

12.6

233.7

inception_229

13.75

12.8

7.4

resnet-18

63.74

25

154.9

resnet-50

19.55

12.2

60.2

squeezenet

149.8

74.4

101.3

yolov2-tiny

25.96

21

23.6

yolov3-tiny

29.14

27.3

6.7

yolov5s

9.1

4.7

93.6

yolo3

2.89

3.7

-21.9

inception_512

4.69

3.93

19.3

unet

1.68

2

-16

yolo5l

1.66

1.39

19.4

Две модели из 12 оказались медленнее на GT730, производительность двух моделей оказалась на уровне, остальные получили значительный прирост производительности. Среднее улучшение относительно NM Card составило 56.8%

Заключение

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

Ссылки на источники

[1] https://www.elcomdesign.ru/netcat_files/File/48(7).pdf

[2] https://www.techpowerup.com/gpu-specs/nvidia-gk208b.g815

[3] https://www.techpowerup.com/gpu-specs/nvidia-gm108s.g1033

[4] https://www.module.ru/directions/iskusstvennyj-intellekt/nm-card

[5] https://www.module.ru/directions/iskusstvennyj-intellekt/neuromatrix-deep-learning

[6] https://www.msi.com/Graphics-Card/N730K-2GD3HLPV1/Overview

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


  1. Wicron
    02.07.2025 07:37

    Почему бы не увеличить разрядность шины памяти (проставить HBM2 и IP блок контроллера для нее) и не перейти на концепцию как у Эльбруса - VLIW?. Ведь как я понял, они оперируя ограничением, вызванным тех. процессом, как раз искали решение, где не условные удельные частоты решают, а иной принцип организации вычислений. То есть объединения команд (слов) в группу, высокая разрядность регистров, большое их число.


    1. NelSon29 Автор
      02.07.2025 07:37

      Ответ прост — сложно и дорого, особенно в то время, когда NM6408 проектировался. Помимо цены на IP и модули памяти, значительно вырастает стоимость корпусирования. Вдобавок к этому, HBM применяют в другом классе устройств.


  1. Olegun
    02.07.2025 07:37

    Сокращение СнК из заготовка статьи может быть раскрыто?


    1. NelSon29 Автор
      02.07.2025 07:37

      Конечно, СнК это систем-на-кристалле, оно же system on a chip (SoC). Распространенное сокращение, но вы правы, добавил расшифровку в текст.