XAZAD

На Пикабу
поставил 161 плюс и 50 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
За семейные ценности 5 лет на Пикабу
3185 рейтинг 11 подписчиков 92 подписки 22 поста 2 в горячем

Немного про Machine Learning

Мне сильно надоела дичь, которая творится вокруг ML, потому сегодня я хотел бы поговорить о том что такое ML.


Итак:


Вики это определяет так :


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

Немного про Machine Learning Ex machina, Гнев, Длиннопост

Сегодня у меня нет настроения скандалить, но, блин, серьезно? Методы ИИ? Это что вообще такое? Расскажите мне хоть кто, может тоже применять начнем.


За последний год через меня пробежало довольно много соискателей на должность Data Scientist, каждый из них претендовал на знание ML и любил мне рассказывать про ИИ.


5 Минут в гугле и у нас в выборке основные ML алгоритмы:


1. Линейная регрессия

2. Метод ближайших соседей

3. Метод опорных векторов

4. Метод построения дерева

5. Нейронки


Скучно выглядит? Не так ли? )

Немного про Machine Learning Ex machina, Гнев, Длиннопост

Каждый из пунктов можно сильно расширить, можно найти частный подход. Это не меняет главного - в основе ML лежат стандартные алгоритмы вышмата из программы 4 курса института. Попытка рассказать про некий ИИ – не более чем манипуляция знаниями.


ну а теперь - мое ИМХО:


Что такое ML?


1. Алгоритм

2. Функция, которая проверяет алгоритм из п1.



Ну и для любителей ИИ – могу предложить один вид нейросеток – RL.. Обучение с подкреплением, если в 2 словах – это как с батей в 90ых,

не накосячил – все ровно;

накосячил – на ремня; 


Только тут наоборот - за "не накосячил" дают плюшки.


Но БЛИН какой нафиг ИИ? Серьезно?

Вы не поймите меня неправильно, ML применимы везде, этими алгоритмами можно предсказать когда иссякнет месторождение, когда выйдет из строя двигатель самолета, но никак не изобрести ИИ.

Показать полностью 1

Machine Learning vs GameDev

Ох блин не собирался же писать (не смотри мой предыдущий пост), но пиво сильнее меня.

Итак:


Machine Learning vs GameDev.


Для чего нужны видеокарты в целом и RTX в частности во всяких академиях наук?


Что у нас интересного произошло на рынке видеокарт?

Да нихрена, в 3х серии они просто допилили RTX, и поставили производство чипов на поток, чем наконец это дело удешевили.


Чем крут RTX? и почему карты 2х серии мне так зашли? Ну попробую рассказать.

Для современного компа не является проблемкой обсчитать пару миллионов точек, накатить на них текстурки и назвать это игрой. Красиво? Да! Продается? Еще как!! Теперь это будет называться видяхой!! Получите!!!!

Machine Learning vs GameDev Видеокарта, Мнение, Длиннопост

Но хочется же большего….

(Кто-то скажет - включи режим сглаживания, ну окей, там же стандартные режимы аппроксимации…. скучно….)


Я_ХОЧУ_СЧИТАТЬ!

Во много потоков и без затрат CPU.

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


Опять растекся мыслью по древу……


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

Если вы без травы – вот схема:

Machine Learning vs GameDev Видеокарта, Мнение, Длиннопост

И вот тут встает вопрос: Столько мощи и в холостую?

Гребаные 3к потоков параллельных вычислений только для того чтобы ты посмотрел как клёво выглядит Сэм Бриджес в 4к? (ну простите меня, это не реклама, я не так часто во что-то играю, но завис на DS)

Machine Learning vs GameDev Видеокарта, Мнение, Длиннопост

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

Machine Learning vs GameDev Видеокарта, Мнение, Длиннопост

Ну и просто красивая картинка, CIA

Показать полностью 4

Когда бывшая все-таки лайкнула твою свадебную фотку

Когда бывшая все-таки лайкнула твою свадебную фотку

Machine learning vs GameDev

Блин вот меня всегда все упрекают что как все не связно и смешано, согласен, но есть столько вещей, о которых хочется рассказать…

Пишешь изначально об одном, а мысль то утекла.. уже и о другом пишешь ))

Machine learning vs GameDev Gamedev, IT, Длиннопост

Прошу за это прощения, как уже ранее писал, чукча учится, вам не повезло, выбрал вас в качестве аудитории.


Хотелось бы мне сказать что в прошлый раз мы остановились на чем то конкретном, но меня как всегда снесло куда то в туман, потому пусть оно катится как катится :D

