
Привет, Хабр! Меня зовут Сергей Нефёдов, я являюсь руководителем мастерской «Аппаратно-программные комплексы ИИ» в Инженерно-математической школе НИУ ВШЭ и VK. Вместе со студентами мастерской — Русланом Камчазовым и Львом Бабинцевым — мы провели исследование, результатами которого хотим поделиться в этой статье. Целью исследования стало тестирование скорости вывода и эффективности адаптированных современных нейросетевых алгоритмов на отечественных процессорах, таких как «Эльбрус-8СВ», а также ускорителях NM Card и IVA TPU. Особое внимание мы уделили возможности переноса ведущих мировых open-source решений на российскую элементную базу.
Развитие ИИ привело к значительному росту спроса на вычислительные ресурсы, особенно в текущих реалиях, когда их импорт затруднен. В ответ вызовы российские разработчики начали создавать собственные аппаратно-программные комплексы на основе российских процессоров. Одним из примеров такой работы и является наш проект. На основе исследования отечественной элементной базы мы разработали аппаратно-программный комплекс, протестировали скорость вывода и эффективность адаптированных современных решений.
Аппаратные платформы
Одной из центральных фигур исследования стал разработанный АО «МЦСТ» отечественный процессор «Эльбрус-8СВ», ввиду имеющихся наработок по переносу программного комплекса ONNX Runtime на данную платформу.
Также мы выбрали ускорители NM Card разработки АО НТЦ «Модуль» и IVA TPU разработки ООО «Хайтек» в связи с заявленной высокой производительностью в задачах нейронных сетей, а также комплексной интеграцией этих систем в существующие мировые стандарты искусственного интеллекта. В таблице ниже приведена сравнительная характеристика выбранного АПК:

Процессор «Эльбрус-8СВ» — это наиболее производительная модель семейства российских процессоров общего назначения, основанная на собственной архитектуре E2K. Этот процессор предназначен для высокопроизводительных многопроцессорных серверов, что делает его отличным выбором для сложных вычислительных задач, включая работу с искусственным интеллектом.
Для эффективной работы нейросетевых моделей на этой платформе мы решили использовать ONNX Runtime (ORT) — специализированную библиотеку, позволяющую запускать нейронные сети, описанные в формате ONNX. Формат ONNX универсален и поддерживает конвертацию из форматов большинства других фреймворков: PyTorch, TensorFlow, Scikit-Learn, Keras, Caffe2, CNTK, MXNet. Обеспечение поддержки ONNX на «Эльбрусе» позволяет вычислять модели, созданные с помощью всех этих фреймворков.
Преимущества ONNX Runtime (ORT)
Библиотека ORT фокусируется на повышении производительности вычислений не только на широко используемых для обучения и инференса искусственного интеллекта GPU и TPU, но и на CPU. В ранних версиях, таких как ORT 1.1.0, оптимизация была направлена исключительно на популярные серверные процессоры от компании Intel, которые поддерживают инструкции AVX. Остальные устройства работали через менее эффективный кросс-платформенный код на C++, который зачастую был написан без встроенных в стандарт языка оптимизаций на уровне компиляции.
Версия ORT 1.1.0, выпущенная в 2019 году, имела ограниченную поддержку новейших архитектур, в особенности это касается архитектуры Transformer, которая сегодня лежит в основе многих ведущих моделей обработки естественного языка, вроде BERT и GPT, и широко применяется в задачах обработки естественного языка, что требует адаптации и оптимизации библиотек для полноценной поддержки и эффективного выполнения трансформерных моделей на различных типах аппаратного обеспечения.
Ситуация значительно улучшилась с выходом ORT 1.15: появилась поддержка множества CPU различных архитектур, а кросс-платформенный C++ код стал гораздо более оптимальным, что помогло при адаптации библиотеки для архитектуры e2k. ORT стало эффективно работать с моделями, созданными с использованием последних версий фреймворков. Однако процесс адаптации оказался непростым. Компиляторы «Эльбруса» не поддерживали ряд важных возможностей стандарта C++. В частности, многие виды оптимизаций, от которых нам пришлось избавиться, например, от оптимизации хвостовых вызовов (опция -foptimize-sibling-calls
). Также компилятор LCC 1.25 не поддерживал R-строки, в виде которых в библиотеке передавались шаблоны описания функций. При замене их на классические строки исчезло множество ошибок. Впоследствии мы перешли на LCC 1.26, который решил эту и еще множество проблем с поддержкой стандарта языка.
Основные изменения касались замены функций матричного умножения, реализованных на C++, на оптимальные методы из EML (Elbrus Media Library) — специальной библиотеки, разработанной МЦСТ, содержащей высокооптимизированные реализации различных математических функций. Конкретно, было заменено SGEMM — Single precision GEneral Matrix Multiply, умножение одинарной точности. В отличие от ситуации с ORT 1.1.0, это не решило все проблемы, так как в библиотеке появились различные оптимизированные методы умножения, отличные от SGEMM, и используются они везде, где это возможно. Проблемным оказалось умножение матриц, которые можно эффективно хранить в памяти (разреженные, диагональные). EML основана на BLAS, который поддерживает такое хранение матриц, но стал это делать лишь в 2022 году. В версии EML 2021 года, которая была у нас в доступе, есть поддержка хранения диагональных матриц в виде массива в памяти, но нет поддержки оптимизаций для разреженных матриц. Можно было оставить для разреженных матриц кросс-платформенное умножение на C++, но тесты показали, что при отключении для них особого способа хранения EML SGEMM умножает их гораздо быстрее, поэтому мы сошлись на данном варианте.
Результаты тестирования BERT
В результате проделанной работы производительность нейросети BERT увеличилась в среднем в 14,8 раза при переходе с ORT 1.1 на ORT 1.15.1. Тестирование проводилось с использованием инструмента оценки производительности MLPerf, которая учитывает весь цикл работы модели — от загрузки до предобработки и финального вывода результатов. Такой подход обеспечивает реалистичное представление о производительности системы в условиях реального использования.

Тестирование ResNet на процессоре «Эльбрус» с использованием специализированных ускорителей
Для тестирования производительности с использованием специализированных ускорителей, мы выбрали нейронную сеть ResNet50, которая используется для классификации изображений.
Тестирование ResNet производилось на 100 кадрах. Система выполнила обработку за 11 секунд, достигнув итоговой точности 80%. Данная нейросеть содержит 4,2 миллиарда параметров, что обеспечивает результирующую производительность в 38,2 GFlops. В ходе сравнения с процессором Intel® Core™ i7-8650U на той же версии ORT, система на базе процессора «Эльбрус» продемонстрировала превосходство в среднем в 2,54 раза по времени выполнения. Исходный код нашей имплементации для ORT 15.1 открыт и доступен в репозитории МИЭМ НИУ ВШЭ.
Специализированные ускорители, такие как NMCard и IVA TPU, обладают значительными преимуществами перед традиционными центральными процессорами (CPU) в задачах машинного обучения и искусственного интеллекта. Основное преимущество TPU заключается в их архитектуре, оптимизированной для выполнения параллельных матричных операций, что является ключевым компонентом при обучении и использовании нейронных сетей. В отличие от универсальных CPU, которые предназначены для широкого спектра задач и не обладают специализированными средствами для ускорения матричных вычислений, TPU могут выполнять эти операции значительно быстрее и с меньшими затратами энергии. Это позволяет существенно ускорить выполнение моделей и снизить затраты на электроэнергию.
Тестирование производительности с использованием NM Card
Модуль NM Card основан на процессоре К1879ВМ8Я, который использует гетерогенную многопроцессорную архитектуру. Важный аспект этой работы — оценка реальной производительности устройства, которая зависит от эффективного использования каждого юнита (подъядра), состоящего из управляющего блока и вычислительных сопроцессоров, а также от производительности векторных сопроцессоров плавающей арифметики. Каждый юнит содержит до восьми вычислительных ячеек, каждая из которых включает векторные регистры 32х64 бита и вычислитель, способный выполнять до 8 операций плавающей арифметики одинарной точности или до 2 операций двойной точности за один такт. Однако реальная эффективность вычислений может отличаться от теоретической из-за задержек памяти, неоптимальной нагрузки и других факторов. Поскольку данные о производительности в открытых источниках ограничены, целесообразно провести независимые измерения.
Так как у NM Card и IVA TPU нет встроенных инструментов для подсчета операций в секунду, мы рассчитывали их вручную. Для каждой сети нужно было посчитать количество операций, необходимых для обработки кадра, и замерить, сколько кадров в секунду может обрабатывать ускоритель. Зная эти показатели, мы смогли вычислить реальную производительность ускорителя.
Для разработки сценариев тестирования производительности системы мы использовали следующие подходы:
-
Измерение времени вычисления модели. С помощью отдельных системных вызовов для загрузки данных, подготовки модели и выполнения инференса можно измерять только время, затрачиваемое на вычисления модели. Этот параметр позволяет оценить чистую скорость работы вычислителя и вычислить количество операций в секунду.
-
Оценка задержки полного цикла работы. Важно измерять общую задержку, включающую время на загрузку данных в память, их обработку и выгрузку результата. Этот аспект критичен для оценки производительности системы в задачах реального времени, где время реакции является ключевым фактором.
-
Анализ эффективности параллелизации. С использованием NMDL (NeuroMatrix® DeepLearning), который позволяет регулировать количество задействованных юнитов, можно проверить эффективность параллелизации. Это включает в себя оценку того, как хорошо юниты работают совместно над задачей и приводит ли использование четырех юнитов к четырехкратному увеличению производительности по сравнению с одним юнитом.
Перечисленные методы позволили комплексно оценить производительность системы и выявить потенциальные узкие места. Полученные в ходе работы результаты тестирования приведены в таблице ниже:


Из результатов можно сделать следующие выводы:
-
Средняя производительность на юнит в задачах компьютерного зрения — 24,8 GFlops (миллиардов операций с плавающей точкой в секунду). Средняя производительность при задействовании всех 4 юнитов — 108,3GFlops.
-
Средний коэффициент многоядерности составил 4,46. Использование 4 юнитов вместо одного позволяет получить более, чем 4-кратный прирост производительности. То есть взаимодействие юнитов в параллельном режиме не является слабой стороной этого решения.
-
Максимальная производительность составила 136,6 GFlops (достигнута с сетью Resnet18). Заявлена теоретическая производительность в 512 GFlops, то есть максимальная утилизация архитектуры 26,7%.
-
Средняя производительность на ватт при замеренном потреблении в 10,5 Ватт — 8,9 GFlops/Ватт.
Также стоит отметить, что производительность ускорителя на сети mobilenet значительно ниже из-за того, что NM Card не поддерживает некоторые её операции.
Тестируем производительность с использованием IVA TPU
IVA TPU представляет собой специализированный тензорный процессор, выполненный в формате PCI-E. Он предназначенн для обработки видео и решения задач машинного обучения в ЦОД. Этот учкоритель оптимизированн для высокопроизводительных вычислений, благодаря чему эффективно справляется с алгоритмами искусственного интеллекта и анализом видео в реальном времени. Однако, несмотря на популярность продукта, подробная информация о внутренней архитектуре и устройстве IVA TPU на момент написания статьи либо отсутствует, либо скрыта под соглашением о неразглашении (NDA).
Нам известно, что IVA TPU поддерживает фреймфорк MLPerf, благодаря чему появилась возможность реализовать следующие режимы тестирования:
-
Режим Performance. В данном режиме в память ускорителя заранее загружаются все доступные данные для тестов, чтобы минимизировать временные издержки на передачу данных между хостом и устройством. Такой подход позволяет измерить максимальную пропускную способность, выражаемую в количестве кадров в секунду.
-
Режим Latency. Здесь каждый новый кадр загружается только после завершения обработки предыдущего. Это помогает точно измерить задержку полного цикла обработки, включая время на подготовку данных и получение результатов.
-
Оптимизация через STAGING. Ускоритель поддерживает специальный режим оптимизации под названием STAGING. Его влияние на производительность требует отдельного изучения путем тестирования различных нейронных сетей с применением этой функции.
-
Батчевая обработка. IVA TPU поддерживает возможность подачи нескольких кадров одновременно («батчей»). В отличие от NM Card, кадры не распределяются между отдельными вычислительными юнитами целиком, что делает интересным исследование влияния размера батча на производительность. Будем тестировать разные размеры батчей: 1, 2, 4, 8 кадров.
Подготовить окружение для тестирования IVA TPU достаточно просто, так как компания предоставляет удалённую среду тестирования ускорителя, в котором можно запускать задачи, пользуясь удобным графическим интерфейсом. Поэтому мы ограничились выбором подходящих нейросетей для испытаний:
-
Mobilenet_v2 — самая компактная модель из представленных.
-
Squeezenet — ещё одна лёгкая сеть.
-
Yolo4 (You Only Look Once) — самая крупная модель среди рассматриваемых.
-
DCGAN (Deep Convolutional Generative Adversarial Network).
-
FCN-8s (Fully Convolutional Network).
-
Resnet50.
-
DenseNet121.
Такой набор моделей позволит охватить широкий спектр задач и архитектур, что даст наиболее полное представление о возможностях IVA TPU.
С визуализацией результатов тестирования можно ознакомиться по ссылке.
Результат тестирования
По итогам проведенных тестов мы зафиксировали следующие наблюдения:
-
Заметная разница во времени компиляции. Между режимом с активированной STAGING-оптимизацией и стандартным режимом наблюдается значительная разница во времени компиляции. Нейросети с большим числом слоев и сложных операций либо завершают компиляцию с ошибками, либо вызывают сбои при выполнении откомпилированной модели. Такие случаи отмечены в таблице прочерками. Вероятно, сам механизм оптимизации еще нуждается в доработке со стороны производителя.
-
Наиболее заметный эффект от оптимизации. Наибольшее улучшение производительности было зафиксировано на небольших сетях при обработке больших пакетов кадров. Это подчеркивает важность правильного выбора конфигурации для конкретных задач.
-
Производительность операций с плавающей точкой. Средняя производительность IVA TPU составила 1,381 триллиона операций в секунду, что уже само по себе впечатляет. Однако максимальные показатели оказались заметно скромнее заявленных производителем характеристик.
-
Максимальная производительность. Лучший результат составил 3,95 триллиона операций в секунду. Хотя заявленная теоретическая производительность составляет 16 триллионов операций в секунду, фактическая утилизация архитектуры оказалась лишь на уровне 24,7%. Это свидетельствует о наличии значительных резервов для улучшения эффективности использования ресурсов.
Таким образом, несмотря на высокую базовую производительность, потенциал ускорителя пока используется далеко не полностью. Разработчикам предстоит дальнейшая работа по улучшению механизмов оптимизации и повышению утилизации архитектуры, особенно для сложных моделей и задач.
Перспективы отечественных решений в области ИИ
Проведённые тесты показали, что адаптация современных нейросетевых алгоритмов к отечественным архитектурам, таким как «Эльбрус», NM Card и IVA TPU, позволяет значительно улучшить производительность и сократить время вычислений. Специализированные ускорители, оптимизированные для параллельных матричных операций, обеспечивают существенные преимущества в задачах машинного обучения и искусственного интеллекта, показывая более высокую производительность при меньшем потреблении энергии по сравнению с универсальными процессорами.
Полученные результаты подчеркнули, что российские технологические решения конкурентоспособны и способны решать актуальные задачи в области ИИ. Однако для дальнейшего роста их производительности необходима дополнительная работа по оптимизации программного обеспечения и улучшению аппаратных характеристик. Эти направления остаются ключевыми для достижения новых уровней эффективности.
Также исследование подтвердило, что различные архитектуры процессоров имеют свои уникальные особенности и могут эффективно использоваться для решения специфичных задач. Это открывает широкие перспективы для дальнейших исследований и разработок в области отечественных технологий искусственного интеллекта.
ссылка на оригинал статьи https://habr.com/ru/articles/895432/
Добавить комментарий