Rtx ядра что это
Перейти к содержимому

Rtx ядра что это

  • автор:

Что Такое Ядра RTX?

RT Cores — это ускорители, предназначенные для выполнения операций трассировки лучей с исключительной эффективностью . В сочетании с программным обеспечением NVIDIA RTX ядра RT позволяют художникам использовать рендеринг с трассировкой лучей для создания фотореалистичных объектов и сред с физически точным освещением. Узнать больше.

Что означает RTX?

Прежде чем мы углубимся в мельчайшие детали, что означает RTX? Это означает «Ray Tracing Texel eXtreme». Это линейка видеокарт NVIDIA, представленная в 2018 году серией GeForce 20.

Сколько ядер у NVIDIA RTX?

NVIDIA GeForce RTX 3090 имеет до 10 496 ядер CUDA и на 1 792 ядра больше, чем RTX 3080, и на 4 608 больше, чем RTX 3070.

Что лучше RTX или GTX?

Что касается производительности, серия RTX обычно обеспечивает лучшую производительность, чем серия GTX, особенно в играх, поддерживающих трассировку лучей и DLSS.

Что означает RTX в играх?

Nvidia RTX — это более поздняя линейка карт, представленная в 2019 году в серии 20. RTX — еще одна маркетинговая аббревиатура, означающая «Ray Tracing Texel eXtreme», и, как следует из названия, эти карты были первыми, в которых были представлены некоторые специальные возможности трассировки лучей.

Что такое тензорные ядра?

Подходит ли RTX 3060 для игр?

Как основная карта, RTX 3060 в первую очередь ориентирована на игры с разрешением 1080p и 1440p. Некоторые более легкие игры также могут нормально работать в разрешении 4K, а в некоторых случаях вы можете снимать в разрешении 4K при средних настройках. Но несмотря на то, что у нее больше видеопамяти, чем даже у RTX 3080, частота кадров определенно снижается при самых высоких разрешениях.

Что делают ядра графического процессора?

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

Сколько ядер нужно графическому процессору?

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

Чем хорош RTX?

NVIDIA RTX — это самая передовая платформа для трассировки лучей и технологий искусственного интеллекта, которые меняют способы игры и творчества. Более 250 лучших игр и приложений используют RTX для обеспечения реалистичной графики с невероятно высокой производительностью или передовых новых функций искусственного интеллекта, таких как NVIDIA DLSS и NVIDIA Broadcast.

Почему RTX лучший?

С картой RTX у вас есть возможность включить и использовать аппаратно-ускоренную трассировку лучей во многих играх, что улучшает качество освещения и теней, иногда в значительной степени.

Почему RTX дорогой?

Почему первые видеокарты Nvidia RTX 4000 такие дорогие? Виноваты в смерти закона Мура и рост стоимости компонентов, говорит генеральный директор Дженсен Хуанг. «Идея о том, что стоимость чипа со временем снизится, к сожалению, осталась в прошлом», — сказал Хуан во время интервью с журналистами в среду.

Подходит ли RTX для игр?

Это дорого, но RTX 4070 Ti — лучший игровой графический процессор в 2023 году. Это не значит, что вам нужно покупать его ради отличного игрового ПК, но если у вас есть на него бюджет, то он достаточно хорош, чтобы того стоить.

RTX предназначен только для игр?

Nvidia GeForce RTX (Ray Tracing Texel eXtreme) — это профессиональная платформа визуальных вычислений, созданная Nvidia, которая в основном используется для проектирования сложных крупномасштабных моделей в архитектуре и дизайне продуктов, научной визуализации, исследованиях энергетики, играх, а также производстве фильмов и видео.

Чем выше RTX, тем лучше?

RTX мощнее GTX? Безусловно, серия выделенных видеокарт Nvidia RTX более мощная, чем серия Geforce GTX. Это связано с изменением архитектуры, которое повысило производительность и позволило реализовать функции, характерные для карт серии RTX.

Что важнее ядро ​​или графический процессор?

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

Ядра графического процессора быстрее процессора?

Хотя графические процессоры могут обрабатывать данные на несколько порядков быстрее, чем центральные процессоры, благодаря массовому параллелизму, графические процессоры не так универсальны, как центральные процессоры. Процессоры имеют большие и обширные наборы инструкций, управляющие каждым вводом и выводом компьютера, чего не может сделать графический процессор. В серверной среде может быть от 24 до 48 очень быстрых ядер ЦП.

Чем больше ядер графического процессора, тем лучше?

Графические процессоры имеют гораздо больше ядер, чем процессоры, хотя они и меньше. Благодаря дополнительным ядрам графические процессоры могут выполнять гораздо больше математических и географических вычислений одновременно с большей эффективностью, тогда как процессоры более ограничены из-за того, что это более «универсальный» компонент.

Имеют ли ядра графического процессора значение для игр?

