Seite 7: Ядра Tensor: подавление шума и DLSS

Для поддержки трассировки лучей и других функций в архитектуру Turing перешли ядра Tensor, знакомые по архитектуре Volta. В архитектуре Volta ядра Tensor ускоряли работу с сетями глубокого обучения. То же самое верно и для архитектуры Turing, но не только. Но сначала позвольте рассказать о ядрах Tensor и пояснить их принцип работы.

Ядра Tensor разрабатывались для выполнения матричного умножения. Напомним, что матричное умножение (BLAS GEMM) является весьма важным компонентом тренировки и инференса сетей глубокого обучения. Матричные операции подразумевают выборку значений матриц A и B (выполнение сложения и умножения), после чего результат будет записываться в матрицу C. Для матриц 4x4 данные операции выполняются для всех 16 полей. В архитектуре Pascal для выполнения упомянутых операций использовались блоки FP32. Отличия по выполнению показаны на следующем видеоролике.

В случае архитектуры Volta ядра Tensor ориентированы на тренировку сетей глубокого обучения и инференс, поэтому они могут выполнять вычисления FP16 и FP32. Что касается архитектуры Turing, то здесь фокус уже на инференсе, поэтому ядра Tensor также оптимизированы под операции FP16, INT8 и INT4.

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

NVIDIA в максимальном варианте GPU TU102 указывает 576 ядер Tensor, но у GeForce RTX 2080 мы получаем только 544 ядра Tensor. NVIDIA указывает вычислительную производительность 110 TFLOPS FP16 для игр и обработки изображений. Что касается вычислений INT8, соответствующая производительность составляет 220 TOPS, для вычислений INT4, применение которым пока не найдено, мы получаем 440 TOPS.

Для чего NVIDIA использует ядра Tensor?

На данный момент ядра Tensor в архитектуре Turing используются NVIDIA для двух целей: подавление шумов и новый режим суперсемплинга под названием Deep Learning Super Sampling (DLSS).

Подавление шумов - неизбежная задача при выполнении трассировки лучей. Несмотря на все аппаратные ресурсы, которые выполняют трассировку, полностью рассчитать 3D-сцену методом трассировки лучей не представляется возможным. Поэтому речь пока идет только о частичной трассировке лучей. Что же тогда делать с областями, которые не будут рассчитаны с помощью трассировки лучей?

В таких случаях на помощь приходит шумоподавление. Оно необходимо для областей, которые не полностью охвачены трассировкой лучей, и с помощью шумоподавления к ним добавляется отсутствующая информация. За добавление информации отвечает натренированная сеть глубокого обучения. Как раз запросы в эту сеть (инференс) готовят ядра Tensor.

Для подавления шумов NVIDIA пришлось разработать новую систему, а именно Neural Graphics Framework (NGX), за взаимодействие с которой и отвечают ядра Tensor. Сеть NGX может использоваться не только для подавления шумов, но и для других сфер. Например, она может отвечать за искусственный интеллект в играх, а также распознавать читы геймера. Или озвучивать NPC. Пока что сфера Neural Graphics останется наиболее важным сценарием данной сети.

Deep Learning Super Sampling (DLSS)

Почти во всех играх полученный в процессе рендеринга кадр выводится не сразу, а проходит через ряд этапов пост-обработки, например, через временное сглаживание Temporal Anti-Aliasing (TAA). Данный алгоритм опирается на потоковые процессоры и сравнивает два последовательных кадра, используя векторы движения. TAA не всегда работает идеально, приводя к появлению артефактов. Без TAA этих артефактов не было, но в таком случае пришлось бы играть без сглаживания. Здесь как раз на помощь приходит Deep Learning Super Sampling.

Вскоре после представления линейки GeForce RTX 20, NVIDIA раскрыла дополнительную информацию о технологии Deep Learning Super Sampling. Чтобы протестировать DLSS, NVIDIA провела тренировку сети глубокого обучения на собственном суперкомпьютере SATURN V. Движок Temporal Stable Convolutional Autoencoder выполняет 500 млрд. операций FP16 в секунду, он создает 64 семпла для идеального сглаживания картинки. Каждый семпл был рассчитан по алгоритму суперсемплинга 64x (64xAA). То есть вместо обработки каждого пикселя на потоковом процессоре один раз, приходилось выполнять операцию 64 раза, каждую с небольшим смещением. Все это требует приличных вычислительных ресурсов, поэтому и использовался SATURN V.

Затем эти идеальные результаты в определенном виде передаются системе с видеокартой GeForce RTX. Кадры видеокарты сравнивается с идеальными образцами, за инференс как раз отвечают ядра Tensor видеокарты Turing. В будущем поддержку DLSS планируется расширить до DLSS 2X с дополнительными улучшениями.

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

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

Если верить NVIDIA, отличий между 64x Super Sampling и DLSS 2x по качеству картинки нет. Качество картинки DLSS 2x значительно лучше TAA. На мероприятии NVIDIA мы провели прямое сравнение и не обнаружили визуальных отличий.

Что касается производительности, NVIDIA указывает на двукратный прирост, сравнивая GeForce GTX 1080 Ti с TAA и GeForce RTX 2080 Ti с DLSS. Впрочем, GeForce RTX 2080 Ti с TAA тоже дает прирост производительности около 50%. Так что на самом деле преимущество DLSS по сравнению с TAA несколько ниже.

NVIDIA предлагает еще несколько скриншотов, которые позволяют сравнить качество картинки.

DLSS первое время будет поддерживаться следующими играми:

  • Ark: Survival Evolved
  • Atomic Heart
  • Dauntless
  • Final Fantasy XV
  • Fractured Lands
  • Hitman 2
  • Islands of Nyne
  • Justice
  • JX3
  • Mechwarrior 5: Mercenaries
  • PlayerUnknown’s Battlegrounds
  • Remnant: From the Ashes 
  • Serious Sam 4: Planet Badass
  • Shadow of the Tomb Raider
  • The Forge Arena
  • We Happy Few

 

Но сеть NGX может использоваться и в других сценариях. Примером можно назвать AI Super Rez, когда картинка с низким разрешением будет выводиться в намного более высоком разрешении. Еще одна сфера применения - AI Slow-Mo. Сеть глубокого обучения будет преобразовывать видео с частотой кадров 30 fps в ролик Slow Motion на 240 FPS. Алгоритм сравнивает два последовательных кадра и рассчитывает движение объектов. Соответственно, через интерполяцию создаются промежуточные кадры. Не так давно мы как раз публиковали соответствующую новость.