Machine learning vs GameDev Gamedev, IT, Длиннопост

Итак: Machine learning vs GameDev


В прошлый раз мы поговорили о том, как можно задействовать неиспользуемые ресурсы видеокарты. Не одного же меня бесит что она загружена процентов на 70, и сидит думает что так и надо?

После того как мы крайне сумбурно разобрались в том, что же такое CUDA, я хотел бы вам привести какие-то банальные примеры адресации по потокам, да-да с теми самыми разноцветными словечками на темном фоне… но фиг вам, кому интересно – гуглите «python numpy сuda», там довольно низкий порог вхождения.

Machine learning vs GameDev Gamedev, IT, Длиннопост

Ну а так как не получится, то продолжим о теории. В предыдущем посте был вопрос: "а зачем же ты ценный ресурс тратишь на обсчет листиков". Давайте подумаем почему в ряде случаев выгоднее потратиться не только на «просчет листика», а еще и на лету преобразовать имевшуюся модель в ряд точек.

Machine learning vs GameDev Gamedev, IT, Длиннопост

ИМХО тут произошла путаница. Particle и DotRendering системы. Это не то что разные, это диаметрально противоположные по своему подходу системы. Недавно NVIDIA запустила свой облачный GEFORCE NOW.

Вопрос: как же так? Кто считает? Как считает? Как это передается? Чито тут происходит?

Machine learning vs GameDev Gamedev, IT, Длиннопост

Скажу честно, протокол я сам еще изучаю, но ситуация примерно такая, как я описывал в предыдущем посте. На стороне клиента идет только обсчет координат реперных точек, на стороне сервера это все рендерится (в том же пакете передаются ID текстур) и передается обратно. И снова не картинкой, как мы привыкли благодаря всяким, TeamViewer, Ammyy, RAT etc., а в качестве стрим потока ряда эвентов, что то вроде ряда JSON пакетов надцать раз в секунду. В пакетах не хранится информация о треугольниках и текстурах, там только числовой ряд который тебе надо преобразовать и нарисовать, все просто как БТР.

Показать полностью 4

Machine learning vs GameDev

Пишу сразу, я старался этого избежать как мог, но тут  будут присутствовать профессиональные(или не очень) термины

Machine learning vs GameDev IT, Gamedev, Длиннопост

Не знаю что меня подвигло опять что-то публиковать на пикабу…

Может быть какое то желание о чем то рассказывать, может быть моя неугомонная натура, а может быть и старый друг, который немного застрял в начале IT карьеры (Friz я в тебя верю), а теперь хочет большего, и те 0.5 капитана, которые мы приговорили, решили за меня: есть же готовый материал, сча всю воду выльем, нарисуем пару мемасиков и вот оно: пикабу пост.


Итак: Machine learning vs GameDev


А хотелось бы сегодня поговорить о банальном и насущном, о ФПС, и о больном AMD vs Nvidia.

Для тех кому читать лениво, ответ прост: если домашний комп, то пофиг, если нет, то только Nvidia, ибо NVLink.


Ну а кому не в лом читать - давайте подумаем, как же у нас завязаны ML и гэймдизайн.

На мой взгляд, ответ очевиден – динамическое построение треугольников(мешей) и их текстурирование.


У нас есть динамический объект типа листвы, мы конечно можем нарисовать что бы листочег болтался туда сюда, но это не красиво и, что самое главное(для разработчиков) не интересно. Нам интересно что бы наш фигов листочек болтался на ветру и блин красиво болтался. Что для этого можно сделать? Ну можно нагрузить движок физики и заставить его отрисовывать плэйн с рядом модфикаторов волна, гравитация, направленный поток (сила приложения, изгибы и прочее), но оно нам не надо и так уже целый уровень рисуем (сверху камень кстати летит), да еще и ряд бампов накладываем... да нафиг не вперлось, хватит наигрались в 3D моделирование c вашими Engine.

Выход простой, перестроить плэйн в числовой ряд (матрицу) и замутить над  ней ряд алгоритмов, которые будут просчитывать положение точек а не бесконечно перестраивать треугольники, параллельно натягивая на них текстуры (кстати по секрету, свет кладется не динамически на текстуру, а мы берем ряд битмапок (они заранее срендерены разработчиком и  заботливо лежат в папочке текстур) предрасчитываем как она(текстура) должна выглядеть в следующем кадре, выбираем парочку тех что подходят, мержим и только потом выдаем на экран, та же самая фигня с тенями – ваша любимая настройка в игре «динамические тени» – сплошной предрасчет, если вам включить реально динамическую тень, на HD мониторе(1920) шаг просчета будет пикселей 15, визуально миллиметр-полтора, короче майнкрафт).

Machine learning vs GameDev IT, Gamedev, Длиннопост

Там очень длинное отступление в скобках получилось, но надеюсь Вы не потеряли суть, соря мне было очень лениво переписывать статью полностью.

И да, возможно вы угадали, именно этими вычислениями занимаются посредством CUDA. А теперь Америка: CUDA это не процессоры, это фрэймфорк. Физически с внедрением восьмого поколения граф процессоров мало что поменялось.

Это не мега быстрые и не мега умные процессоры, это просто интерпретатор, который позволяет запускать в параллель овердохрена вычислений. Далеко не топовая видяшечка 1060 в исполнении говнопроизводителя Palit может держать 1152 параллельных ниток вычислений. Для сравнения, у TITAN их 2688.

Вот тут там самая ситуация когда ATI конкретно потерялся, NVIDIA уже давала свой SDK CUDA, уже предлагала свой NVLINK вместо PCIe а AMD все еще думал.

Энтузиасты ковыряли CUDA помногу проводили реверс-инжиниринг, рожали свой OpenCL.

Machine learning vs GameDev IT, Gamedev, Длиннопост

Ну а за все эти годы мы получили от AMD только «частичную обратную совместимость CUDA» то есть выдали не свой SDK а совместимость чипа, на уровнях m_30, sm_32, sm_35, sm_50, sm_52, sm_53. Ну а если совсем честно то пришаманили на отдельное ядро виртуалку с обработчиком, что совсем не прибавляет скорости.

И при этом новая видия со своими 20+ чипами заявляет поддержку raytrace на лету, при этом оставляя возможно вызова этой бибилиотеки из SDK. Чито я могу сказать, есть у меня коллега (чистый математик) которая параллельно с основной работой, считает какие то дикие траектории для одного НИИ, когда я притащил ей немного инфы и буклетик с презентации Nvidia TITAN, сначла не поверила а потом подорвалась писать кучу служебок на закубку парочки нод на базе TITAN.

Охх опять я в дебри влез, а ведь обещал «о банальном и насущном, о ФПС»

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

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

Представьте, в один прекрасный момент решить что мы можем делать быстрее чем набивший оскомину PCIe, наваять свою шину, подсадить на это две трети дата саенса (то что нынче принято называть BIG DATA) а потом развернуться и сказать «а ведь и в играх быстрее будет», ИМХО это круто.

Показать полностью 3

Machine learning vs GameDev

Однажды мне в голову пришла мысль,


Почему у людей очень малым спросом пользуется 3d action? ИМХО, все просто – высокий порог вхождения.


Ну не всем из нас дано бодро на 720 градусов разворачиваться…


Тут 2 пути: ты либо выпускаешь игру, которая взлетает (типа DOOM) и живет поколениями, либо ты придумываешь что то новое(типа PUBG). И вот тут открывается широкий простор :D мы уже говорили про него ранее, ну и продолжим :D


Давайте поговорим о стрельбе.


Если посмотреть со стороны, то тут все просто. Кидаем Traceline до точки и мы в ажуре. В случае CSGO – накладываем паттерн.


Но промахнулись же?


Но, мы же не хотим банальностей, мы хотим пострелять и мы хотим этого сейчас, мы хотим побеждать!! Прямо сейчас!


Стало понятно что игрок в массе своей не хочет стрелять и не умеет попадать. И вот тут родился ежик.


Мы решили наложить сетку на прицел игрока. (Это пзд бредовая идея) но это было круто (да и наш математик просто офигела от возможности это посчитать-).


Эффект - ты стреляешь полчаса, тебе сложно и уныло, но на 40 минуте ты обращаешь внимание чисто летят хедшоты, да и вообще всех победил и игра зашла ) ты наш красотка )

Показать полностью

Machine learning vs GameDev CUDA version

Один из читателей резонно заявил: “воды много, мясо где?»


CUDA


Я люблю слово итак, потому: итак CUDA и как его едят?


Начнем пожалуй с того, что, привыкли называть CUDA это GPGPU.

Зайдем издалека, года эдак с 70 – тогда встала проблема что мы умеем считать Integer (а по большому счет bool), а что такое float – процессор не знает.

Теперь немного теории – как мы помним из математики начальных классов, у нас есть реальные и вещественные числа, в IT они называются float и integer. Если с обычным интом микросхема обучена работать по умолчанию (если интересно как они зарождались – погуглите машина бэббиджа), да вспомните мою оговорку выше про тип bool (true, false), то c float все гораздо интереснее. Первые архитектуры с флотом вообще не работали, последующие выносили значения после запятой на отдельную микросхему. Потому пришла эпоха виртуализации(HyperThreading) и мы началидробную часть вытаскивай на виртуальное ядро, но работать мы с ним так и не научились.

Ну мы же знаем про ученых они муху под носом не видят, рядом с ними (года эдак с 1990) развивается целое поколение процессоров, которое изначально оперирует не двумя а тремя точками, GPU вроде как :D


Теперь к практике:

Все же знают что у вас в компе 16 ядер и каждое их них по 3Ghz?. В видеокарте 3000 ядер по 100Hz.

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

Теперь мясо – если использовать всё тот же язык C(на нем написаны все ОС, что Apple, что Windows), ты можешь адресно обратиться к каждому шейдеру и накатить задачку. В случае с обычным процессором ты можешь только вызвать прерывание проца и поставить задачу в очередь. То есть это из раздела: ты либо спускаешь задачу на отдел специалистов, либо говоришь – Вась пойди сделай.

Показать полностью

Machine learning vs GameDev 2

Предыдущей пост не залетел, ну да пофиг )


Просто хочется писать на тему которая нравится, а на данный момент это именно машинное обучение.

Итак: Machine learning vs GameDev.


В прошлый я попытался рассказать как это выглядит со стороны игрока на примере бета теста Destiny 2.

Сейчас я хочу затронуть немного другу тему: передвижение.

Казалось бы что может проще: лево это лево право это право. Нажал и повернул.

В реальности GameDev ээто происходит немного по другому: на каждое телодвижение накладывается ряд параметров: слева стена? выступ? уступ? обрыв?

Во времена моего института это решалось кучей введенных классов и параметров.

Machine learning vs GameDev 2 Gamedev, Plymouth hemi cuda, Машинное обучение, Длиннопост

Да, эта ситуация крайне бесила и мы вынуждены были с ней мириться года эдак до 2005. Потом у нас появилась CUDA.


Да, можете не говорить что CUDA вошла на рынок году этак в 2010, мы же с вами знаем что технологию надо еще очень долго обкатывать.


Когда Nvidia выкатилась с этими процессорами, это дело вообще ни у кого не зашло, эту архитектуру мир пытался принять 5 лет. Прежде чем кричать про котолампу – почитайте что сейчас происходит с технологией nvlink().


Итак, у нас появилась CUDA, основы перечислять не буду, но появилась возможность не изобретать велосипед каждый раз заново, а закинуть ряд вычислений на потоковую обработку и получить ответ не через минуту, а через 8-20 тактов.


Это сломало все, появилась возможность моделировать поведение игроков. Если раньше мы рассчитывали «мощь» босса в зависимости от «предполагаемой» мощи игрока, теперь у нас появились вычислительные мощности, о которых мы ранее и не мечтали, теперь можно «подогнать статы» босса под игрока. Пока у игрока распаковываются пак с текстурами (это завязано на скорость НМЖД), мы можем подгрузить из облака паттерны его поведения просчитать его поведение и выдать ему того босса, которого он хочет. (для любителей котоламп: оффлайн и сломаные версии хранят данные паттерны в appdata (да, производитель изначально закладывает в игру возможность взлома))

Что то я затянул, я сам забыл с чего начал и свернул не туда..  итак - движения:

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

НАДОЕЛО! ДАЕШЬ СВОБОДУ ОТ ДИЗАЙНЕРОВ!!

Решение простое и долго висело на горизонте – генерируем геодату по мере передвижения и храним её в оперативке. Легко сказать, сложно сделать, когда у нас появились видеокарты с 2Gb+ на борту? Когда у нас появились те же самые видеокарты c вычислительной мощностью хотя бы 5TFLOPS? Вот потому мы и жили на сгенерированных картах и падали под текстуры, и мечтать не могли ни о какой динамике.

На данный момент мы раскладываем +-2 миллиона трекольников по кругу, рисуем по ним геодату, и это позволяет нам карабкаться по скалам.


PS. Чукча не писатель, но пытается научиться. Сорян что выбрал Вас в качестве аудитории.

Показать полностью 1
Отличная работа, все прочитано!