Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 9

Для сравнения на Nvidia Orin Nano (те же 15-25 W), ResNet50. 950 qps. На полноценных ускорителях типа a10, 5-6k qps - не предел. Это просто для общего понимания колоссальной разницы.

Полученные результаты подчеркнули, что российские технологические решения конкурентоспособны и способны решать актуальные задачи в области ИИ

Вывод совершенно проивоположен тому, что написано до этого в статье. Для Э8СВ и NM Card производительность Resnet50 грубо составляет примерно 10 qps. При этом производительность даже условно "мобильного" решения от Nvidia - Orin Nano - составляет, как верно заметил комментатор выше, примерно 1000 qps. Т.е. примерно в 100 раз выше. К тому же TDP Э8СВ выше в несколько раз, что указано в начале статьи. Если же мы возьмём "взрослые" серверные решения от Nvidia по типу H100, то там цифры ещё на порядок выше. Т.е. Э8СВ и MN Card абсолютно неконкуретны современным решениям от Nvidia. Да и это логично - Э8СВ является CPU, а NM Card DSP процессором. Т.е. они по сути своей не являются AI процессорами, и неудивительно, что проигрывают специализированным решениям.

Из вышеприведённых чипов только IVA TPU является действительно специализированным AI решением. И его результаты на том же Resnet50 было бы интересно посмотреть, но как раз они отсутствуют. Понятно, что они также существенно уступят Nvidia, но разрыв по идее должен быть не в 100 раз, и даже возможно не на порядок.

UPD. Для IVA табличка дана по ссылке, а не в статье. Из неё видно, Resnet50 показывает уже преемлемые цифры в несколько сотен qps, в зависимости от размера батча. Ещё не конкурентно, но уже что-то.

Тут те же 990 FPS. По ссылке Nvidia упоминание про батч-сайз сразу в лоб не нашёл.

Реальная проблема тут скорее в том, что серийность дивайсов кардинально разная.

Хотя, возможно с учетом очень высоких цен от Nvidia на такие платы сравнение валидное. Просто скорее всего есть китайские платы с такими же показателями, но на порядок дешевле.

Это не совсем те же FPS. У Nvidia Jetson под 1000 FPS с batch 1, я эту цифру помню из каких-то реальных измерений. Если кстати сейчас зайти на сайт nvidia, то они вообще 6000+ Samples/s показывают на Orin. Честно говоря, надо разбираться, что эта цифра на самом деле означает.

Здесь же 990 для Batch 8 и с некоей оптимизацией Staging, которая непонятно мне, что делает и судя по большому количеству прочерков в таблице, вообще её корректность под вопросом. А для нормального режима с batch 1 это 255 FPS.

Ещё наводит на некоторые мысли, что при 990 FPS performance составляет 3.85 GFLOPS. Вообще, тут непонятно, это реально GFLOPS или GOPS (int8). Во-вторых, у IVA TPU не 16 TFLOPS, как указано, а на самом деле в районе 24 TFLOPS (ну либо они гоняли тесты на 500 МГЦ). Но даже если мы примем приведённые в статье цифры как правильные, то реально HFU (утилизация тензорного юнита в данном случае) составляет всего лишь 24 %, что очень мало для конволюционных сетей, запущенных на TPU. На Nvidia утилизация на таких сетях заметно выше 50 %. Т.е. что-то не сходятся тут цифры. У меня есть такое подозрение, что размером картинок тут поигрались. Я на какой-то презентации от IVA видел цифры по перфу для Resnet-50, и там в сноске мелким шрифтом было "размер 112х112", когда как стандарт 224х224. Как бы в этих измерениях не было такого же.

Но на самом деле это всё может быть не столь важно, понятно, что в определённых сценариях IVA TPU может заменить условный Jetson Nano уж точно. Скорее главная проблема как обычно в софтварной экосистеме. Надо все сетки руками с помощью тулов от IVA перегонять, смотреть, что там происходит, фиксить баги, анализировать потери точности. Для клиентов это самая большая проблема как мне кажется.

1. Анализ производительности матричных операций (SGEMM)

  • Ключевая операция в нейросетях — матричное умножение (GEMM). Согласно Кнуту, асимптотическая сложность классического алгоритма умножения матриц n×nn×n равна O(n^3) но на практике оптимизация по алгоритму Штрассена дает сложность: O(n^2.81) а также аппаратные ускорители (SIMD, векторные регистры).

    Ускорение после замены SGEMM:

      • Замена стандартного SGEMM в ONNX Runtime на оптимизированные функции из EML (Elbrus Media Library) сократила константный множитель в сложности.

        • Если исходный код ORT имел сложность O(n^3)

        • После замены на EML исходная константа C_EML << C_ORT

          • Это объясняет BERT в 14.8 раз.
            Пример: Если C_ORT = 10, C_EML = 0.67, ускорение ≈ 14.8x (10 / 0.67 ≈ 14.8).

    Теоретическая vs реальная производительность NM Card:

  • теоретический максимум: 512 GFlops=8 ячеек×8 операций/такт×f ГГц512GFlops=8ячеек×8операций/такт×fГГц.

    • Реальная производительность 136.6 GFlops136.6GFlops (26.7%) указывает на:

      • Ограничения законов Амдала и Густавсона-Барсиса: часть операций не параллелится, создавая "бутылочное горло".

      • Низкую эффективность использования памяти: время доступа к данным (tmem​) превышает время вычислений (tcalc​), что нарушает баланс Роара: tmem​​/tcalc ≥1.

2. Масштабируемость NM Card (коэффициент 4.46)

идеальное ускорение на p процессорах описывается формулой: Sp=T1/Tp,

где T1​ — время на 1 ядре, Tp​ — на p ядрах.
Для NM Card S4​=4.46(теория: Sp​≤p).

Это превышение возможно только если:

  • Наблюдается суперлинейное ускорение (редкий случай), например, из-за кэширования данных при распределении задачи.

  • Или в однопоточном режиме часть ресурсов простаивала (например, векторные регистры не полностью загружены).

    Пусть α — доля параллелимого кода. По закону Амдала:


  • 4.46 = 1 / [(1 - alpha) + (alpha / 4)] → alpha ≈ 0.99 (99% кода параллелится).что маловероятно. Скорее всего, в тестах использовались embarrassingly parallel задачи (например, независимая обработка кадров).

3. Утилизация IVA TPU (24.7%)

Теоретическая производительность IVA TPU: 16TFLOPS, реальная — 3.95TFLOPS.
Разрыв можно объяснить через модель фон Неймана:

Утилизация=Реальные FLOPS/Теор. FLOPS=(Тактовая частота×Эффективность конвейера)/(Тактовая частота×Пиковая пропускная способность)

  • Формула утилизации:
    Утилизация = (Реальные_FLOPS / Теоретические_FLOPS) 100%
    Для IVA TPU: (3.95 TFLOPS / 16 TFLOPS)
    100 ≈ 24.7%. Из-за:

    • Простоев между операциями (data hazards).

    • Неоптимального планирования инструкций (по Кнуту, раздел 1.3.3 «Анализа алгоритмов»).

4. Анализ задержек (Latency)

Для режима Latency в IVA TPU:

Tlatency=Tзагрузка+Tвычисления+Tвыгрузка

Если Tвычисления≪Tзагрузка​, то ускорение вычислений почти не влияет на общее время.

  • Закон Лилли:
    Ускорение_системы ≤ T_вычислений / T_загрузки

5. Оптимизация батчей (Batch Size)

Для NM Card при росте батча с 1 до 8:

Утилизация растет, но после Batch=4 прирост замедляется.Это соответствует закону убывающей отдачи: ΔПроизводительность ∝ 1 / sqrt(Batch)

  • Оптимальный батч:
    Находится через решение уравнения через метод Ньютона-Рафсона ля максимизации функции df/d(Batch) = 0, где f(Batch) = FLOPS / Batch.

Ключевые выводы:

  1. Производительность матричных операций зависит от константных множителей, которые можно оптимизировать через низкоуровневые библиотеки (EML). Асимптотическая сложность GEMM:

    • Классический алгоритм: O(n^3).

    • Алгоритм Штрассена: O(n^2.81).

    • Константы в O(n^3) важнее асимптотики. Даже небольшое улучшение C дает значительный прирост (пример: 14.8x для BERT).

  2. Баланс Роара: Если t_mem / t_calc >= 1, производительность упирается в память, а не в вычисления.

  3. Суперлинейное ускорение (S_p > p) возможно только при кэшировании данных или неоптимальном однопоточном режиме.

  4. Модель фон Неймана для утилизации:
    Утилизация = (Тактовая_частота Эффективность_конвейера) / (Тактовая_частота Пиковая_пропускная_способность).

Рекомендации:

  • NM Card:

    • Использовать Batch=4 (эмпирический оптимум).

    • Добавить поддержку depthwise-сверток (для MobileNet).

  • IVA TPU:

    • Уменьшить t_mem через кэширование (например, STAGING-оптимизация).

    • Публиковать документацию по архитектуре.

  • Эльбрус:

    • Внедрить CSR (Compressed Sparse Row) для разреженных матриц. Сложность: O(nnz), где nnz — число ненулевых элементов.

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

Добрый день!
Исходный код можно найти в репозитории МИЭМ НИУ ВШЭ по ссылке.

В версии EML 2021 года

Не стесняйтесь потормошить поставщика -- закрутился тогда и не передал ответ компиляторщиков:
"Разреженную алгебру с тех пор поддержали, сейчас ещё тензоров добавим".
Как понимаю, в конце 2025 будет готово.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий