МЛ и ДЛ, например. В 3090 всего лишь 24 гига видеопамяти, что не особо дофига для особо жирных моделей, а в M1 Ultra — до 128 гигов Unified Memory. Те же трансформеры ооооочень много памяти кушают, а такая машинка как Mac Pro за всего то 8к долларов это буквально подарок — аналог от нвидии будет стоить сильно дороже и доступен обычным смертным не будет.
Не стоит множить сущности без необходимости. Но раз нет, так нет.
Так это проблема русской версии, не?
Да не то чтобы это была проблема вообще, имхо. В русской версии он говорит "Хош стих?" и это довольно хорошо подходит под чутка быдловатую личность Геральта.
Я в очередной раз поражаюсь фантастической самоуверенности и абсолютной необразованности пользователей дтфа.
Когда мы переносим данные с хоста на девайс, оно идёт сначала в вышеупомянутый буфер, а только потом уже распределяется туда, куда надо — в регистры, в глобальную память, в shared memory всех ALU блока, в текстурную память, etc.
По крайней мере, так было год назад, когда я работал с вычислениями на CUDA и пытался разобраться в Vulkan. Мб сейчас что-то поменялось, если так, то просвети, умник, блядь.
Раньше надо было расставить источники света, расставить предметы, которые светят, показать, какие предметы отбрасывают тени, а какие не отбрасывают, Global Illumination, Baked In Lightning, нарисовать кубмапы для отражений...
Господи, бред какой. Наоборот, консоли помогают прогрессу — какой смысл придумывать хитрые упрощения типа checkerboard rendering с четвёртой плойки и новые трюки для снижения потребления ресурсов, если бы всё можно было решить, просто подняв системные требования?
Передача данных в видеопамять всегда была через буфер объёмом 256 мб. Сейчас придумали Resizable BAR, который мало где работает, но всё равно, передача данных в видеопамять — это очень медленный процесс. Настолько, что в некоторых случаях считать на CPU быстрее — настолько медленное аллоцирование памяти.
Я математик по профессии, работаю в сфере. Так что *кое-что* о нейросетях я знаю :)
Принцип работы нейросети доподлинно никому не будет известен ровно до тех пор пока Nvidia не откроет исходные коды DLSS, чего она никогда, разумеется, не сделает. Но у меня есть несколько вариантов того, как всё внутри может быть устроено.
Самым очевидным было бы предположить, что архитектурой нейронной сети, лежащей в основе DLSS была бы генеративно-состязательная сеть, т.н. GAN. В основе сети лежат два модуля — так называемый генератор и так называемый дискриминатор. Генератор генерирует вывод по некоторым входным данным (в нашем случае, входными данными будут motion-вектора, картинка в более низком разрешении, возможно, какая-то ещё информация от движка игры, например, локация или ещё что-то), а дискриминатор осуществляет "контроль качества" — ему подаются картинки и он пытается понять, поданная ему картинка была сгенерирована или была взята из датасета с эталонами. Таким образом, наша сеть как бы сама себя обучает. Результат — генератор генерирует фотореалистичные картинки (thispersondoesnotexist.com), достойно звучащую музыку (https://www.thismusicvideodoesnotexist.com/) или как раз апскейл некоторого изображения.
В последнее время появилось много версий модификации этой архитектуры, например, ESRGAN вовсю используется для того, чтобы апскейлить текстуры для игр (особенно хорошо получилось с текстурами Thief 2), так что возможно, в основе DLSS лежит одна из модификаций такой нейросети.
Возможно, кстати, некоторые ранние версии DLSS использовали именно такой подход, но с выходом DLSS 2.0 были новости о том, что необходимость обучать DLSS для каждой конкретной игры отпала. В случае GAN мы должны чётко понимать, какой датасет мы будем скармливать нейросети для обучения дискриминатора и генератора (датасет с реалистичными изображениями будет работать хуже для игр вроде Sea of Thieves, датасет с мультяшными будет работать хуже для игр вроде Call of Duty: Warzone), так что мне кажется, что подход используется всё же другой.
Другим вариантом, уже заточенным конкретно под апскейл видео, является FR VSR. (https://arxiv.org/pdf/1801.04590.pdf). Смысл подхода заключается в ансамбле из двух сетей — одна сеть вычисляет так называемый оптический поток (изменение между двумя изображениями) между апскейлнутым изображением и следующим после него изображением, вторая на основе оптического потока, предыдущего изображения, информации о краях на картинке и прочего уже производит апскейл.
В случае DLSS у нас есть очень много информации, которую мы можем использовать для апскейла. Во-первых, мы имеем motion-вектора, то есть вычислить оптический поток мы можем гораздо точнее, чем с помощью state-of-the-art классических или нейросетевых методов. Во-вторых, у нас есть датасет от самой Nvidia с рендерами кадров игр, поддерживающих DLSS, прямо в драйверах видеокарты — об этом неоднократно писали в новостях. Это поможет нам восстановить больше информации и получить апскейл гораздо более высокого качества.
Кроме того, мы можем использовать даже большее количество кадров — 3, 4 — для увеличения количества информации, которую мы восстанавливаем. Но это будет сильно бить как по памяти, так и по производительности, так что такой подход не обязательно будет оправдан.
По поводу применения к рендеру — мы можем применить эту нейросеть для апскейла рендера до добавления постобработки, как и ранее. Если мы добавим, например, шум и потот произведём апскейл, то мы будем апскейлить в том числе и артефакты, что не есть хорошо. Ну и кроме того, шум добавить очень просто и сравнительно дёшево, так что почему бы его не добавить после апскейла.
DLSS не использует сглаживание в привычном нам смысле. Внутри работает нейронная сеть, которая по нескольким кадрам и motion-векторам может "предсказать" субпиксельную информацию. Таким образом, оно производит не только апскейл, но ещё и сглаживает картинку - ведь сглаживание - это и есть восстановление субпиксельной информации.
FSR в свою очередь использует CAS, Contrasе Adaptive Sharpening, для того, чтобы восстановить детали в текстурах. Этот подход тоже неплох, судя по результатам из демки, ссылку на которую вы можете найти в моём комментарии выше, но он не способен достать из кадра ту информацию, которой там, очевидно, нет. Поэтому FSR *никогда* не сможет сравниться по качеству с DLSS.
Ну и насчёт неотрубаемого сглаживания: как я и написал в том комментарии, сглаживание неотрубаемо как раз в FSR. Так что весь этот комментарий не имеет вообще никакого смысла.
В очередной раз убеждаюсь, что аудитория DTF неспособна разобраться в вопросе, прежде чем броситься в привычной агрессивной манере спорить в комментариях.
Отличный анализ, но, к сожалению, полностью неправильный.
Дело в том, что AMD FSR апскейлит уже сглаженную с помощью TAA картинку. Оно использует модификацию фильтра Ланцоша (https://en.wikipedia.org/wiki/Lanczos_resampling), который позволяет сделать ресемплингом изображения. Если не применить какой нибудь тип сглаживания, то лесенки тоже будут апскейлиться и картинка будет хоть и в высоком разрешении, но всё ещё с лесенками.
Сравнивать FSR и DLSS вообще бессмысленно. FSR использует классические алгоритмы (фильтр Ланцоша для обработки одномерных сигналов был изобретён ещё в 1970-х, кажется, а двухмерная генерализация для обработки картинок довольно тривиально выводится из одномерной), DLSS - нейронные сети. FSR использует только один кадр, оставляя сглаживание на откуп TAA, DLSS - несколько. FSR умещается в простой шейдер для постобработки, который просто надо применить в пайплайне, DLSS использует комплексный подход, использует motion-векторы и требует интеграции в каждую конкретную игру.
И, наконец, хотелось бы сказать, что оно даже в FHD на значении качества Ultra Quality даёт очень приличные результаты с огромным приростом производительности. На встроенной в мой ноутбук видеокарте я получил прирост в 20 кадров на сцене в ангаре из демки на сайте разработчиков, на внешней GTX 1050 прирост составил почти 80 кадров. Я считаю, это успех.
Если интересно, можешь проверить сам. Скачай вот тут вот демку, подёргай за слайдеры и посмотри что из этого получится.
ML, DL. Machine Learning, Deep Learning.
МЛ и ДЛ, например. В 3090 всего лишь 24 гига видеопамяти, что не особо дофига для особо жирных моделей, а в M1 Ultra — до 128 гигов Unified Memory. Те же трансформеры ооооочень много памяти кушают, а такая машинка как Mac Pro за всего то 8к долларов это буквально подарок — аналог от нвидии будет стоить сильно дороже и доступен обычным смертным не будет.
Ну я прост не знал, потому и предположил :D
Совершенно точно нет.
Не стоит множить сущности без необходимости. Но раз нет, так нет.
Так это проблема русской версии, не?
Да не то чтобы это была проблема вообще, имхо. В русской версии он говорит "Хош стих?" и это довольно хорошо подходит под чутка быдловатую личность Геральта.
Ну, слушай, Геральт же не Лютик, я вообще сомневаюсь, что он знает что такое лимерик. Так что тут просто для красивого словца сказано.
И потом, в русской версии же всё равно не было сказано слово "Лимерик".
Оригинал тут и правда смешнее, субверсия, хуё-моё.
Хороший прокат
...
Я в очередной раз поражаюсь фантастической самоуверенности и абсолютной необразованности пользователей дтфа.
Когда мы переносим данные с хоста на девайс, оно идёт сначала в вышеупомянутый буфер, а только потом уже распределяется туда, куда надо — в регистры, в глобальную память, в shared memory всех ALU блока, в текстурную память, etc.
По крайней мере, так было год назад, когда я работал с вычислениями на CUDA и пытался разобраться в Vulkan. Мб сейчас что-то поменялось, если так, то просвети, умник, блядь.
Раньше надо было расставить источники света, расставить предметы, которые светят, показать, какие предметы отбрасывают тени, а какие не отбрасывают, Global Illumination, Baked In Lightning, нарисовать кубмапы для отражений...
Ну да. Вулкан вот свободный, OpenGL свободный. А у DirectX половина рантайма несвободна.
Проприетарное? Проприетарное. Опирается на проприетарное железо? Опирается.
Ну и потом, если делать игру, опираясь только на рт, то количество работы художников уменьшится вчетверо.
Господи, бред какой. Наоборот, консоли помогают прогрессу — какой смысл придумывать хитрые упрощения типа checkerboard rendering с четвёртой плойки и новые трюки для снижения потребления ресурсов, если бы всё можно было решить, просто подняв системные требования?
Ладно. Рейтрейсинг.
Та ни.
Передача данных в видеопамять всегда была через буфер объёмом 256 мб. Сейчас придумали Resizable BAR, который мало где работает, но всё равно, передача данных в видеопамять — это очень медленный процесс. Настолько, что в некоторых случаях считать на CPU быстрее — настолько медленное аллоцирование памяти.
Cuda — проприетарная технология, которой нет на половине консьюмерских гпу. И всё равно выпускали ролики с PhysX, на которые я облизывался.
CUDA — стандарт в обучении нейросетей. Видеокарты от AMD там тупо никому не нужны. Just sayin'.
Я математик по профессии, работаю в сфере. Так что *кое-что* о нейросетях я знаю :)
Принцип работы нейросети доподлинно никому не будет известен ровно до тех пор пока Nvidia не откроет исходные коды DLSS, чего она никогда, разумеется, не сделает. Но у меня есть несколько вариантов того, как всё внутри может быть устроено.
Самым очевидным было бы предположить, что архитектурой нейронной сети, лежащей в основе DLSS была бы генеративно-состязательная сеть, т.н. GAN. В основе сети лежат два модуля — так называемый генератор и так называемый дискриминатор. Генератор генерирует вывод по некоторым входным данным (в нашем случае, входными данными будут motion-вектора, картинка в более низком разрешении, возможно, какая-то ещё информация от движка игры, например, локация или ещё что-то), а дискриминатор осуществляет "контроль качества" — ему подаются картинки и он пытается понять, поданная ему картинка была сгенерирована или была взята из датасета с эталонами. Таким образом, наша сеть как бы сама себя обучает. Результат — генератор генерирует фотореалистичные картинки (thispersondoesnotexist.com), достойно звучащую музыку (https://www.thismusicvideodoesnotexist.com/) или как раз апскейл некоторого изображения.
В последнее время появилось много версий модификации этой архитектуры, например, ESRGAN вовсю используется для того, чтобы апскейлить текстуры для игр (особенно хорошо получилось с текстурами Thief 2), так что возможно, в основе DLSS лежит одна из модификаций такой нейросети.
Возможно, кстати, некоторые ранние версии DLSS использовали именно такой подход, но с выходом DLSS 2.0 были новости о том, что необходимость обучать DLSS для каждой конкретной игры отпала. В случае GAN мы должны чётко понимать, какой датасет мы будем скармливать нейросети для обучения дискриминатора и генератора (датасет с реалистичными изображениями будет работать хуже для игр вроде Sea of Thieves, датасет с мультяшными будет работать хуже для игр вроде Call of Duty: Warzone), так что мне кажется, что подход используется всё же другой.
Другим вариантом, уже заточенным конкретно под апскейл видео, является FR VSR. (https://arxiv.org/pdf/1801.04590.pdf). Смысл подхода заключается в ансамбле из двух сетей — одна сеть вычисляет так называемый оптический поток (изменение между двумя изображениями) между апскейлнутым изображением и следующим после него изображением, вторая на основе оптического потока, предыдущего изображения, информации о краях на картинке и прочего уже производит апскейл.
В случае DLSS у нас есть очень много информации, которую мы можем использовать для апскейла. Во-первых, мы имеем motion-вектора, то есть вычислить оптический поток мы можем гораздо точнее, чем с помощью state-of-the-art классических или нейросетевых методов. Во-вторых, у нас есть датасет от самой Nvidia с рендерами кадров игр, поддерживающих DLSS, прямо в драйверах видеокарты — об этом неоднократно писали в новостях. Это поможет нам восстановить больше информации и получить апскейл гораздо более высокого качества.
Кроме того, мы можем использовать даже большее количество кадров — 3, 4 — для увеличения количества информации, которую мы восстанавливаем. Но это будет сильно бить как по памяти, так и по производительности, так что такой подход не обязательно будет оправдан.
По поводу применения к рендеру — мы можем применить эту нейросеть для апскейла рендера до добавления постобработки, как и ранее. Если мы добавим, например, шум и потот произведём апскейл, то мы будем апскейлить в том числе и артефакты, что не есть хорошо. Ну и кроме того, шум добавить очень просто и сравнительно дёшево, так что почему бы его не добавить после апскейла.
DLSS не использует сглаживание в привычном нам смысле. Внутри работает нейронная сеть, которая по нескольким кадрам и motion-векторам может "предсказать" субпиксельную информацию. Таким образом, оно производит не только апскейл, но ещё и сглаживает картинку - ведь сглаживание - это и есть восстановление субпиксельной информации.
FSR в свою очередь использует CAS, Contrasе Adaptive Sharpening, для того, чтобы восстановить детали в текстурах. Этот подход тоже неплох, судя по результатам из демки, ссылку на которую вы можете найти в моём комментарии выше, но он не способен достать из кадра ту информацию, которой там, очевидно, нет. Поэтому FSR *никогда* не сможет сравниться по качеству с DLSS.
Ну и насчёт неотрубаемого сглаживания: как я и написал в том комментарии, сглаживание неотрубаемо как раз в FSR. Так что весь этот комментарий не имеет вообще никакого смысла.
В очередной раз убеждаюсь, что аудитория DTF неспособна разобраться в вопросе, прежде чем броситься в привычной агрессивной манере спорить в комментариях.
Отличный анализ, но, к сожалению, полностью неправильный.
Дело в том, что AMD FSR апскейлит уже сглаженную с помощью TAA картинку. Оно использует модификацию фильтра Ланцоша (https://en.wikipedia.org/wiki/Lanczos_resampling), который позволяет сделать ресемплингом изображения. Если не применить какой нибудь тип сглаживания, то лесенки тоже будут апскейлиться и картинка будет хоть и в высоком разрешении, но всё ещё с лесенками.
Таким образом, пайплайн такой:
Рендер картинки -> TAA -> FSR -> Пост-обработка (шум, виньетка, прочее) -> Интерфейс
Сравнивать FSR и DLSS вообще бессмысленно. FSR использует классические алгоритмы (фильтр Ланцоша для обработки одномерных сигналов был изобретён ещё в 1970-х, кажется, а двухмерная генерализация для обработки картинок довольно тривиально выводится из одномерной), DLSS - нейронные сети. FSR использует только один кадр, оставляя сглаживание на откуп TAA, DLSS - несколько. FSR умещается в простой шейдер для постобработки, который просто надо применить в пайплайне, DLSS использует комплексный подход, использует motion-векторы и требует интеграции в каждую конкретную игру.
И, наконец, хотелось бы сказать, что оно даже в FHD на значении качества Ultra Quality даёт очень приличные результаты с огромным приростом производительности. На встроенной в мой ноутбук видеокарте я получил прирост в 20 кадров на сцене в ангаре из демки на сайте разработчиков, на внешней GTX 1050 прирост составил почти 80 кадров. Я считаю, это успех.
Если интересно, можешь проверить сам. Скачай вот тут вот демку, подёргай за слайдеры и посмотри что из этого получится.
https://gpuopen.com/fsr-announce/
Аудитория ДТФ снова показала, что не очень понимает, зачем нужны видеокарты.
Это безумно дёшево. Сбербанковский кристофари стоит 5750 рублей в минуту, а тут — всего 156 рублей.
Для компаний, которым срочно надо что-то посчитать, это очень выгодное вложение средств.