Что такое тензорные ядра: расчеты с переменной точностью | ВесьТоп создание и продвижение сайтов

Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

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

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

Что такое тензорные ядра: расчеты с переменной точностью

Что такое тензорные ядра: расчеты с переменной точностью

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

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

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

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

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

Тензор — это математический объект, который описывает отношения между другими математическими объектами, которые каким-то образом связаны друг с другом. Обычно они представлены в виде массивов чисел разной размерности:

Что такое тензорные ядра: расчеты с переменной точностью

Простейший тензор имеет нулевую размерность (ранг 0) и состоит из одного элемента — скаляра.

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

Строго говоря, скаляр — это тензор 0x0, вектор — 1×0 и матрица — 1×1. Но в силу характера работы тензорных ядер GPU мы будем рассматривать только тензоры, которые имеют вид матриц. Отсюда и термин «тензорные ядра».

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

Что такое тензорные ядра: расчеты с переменной точностью

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

Что такое тензорные ядра: расчеты с переменной точностью

Это нельзя считать «на пальцах», потому что пальцы не дойдут до решения этой задачи.

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

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

Архитектура Intel Sandy Bridge, с которой появились расширенные инструкции AVX

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

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

Умнее обычного калькулятора?

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

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

Требования GEMM для строк и столбцов

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

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

Видеокарта Nvidia Titan V с графическим процессором GV100 Volta. Crysis можно запустить

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

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

Что такое тензорные ядра: расчеты с переменной точностью

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

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

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

Когда появилась архитектура Volta, веб-портал Anandtech протестировал три видеокарты Nvidia — с новой Volta, самой мощной из семейства Pascal, и старой картой Maxwell.

Что такое тензорные ядра: расчеты с переменной точностью

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

Вы только посмотрите на результаты использования тензорных ядер вместо стандартных процессорных ядер CUDA. Очевидно, они делают шокирующую работу, но что мы можем сделать с этими тензорными ядрами?

Математика, которая все улучшает

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

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

Что такое тензорные ядра: расчеты с переменной точностью

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

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

Некоторые компании создали собственные процессоры с тензорными ядрами. Google, например, в 2016 году обернул свой первый TPU (тензорный процессор) — специализированные чипы, которые не могут делать ничего, кроме математических операций с матрицами.

Тензорные ядра в потребительских GPU (GeForce RTX)

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

Что такое тензорные ядра: расчеты с переменной точностью

Принцип DLSS не кажется сложным: мы рендерим кадр в относительно низком разрешении, а затем увеличиваем его разрешение, чтобы оно точно соответствовало разрешению монитора — например, мы рендерим с разрешением 1080p, а затем масштабируем до 1400p. Это значительно увеличивает производительность, поскольку обрабатывается меньшее количество пикселей, а изображение на экране остается красивым.

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

Что такое тензорные ядра: расчеты с переменной точностью

В этих случаях при высоком разрешении текстуры выглядят красивее, потому что в них больше деталей. Но отображение этих пикселей на экране требует большой обработки. И вот что происходит, когда вы уменьшаете разрешение визуализированного кадра до 1080p (25% от предыдущего количества пикселей) и используете шейдеры для масштабирования до 4K:

Что такое тензорные ядра: расчеты с переменной точностью

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

Что такое тензорные ядра: расчеты с переменной точностью

Левый кадр рендерится в 4K, а правый — в 1080p и масштабируется до 4K. Однако есть отличия, которые намного лучше заметны в подвижных элементах рам.

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

Что такое тензорные ядра: расчеты с переменной точностью

DLSS 1.0 не был идеальным. Детали терялись, а кое-где было странное мерцание. Nvidia пришлось провести дополнительные исследования.

Что такое тензорные ядра: расчеты с переменной точностью

В начале 2020 года вышла версия 2.0, в которой были внесены серьезные улучшения. Здесь суперкомпьютеры компании используются только для создания общего алгоритма масштабирования. В новой версии DLSS для обработки кадров используются только тензорные ядра GPU и данные из уже отрендеренного кадра.

Что такое тензорные ядра: расчеты с переменной точностью

Возможности DLSS 2.0 впечатляют, но пока эта технология поддерживается очень немногими играми.

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

Что такое тензорные ядра: расчеты с переменной точностью

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

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

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

Читайте так же:
Not found

Нам доверяют

Интернет магазин