Однако многие задачи лучше выполняет графический процессор. Некоторые игры работают лучше с большим количеством ядер, потому что они их действительно используют. Другие — нет, потому что они запрограммированы на использование только одного ядра, а игра работает лучше с более быстрым процессором. В противном случае ему не хватит мощности для работы, и он будет тормозить.

Сколько ядер процессора и графического процессора мне нужно?

Заключение. При покупке нового компьютера, будь то настольный ПК или ноутбук, важно знать количество ядер процессора. Большинству пользователей достаточно 2 или 4 ядер, но видеоредакторам, инженерам, аналитикам данных и другим специалистам в аналогичных областях потребуется как минимум 6 ядер.

Почему ядра графического процессора имеют значение?

Большее количество ядер CUDA означает, что больше данных можно обрабатывать параллельно. Увеличение тактовой частоты означает, что одно ядро ​​может работать намного быстрее. Графические процессоры становятся лучше с новыми поколениями и архитектурами, поэтому графическая карта с большим количеством ядер CUDA не обязательно будет более мощной, чем карта с меньшим количеством ядер CUDA.

Что лучше RTX или 3060?

Несмотря на то, что они имеют одно и то же имя, RTX 3060 Ti значительно мощнее, чем RTX 3060, благодаря лучшему графическому процессору, обилию ядер CUDA, Tensor и RT, а также более широкой пропускной способности памяти. RTX 3060 Ti в среднем работает лучше, чем RTX 3060 при всех разрешениях.

Почему RTX 3060 такая дорогая?

3060Ti значительно быстрее и новее, чем 2060, а также значительно дороже. 2060 Super и 3060Ti имеют одинаковую рекомендованную розничную цену, но 3060Ti по-прежнему значительно новее и быстрее, чем 2060 Super, и из-за этого его цена намного выше.

Как долго прослужит RTX 3060?

Фактически, если вы выберете карту с большим количеством вентиляторов и большим радиатором, возможно, вы сможете добиться еще большей производительности от графического процессора. В конце концов, RTX 3060 по-прежнему остается очень выгодной покупкой в ​​течение года и будет графическим процессором, который может легко прослужить долгие годы, как и GTX 1060 и 1660 до него.

Что такое тензорные ядра?

В течение последних трех лет Nvidia производит графические чипы с дополнительными ядрами, помимо обычных, используемых для шейдеров. Эти загадочные блоки, известные как тензорные ядра, можно найти в тысячах настольных ПК, ноутбуках, рабочих станциях и дата-центрах по всему миру. Но что они собой представляют и для чего используются? Нужны ли они вообще в наших видеокартах?

Сегодня мы объясним, что такое тензор и как тензорные ядра применяются в мире графики и глубокого обучения.

Немного математики

Чтобы понять, что делают тензорные ядра и для чего они используются, нам сперва нужно выяснить, что такое тензоры. Любые микропроцессоры, независимо от типа, выполняют математические операции над числами (сложение, умножение и т.д.).

Иногда эти числа нужно сгруппировать, так как они имеют неразрывную связь друг с другом. Например, когда чип обрабатывает данные для рендеринга, он может иметь дело с одиночными целочисленными значениями (такими как +2 или +115) для коэффициента масштабирования, либо же с группой чисел с плавающей точкой (+0,1, -0,5, + 0.6) для определения координат какой-то точки в трехмерном пространстве. В последнем случае для определения местоположения точки требуются все три части данных.

Простейший тип тензора не имеет измерений и состоит из одного значения – это то же, что и скалярная величина. По мере увеличения количества измерений, появляются другие распространенные математические структуры:

  • 1 измерение = вектор
  • § 2 измерения = матрица

Строго говоря, скаляр – это тензор 0 x 0, вектор – 1 x 0, а матрица – 1 x 1, но для простоты мы рассмотрим только матричную структуру в контексте наших тензорных ядер в графическом процессоре.

Одна из важнейших математических операций, выполняемых с матрицами – это умножение. Давайте посмотрим, как умножаются две матрицы 4 х 4:


Источник: techspot.com

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


Источник: techspot.com

Вам явно не хватит пальцев на руках и ногах, чтобы всё это посчитать

Как видите, «простое» вычисление произведения матриц состоит из множества умножений и сложений. Поскольку любой процессор, представленный сегодня на рынке, может выполнять обе эти операции, это означает, что любой настольный компьютер, ноутбук или планшет может обрабатывать базовые тензоры.

В то же время, приведенный выше пример содержит 64 умножения и 48 сложений; каждый промежуточный результат вычислений необходимо где-то хранить, прежде чем все их окончательно сложить между собой и, в конце концов, сохранить итоговый результат вычисления тензора. Таким образом, хоть умножение матриц и является математически простым, оно ресурсоёмко – необходимо использовать множество регистров, а кэш должен справляться с большим количеством операций чтения/записи.


Intel Sandy Bridge – первая архитектура, предлагающая расширение AVX

Процессоры AMD и Intel на протяжении многих лет предлагали различные расширения: MMX, SSE, а теперь AVX – все они являются SIMD (Single Instruction Multiple Data, «одиночный поток команд, множественный поток данных»), что позволяет процессору одновременно обрабатывать множество чисел с плавающей точкой – то есть именно то, что и нужно для умножения матриц.

Но есть особый тип процессора, специально разработанный для обработки SIMD-операций – да-да, это графический процессор (GPU).

Умнее, чем просто калькулятор

В мире графики огромное количество данных необходимо в одно и то же время передавать и обрабатывать в виде векторов. Возможность GPU выполнять такую параллельную обработку делает их идеальными для вычисления тензоров, и все они сегодня поддерживают GEMM (General Matrix Multiplication, подпрограмма умножения матриц).

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


Источник: techspot.com

Требования GEMM для строк и столбцов: матрица A (MxK), матрица B (KxN), матрица C (MxN)

Алгоритмы, используемые для операций с матрицами, как правило, работают лучше, когда матрицы не очень большие и квадратные (например, массив 10 x 10 обработается легче, чем 50 x 2). Но в любом случае, лучше всего эти алгоритмы работают на специально заточенном для таких операций оборудовании.

В декабре 2017 года Nvidia выпустила видеокарту с GPU на новой архитектуре Volta. Она был ориентирована на профессиональные рынки, поэтому ни в одной из моделей GeForce этот чип

никогда не использовался. Особенностью его было то, что это был первый графический процессор, который имел ядра только для тензорных вычислений.


Видеокарта Nvidia Titan V с чипом GV100 Volta. Да, Crysis на ней пойдёт.

Заложен ли в названии архитектуры какой-то смысл – мы без понятия, но тензорные ядра в ней обрабатывали 64 GEMM за такт на матрицах 4 x 4, содержащих значения FP16 (16-битные числа с плавающей точкой) или умножение FP16 со сложением FP32. Такие тензоры очень маленькие, поэтому при обработке фактических множеств данных, ядра обрабатывают большие матрицы по частям, формируя окончательный результат.

Менее чем через год Nvidia представила архитектуру Turing. На этот раз тензорные ядра появились в потребительских моделях GeForce. Система была обновлена, и поддерживала уже больше форматов данных, такие как INT8 (8-битные целочисленные значения), но в остальном работала так же, как и Volta.


GPU Turing от Nvidia

В начале этого года в GPU для дата-центров A100 дебютировала архитектура Ampere, и на этот раз Nvidia улучшила производительность (256 GEMM за цикл вместо 64), добавила дополнительные форматы данных и возможность очень быстро обрабатывать разреженные тензоры (матрицы с большим количеством нулей).

Для программистов доступ к тензорным ядрам в любом из чипов Volta, Turing или Ampere прост: соответствующий флаг в коде сообщает API и драйверам, что вы хотите задействовать тензорные ядра; ядра должны поддерживать ваш тип данных, а размерность матриц должна быть кратна 8. При удовлетворении этих условий, всем остальным займётся оборудование.

Все это прекрасно, но насколько тензорные ядра обрабатывают GEMM лучше, чем обычные ядра GPU?

Когда Volta только появилась, портал Anandtech провёл сравнительный математический тест трёх карт: новой Volta, топовой Pascal и старой Maxwell.

Понятие «точность» (precision) определяется количеством бит, используемых для чисел с плавающей точкой в матрицах: двойная (double) равно 64, одинарная (single) – 32 бита, и т.д. Горизонтальная шкала – шкала FLOPs, максимального количества операций с плавающей точкой в секунду (1 GEMM равен 3 FLOP).

Просто посмотрите, что получилось при использовании тензорных ядер вместо так называемых стандартных ядер CUDA! Они неоспоримо лучше справляются с подобными задачами, но в чём же их практическая польза?

Всё станет лучше с помощью математики

Тензорные вычисления крайне востребованы в физике и инженерии, с их помощью решаются различные сложные задачи в области механики жидкости, электромагнетизма или астрофизики,

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

Еще одна излюбленная область использования тензоров – это машинное обучение, особенно глубокое (deep machine learning). Это работа с громадными объёмами данных в гигантских массивах, называемых нейронными сетями. Связям между различными значениями данных присваивается определенный вес – число, выражающее значимость конкретной связи.


Источник: techspot.com

Поэтому, когда анализируется взаимодействие всех сотен или тысяч связей, каждый фрагмент данных в сети умножается на все возможные веса связей. Другими словами, происходит умножение двух матриц – а это классическая тензорная математика!


Чипы Google TPU 3.0 с водяным охлаждением

Именно поэтому все суперкомпьютеры для глубокого обучения оснащаются GPU, и почти всегда от Nvidia. Но некоторые компании пошли еще дальше, и создали свои собственные процессоры с тензорными ядрами. Так, например, Google в 2016 анонсировал свой первый TPU (Tensor Processing Unit, тензорный процессор), но эти чипы настолько узкоспециализированы, что кроме как выполнять операции с матрицами, больше ничего не умеют.

Тензорные ядра для обычных пользователей (GeForce RTX)

Но что, если я не астрофизик, озабоченный проблемой решения римановых многообразий, и даже не увлекаюсь экспериментами в глубинах сверхточных нейросетей? Мне какой толк от покупки GeForce RTX?

Может показаться, что вы зря потратили деньги на бесполезную функцию, поскольку тензорные ядра практически не используются для привычного рендеринга и кодирования/ декодирования видео. Однако в 2018 году Nvidia встроила тензорные ядра в свои потребительские продукты (Turing GeForce RTX), одновременно представив DLSS – Deep Learning Super Sampling.

Суть проста: кадр сперва рендерится на пониженном разрешении, а по окончании этого – разрешение увеличивается до исходного размера экрана монитора (например, сперва рендерится на 1080p, а затем изменяется до 1400p). Благодаря этому, повышается производительность, поскольку обрабатывается меньшее количество пикселов, при этом на экране всё равно получается отличная картинка.

Консоли уже многие годы практикуют нечто подобное, и многие современные PC-игры тоже обеспечивают такую возможность. В Assassin’s Creed: Odyssey от Ubisoft вы можете изменить разрешение рендеринга до 50% от разрешения монитора. К сожалению, качество картинки ощутимо страдает. Вот так игра выглядит в 4K с максимальными настройками графики:


Источник: techspot.com

На высоких разрешениях текстуры выглядят намного лучше, поскольку сохраняют все мелкие детали. Но к сожалению, такое качество требует большого объёма обработки. Что произойдёт,

если игру настроить на рендеринг с разрешением 1080p (в 4 раза меньше пикселей на прорисовку), а затем увеличить до 4К с помощью шейдеров.


Источник: techspot.com

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


Источник: techspot.com

Изображение слева отрендерено в 4K, а справа – в 1080p с последующим масштабированием до 4K. Разница становится более очевидной в движении, когда алгоритмы смягчения деталей быстро превращают всё в размытую кашу. Частично этого можно избежать с помощью повышения резкости в настройках видеокарты, но это совсем не то, чем бы нам хотелось заниматься.

Здесь и проявляет себя DLSS – Nvidia проанализировала несколько игр в первой версии этой технологии, используя разные разрешения, со сглаживанием и без него. Сгенерированные на разных режимах изображения были загружены в суперкомпьютеры компании, которые с помощью нейросетей искали наилучший вариант превращения изображения 1080p в идеальную картинку с высоким разрешением.


Источник: techspot.com

Стоит сказать, что DLSS 1.0 был не идеальным: детали часто терялись или мерцали в некоторых местах. К тому же, он не использовал тензорные ядра вашей видеокарты (это выполнялось сетью Nvidia), и каждая игра, поддерживающая DLSS, должна была быть проанализирована Nvidia для определения наилучшего алгоритма масштабирования для неё.


Источник: techspot.com

Когда в начале 2020 года вышла версия 2.0, в нее были внесены серьезные улучшения. Самым примечательным из них было то, что теперь суперкомпьютеры Nvidia использовались только для создания общего алгоритма масштабирования – в новой версии DLSS для обработки пикселей (тензорными ядрами вашего GPU) используются данные из отрендеренного кадра с применением нейронной модели.


Источник: techspot.com

Возможности DLSS 2.0 впечатляют, но пока что его поддерживает очень мало игр – на момент написания этой статьи их насчитывалось всего 12. Тем не менее, всё больше разработчиков стремятся реализовать его в своих проектах, и на то есть основания.

Любое масштабирование – это способ заметно повысить производительность, поэтому с полной уверенностью можно утверждать, что DLSS будет продолжать развиваться.

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

В частности, DLSS часто сопутствует с трассировкой лучей (ray tracing) в играх «с поддержкой RTX». Графические процессоры GeForce RTX содержат дополнительные вычислительные блоки, называемые RT-ядрами: особые логические блоки для ускорения вычислений пересечения «луч-треугольник» и обхода иерархии ограничивающих объемов (BVH, Bounding Volume Hierarchy). Эти два процесса занимают много времени для определения взаимодействия света с объектами сцены.

Поскольку трассировка лучей – процесс крайне трудоёмкий, разработчики вынуждены ограничивать число лучей и отражений в сцене, чтобы обеспечить приемлемый уровень игровой производительности. Кроме того, в результате этого процесса может появляться зернистость изображения, поэтому необходимо использовать алгоритм шумоподавления, что ещё более усложняет обработку. Ожидается, что тензорные ядра помогут повысить производительность с помощью шумоподавления на основе ИИ, но этому ещё предстоит материализоваться, поскольку большинство современных приложений по-прежнему используют для этих целей ядра CUDA. С другой стороны, имея DLSS 2.0 как перспективную технологию масштабирования, становится возможным эффективно использовать тензорные ядра для увеличения FPS после применения трассировки лучей к сцене.

Известны и другие планы относительно тензорных ядер в картах GeForce RTX, такие как улучшенная анимация персонажей или симуляция тканей. Но, как и в случае с DLSS 1.0, пройдет ещё немало времени, прежде чем появятся сотни игр, обыденно использующие специализированные матричные вычисления на GPU.

Начало весьма многообещающее

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

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

Также существует мнение, что площадь кристалла GPU рациональней использовать просто под дополнительные шейдерные ядра, что Nvidia и сделала в бюджетных версиях чипов Turing. Вместо тензорных ядер в таких картах как GeForce GTX 1650 стоят дополнительные шейдеры FP16.

Пока же, если вы хотите воспользоваться всеми преимуществами сверхбыстрой GEMM-обработки, у вас есть два варианта: либо накупить себе кучу огромных многоядерных процессоров, либо купить всего один GPU с тензорными ядрами.

Тензорные ядра NVIDIA

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

Тренировка алгоритмов ИИ

Модели ИИ становятся все более сложными, так как предназначены для таких задач, как, например, разговорный ИИ. Тренировка таких моделей с FP32 может занять несколько недель или даже месяцев. Тензорные ядра NVIDIA обеспечивают на порядок более высокую производительность при вычислениях с пониженной точностью, например в формате 8 бит с плавающей точкой (FP8) в Transformer Engine, Tensor Float 32 (TF32) и FP16. Прямая поддержка в нативных фреймворках через библиотеки CUDA-X ™ обеспечивает автоматическое внедрение пониженной точности, что позволяет добиваться сходимости значительно быстрее, сохраняя точность конечных результатов.

Тензорные ядра позволили NVIDIA поставить рекорд по обучению в отраслевом бенчмарке MLPerf.

Инференс ИИ

Эффективный ускоритель инференса ИИ должен отличаться не только отличной производительностью, но также универсальностью для работы с различными нейронными сетями и программируемостью – для создания новых. Низкая задержка при высокой пропускной способности и максимальная утилизация — вот важнейшие требования к производительности для эффективного инференса. Тензорные ядра NVIDIA позволяют выполнять операции различной точности: TF32, bfloat16, FP16, FP8 и INT8, обеспечивая исключительную универсальность и производительность.

Тензорные ядра позволили NVIDIA поставить рекорд по инференсу в отраслевом бенчмарке MLPerf.

Высокопроизводительные вычисления

HPC — это фундамент современной науки. Моделирование помогает ученым совершать новые научные открытия: глубже изучать сложные молекулы для создания лекарств, физические процессы — для поиска потенциальных источников энергии и атмосферные данные — для разработки точных прогнозов и подготовки к экстремальным погодным условиям. Тензорные ядра Turing поддерживают все операции, включая FP64, и ускоряют вычисления, сохраняя необходимую точность.

SDK для HPC – это набор основных компиляторов, библиотек и инструментов для разработки HPC-приложений на платформе NVIDIA.

Тензорные ядра NVIDIA H100

Четвертое поколение

С появлением тензорных ядер пиковая производительность графических процессоров NVIDIA увеличилась в 60 раз, сделав ИИ- и HPC-вычисления доступными для более широкого круга пользователей. Архитектура NVIDIA Hopper™ представляет тензорные ядра четвертого поколения с модулем Transformer Engine, использующим новый формат 8 бит с плавающей точкой (FP8). Это позволяет достичь в 6 раз более высокой производительности по сравнению с форматом FP16 при обучении моделей с триллионами параметров. В сочетании с трехкратным увеличением производительности при использовании форматов TF32, FP64, FP16 и INT8, тензорные ядра Hopper обеспечивают максимальное ускорение для всех нагрузок.

  • FP8
  • TF32
  • FP64
  • FP16
  • INT8

Из-за больших объемов математических вычислений время обучения сетей-трансформеров растягивается на месяцы. Вычисления в новом формате точности FP8 на архитектуре Hopper выполняются в 6 раз быстрее, чем вычисления в формате FP16 на архитектуре Ampere. Формат FP8 используется в модуле Transformer Engine, объединяющем тензорные ядра Hopper и предназначенном специально для ускорения обучения моделей типа «трансформер». Тензорные ядра Hopper способны смешивать форматы FP8 и FP16, что позволяет существенно ускорить ИИ-вычисления при обучении трансформеров, при этом сохраняя требуемую точность. FP8 также позволяет значительно ускорить инференс больших языковых моделей – производительность при этом будет до 30 раз выше, чем с архитектурой Ampere.

Наборы данных и модели ИИ увеличиваются в геометрической прогрессии, и, соответственно, растут требования к вычислительной мощности. Вычисления с пониженной точностью позволяют значительно повысить производительность, но требуют некоторых изменений в коде. Ускоритель H100 поддерживает точность TF32, которая работает аналогично FP32 и до 3 раз ускоряет обработку ИИ по сравнению с тензорными ядрами NVIDIA Ampere™, не требуя изменений в коде.

H100 продолжает обеспечивать мощь тензорных ядер для HPC – с еще большей производительностью, чем когда-либо. Производительность H100 в вычислениях формата FP64 в 3 раза выше по сравнению с решениями предыдущего поколения. Это еще больше ускоряет широкий спектр HPC-приложений, требующих математики с двойной точностью.

Тензорные ядра H100 ускоряют вычисления формата FP16 при глубоком обучении, обеспечивая трехкратный прирост производительности по сравнению с тензорными ядрами в архитектуре NVIDIA Ampere. Это значительно повышает производительность и ускоряет сходимость.

Впервые представленные в NVIDIA Turing™, тензорные ядра INT8 значительно ускоряют инференс и повышают эффективность. При развертывании приложений производительность архитектуры NVIDIA Hopper в операциях INT8 в 3 раза выше, чем у тензорных ядер предыдущего поколения. Это универсальность обеспечивает ведущую в отрасли производительность как для обработки больших объемов данных, так и при выполнении задач в реальном времени в основных и периферийных дата-центрах.

Тензорные ядра в архитектуре NVIDIA Ampere

Третье поколение

Опираясь на эти инновации, тензорные ядра в архитектуре NVIDIA Ampere предоставляют поддержку операций TF32 и FP64, ускоряя и упрощая внедрение ИИ и обеспечивая возможности тензорных ядер для HPC. Благодаря поддержке операций bfloat16, INT8 и INT4 эти тензорные ядра третьего поколения создают универсальный ускоритель как для тренировки ИИ, так и для инференса.

Что такое тензорные ядра?

В течение последних трех лет Nvidia производит графические чипы с дополнительными ядрами, помимо обычных, которые используются для шейдеров. Известные как тензорные ядра, эти таинственные устройства могут быть обнаружены в тысячи настольных ПК, ноутбуков, рабочих станций и дата центрах по всему миру. Но что это и для чего они используются? Действительно ли они нужны в видеокартах?

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

Чтобы понять, что именно делают тензорные ядра и для чего они могут быть использованы, сначала нужно точно определиться с понятием тензор. Микропроцессоры, независимо от того от их формы, все выполняют математические операции (сложение, умножение и т.д.) над числами.

Иногда эти числа нужно сгруппировать, потому что они имеют некоторое значение друг для друга. Например, когда микросхема обрабатывает данные для визуализации графики, она может иметь дело с единичными целочисленными значениями (такими как +2 или +115) для масштабного коэффициента, или с группой чисел с плавающей запятой (+0.1, -0.5, +0.6) для согласования точки в 3D пространстве. В последнем случае для определения положения точки требуются все три элемента данных.

Тензор — описывает взаимосвязь между математическими объектами, которые связаны между собой.

Обычно они изображаются в виде массива чисел, где размер массива можно рассмотреть, как показано ниже.

Самый простой тип тензора, который вы можете получить, будет иметь нулевое измерение и состоять из одного значения — другое название для этого — скалярная величина. По мере того, как мы начинаем увеличивать количество измерений, мы можем столкнуться с другими распространенными математическими структурами:

1 измерение = вектор

2 измерения = матрица

Строго говоря, скаляр — это тензор 0 x 0, вектор — 1 x 0, а матрица — 1 x 1, но ради упрощения и понимания того, как это относится к тензорным ядрам в графическом процессоре, мы будем иметь дело только с тензорами в виде матриц.

Одной из важнейших математических операций, выполняемых с матрицами, является умножение. Рассмотрим, как две матрицы, обе с 4 строками и столбцами значений, умножаются вместе:

Окончательный результат умножения – такое же количество рядов как в первой матрице, такое же количество столбцов как во второй матрице. Так как же умножить эти два массива? Вот так:

Как видите, «простой» матричный расчет состоит из целой группы маленьких умножений и дополнений. Поскольку каждый процессор на рынке сегодня может выполнять обе эти операции, это означает, что любой настольный компьютер, ноутбук или планшет может работать с базовыми тензорами.

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

Архитектура процессора Intel Sandy Bridge — первая, предложившая AVX расширения.

Процессоры AMD и Intel на протяжении многих лет предлагали различные расширения (MMX, SSE, теперь AVX — все они SIMD [single instruction multiple data]), что позволяет процессору обрабатывать множество чисел с плавающей точкой в одно и то же время; именно то, что нужно умножению матриц.

Но существует особый тип процессора, специально разработанный для работы с SIMD: графические процессоры (GPU).

В мире графики огромное количество данных необходимо перемещать и обрабатывать в виде векторов одновременно. Возможности параллельной обработки данных GPU делают их идеальными для работы с тензорами, и все они сегодня поддерживают нечто под названием GEMM (General Matrix Multiplication).

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

Требования к строкам и столбцам для GEMM: матрица A(m x k), матрица B(k x n), матрица C(m x n)

Алгоритмы, используемые для выполнения матричных операций, как правило, лучше всего работают, когда матрицы квадратные (например, использование массивов 10 x 10 будет работать лучше, чем 50 x 2) и достаточно маленькие по размеру. Но они все равно лучше работают, когда обрабатываются на аппаратном обеспечении, предназначенном исключительно для этих операций.

В декабре 2017 года Nvidia выпустила видеокарту с графическим процессором новой архитектуры под названием Volta. Она была нацелена на профессиональный рынок, поэтому ни одна модель GeForce никогда не использовала этот чип. Особенностью было то, что это был первый графический процессор, в котором были ядра только для тензорных вычислений.

Видеокарта Nvidia Titan V с чипом GV100 Volta. Да, она потянет Crysis.

Тензорные ядра Nvidia были спроектированы так, чтобы нести 64 GEMM за тактовый цикл на 4 x 4 матрицах, содержащих значения FP16 (числа с плавающей точкой размером 16 бит) или умножение FP16 с добавлением FP32. Такие тензоры очень малы по размеру, поэтому при работе с большими наборами данных, ядра будут пропускать через себя небольшие блоки больших матриц, формируя окончательный ответ.

Менее чем через год Nvidia запустила архитектуру Turing. На этот раз в моделях GeForce потребительского класса также использовались тензорные ядра. Система была обновлена для поддержки других форматов данных, таких как INT8 (8-битные целочисленные значения), но в остальном они работали точно так же, как и в Volta.

Тензорная версия Nvidia «Where’s Waldo?»

В начале этого года архитектура Ampere дебютировала в графическом процессоре A100 для дата центров, и на этот раз Nvidia повысила производительность (256 GEMM за цикл, с 64), добавила дополнительные форматы данных, а также возможность очень быстро обрабатывать разреженные тензоры (матрицы с большим количеством нулей в них).

Для программистов доступ к тензорным ядрам в любой из микросхем Volta, Turing или Ampere прост: код просто должен использовать некий флаг, чтобы сообщить API и драйверам, что вы хотите использовать тензорные ядра, тип данных должен быть один, поддерживаемый ядрами, а размеры матриц должны быть кратны 8. После этого, процессор обработает все что нужно.

Все это хорошо, но насколько лучше тензорные ядра при работе с GEMM, чем обычные ядра в GPU?

Когда Volt только появилась, Anandtech провела несколько математических тестов, используя три карты Nvidia: новую Volta, топовую карту на базе Pascal и старую Maxwell.

Термин «точность» относится к числу битов, используемых для чисел с плавающей точкой в матрицах, при этом двойная равна 64, одна — 32 и так далее. Горизонтальная ось относится к пиковому числу операций FP, выполняемых в секунду, или FLOPов для коротких (помните, что один GEMM — это 3 FLOPа).

Просто посмотрите, какой был результат при использовании тензорных ядер вместо стандартных, так называемых CUDA-ядер! Очевидно, что они фантастически справляются с такой работой, но что мы можем делать с ними?

FLOPS (также flops, flop/s, флопс или флоп/с; акроним от англ. FLoating-point Operations Per Second, произносится как флопс) — внесистемная единица, используемая для измерения производительности компьютеров, показывающая, сколько операций с плавающей запятой в секунду выполняет данная вычислительная система.

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

Другая область, которая любит использовать тензоры, это машинное обучение, особенно глубокое обучение (deep learning). Все это связано с обработкой огромных массивов данных, называемых нейронными сетями. Соединениям между различными значениями данных присваивается определенная масса (weight) — число, которое выражает, насколько важно это соединение.

Поэтому, когда вам нужно разобраться, как взаимодействуют все сотни, если не тысячи подключений, вам нужно умножить каждый кусочек данных в сети на все различные массы (weight) подключений. Другими словами, умножить две матрицы вместе: классическая тензорная математика!

Чипы Google TPU 3.0, спрятанные под водяным охлаждением

Именно поэтому все большие суперкомпьютеры для глубокого обучения оснащены графическими процессорами и почти всегда это Nvidia. Однако некоторые компании зашли так далеко, что сделали свои собственные процессоры с тензорными ядрами. Компания Google, например, объявила о выпуске своего первого TPU (tensor processing unit) в 2016 году, но эти чипы настолько специализированы, что они не могут делать ничего, кроме операций с матрицами.

Но что, если у вас есть видеокарта Nvidia GeForce RTX и вы не астрофизик, решающий проблемы с римановыми многообразиями, и не экспериментирующий с глубинами конволюционных нейронных сетей. Какая польза от тензорных ядер для вас?

По большей части они не используются для нормального рендеринга, кодирования или декодирования видео, что может показаться, будто вы зря потратили деньги на бесполезную функцию. Однако в 2018 году Nvidia внедрила тензорные ядра в свои потребительские продукты (Turing GeForce RTX), а также внедрила DLSS — Deep Learning Super Sampling.

Основная мысль проста: рендер кадра в низком разрешении, а после, увеличьте разрешение конечного результата так, чтобы оно совпадало с натуральными размерами экрана монитора (например, рендер при 1080p, затем измените его размер до 1400p). Таким образом, вы получите преимущество в производительности, обрабатывая меньше пикселей, но при этом получите красивое изображение на экране.

Консоли делают что-то подобное уже много лет, и многие современные компьютерные игры тоже предлагают такую возможность. В Ubisoft’s Assassin’s Creed: Odyssey, вы можете изменить разрешение рендеринга до 50% от разрешения монитора. К сожалению, результат выглядит не так уж и хорошо. Вот как выглядит игра на 4K, с максимальными настройками графики:

Благодаря высокому разрешению текстуры выглядят намного лучше, так как сохраняют мелкие детали. К сожалению, все эти пиксели требуют большой обработки. Теперь посмотрите, что происходит, когда игра настроена на рендеринг в 1080p (на 25% больше пикселей, чем раньше), но затем используйте шейдеры в конце, чтобы расширить ее обратно до 4K.

Разница может быть не сразу очевидна, спасибо jpeg-сжатию и перемасштабированию изображений, но доспехи персонажа и каменные образования несколько размыты. Давайте увеличим масштаб для более детального изучения:

Левая часть была отрисована в 4К; правая — в 1080p, увеличенная до 4К. Разница гораздо более выражена, когда речь идет о движении, так как размягчение (softening) всех деталей быстро превращается в размытую кашу. Некоторую часть можно было бы вернуть назад, используя усиление резкости в драйверах видеокарты, но лучше вообще этого не делать.

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

Надо сказать, что DLSS 1.0 был не очень хорош, в некоторых местах детали часто терялись или странно мерцали. В ней также не использовались тензорные ядра в видеокарте (это было сделано в сети Nvidia), и каждая игра, поддерживающая DLSS, требовала собственного изучения Nvidia для генерации алгоритма масштабирования.

Когда в начале 2020 года вышла версия 2.0, были сделаны некоторые значительные улучшения. Наиболее примечательным из них было то, что суперкомпьютеры Nvidia использовались только для создания общего алгоритма масштабирования — в новой итерации DLSS данные из отрисовываемого кадра будут использоваться для обработки пикселей (через тензорные ядра вашего GPU) с помощью нейронной модели.

Мы остаемся под впечатлением от того, чего может достичь DLSS 2.0, но пока ее поддерживают очень немногие игры — всего 12, на момент написания статьи. Тем не менее, все больше разработчиков хотят реализовать ее в своих будущих релизах, и на то есть веские причины.

Есть большой прирост производительности, который можно найти, делая любой вид масштабирования (upscaling), так что вы можете поставить свой последний рубль на то, что DLSS будет продолжать развиваться.

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

В качестве примера можно привести то, что DLSS часто продвигается наряду с трассировкой лучей в «играх с поддержкой RTX». Графические процессоры GeForce RTX включают в себя дополнительные вычислительные модули, называемые RT ядрами: выделенные логические модули для ускорения пересечения лучей с треугольниками и вычислений обхода иерархии ограниченных объемов (bounding volume hierarchy) (BVH). Эти два процесса представляют собой трудоемкие процедуры для разработки того, где свет взаимодействует с остальными объектами в сцене.

Как мы выяснили, трассировка лучей является супер интенсивной, поэтому, чтобы обеспечить игровое исполнение, разработчики игры должны ограничить количество выполняемых в сцене лучей и отскоков. Этот процесс может привести к появлению зернистых изображений, поэтому необходимо применять алгоритм размывания, добавляющий сложность обработки. Ожидается, что тензорные ядра будут способствовать повышению производительности при использовании шумоподавления на основе AI, хотя это еще не появилось в большинстве современных приложений, все еще использующих ядра CUDA для выполнения этой задачи. Положительным моментом является то, что DLSS 2.0 становится эффективной техникой масштабирования, поэтому тензорные ядра могут быть эффективно использованы для повышения частоты кадров после применения трассировки лучей на сцене.

Существуют и другие планы по использованию тензорных ядер в картах GeForce RTX, например, лучшая анимация персонажей или симуляция ткани. Но, как и в случае с DLSS 1.0, пройдет некоторое время, прежде чем сотни игр будут регулярно использовать специализированные матричные калькуляторы в GPU.

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

Хотя AMD и Intel не имеют их в своих GPU, мы можем увидеть нечто подобное в будущем. AMD действительно предлагает систему для улучшения деталей в готовых кадрах при минимальных затратах на производительность, так что они вполне могут просто придерживаться этого — тем более, что разработчикам не нужно интегрировать ее; это просто функция в драйверах.

Есть также аргумент, что место в графических чипах можно было бы использовать, чтобы просто добавить больше шейдерных ядер, что Nvidia и сделала, когда собрала бюджетные версии своих чипов Turing. Такие, как GeForce GTX 1650 вообще отказались от тензорных ядер и заменили их дополнительными шейдерами FP16.

Но пока, если вы хотите испытать супербыструю пропускную способность GEMM и все преимущества, которые это может дать, у вас есть два варианта: купить себе кучу огромных многоядерных CPU или всего один GPU с тензорными ядрами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *