Pull to refresh
36
0.2

исследователь

Send message

Как управлять миром шестиугольных призм на GPU

Reading time20 min
Views5.3K


Недавно я реализовал очень необычную задумку — демонстрацию Minecraft-подобного движка с игровой логикой, выполняющейся полностью на GPU.


Как и зачем я это сделал, и как дошёл до жизни такой, я поведаю в этой статье.


Внимание, в статье есть много скриншотов!

Читать дальше →
Total votes 40: ↑40 and ↓0+48
Comments16

Но зачем? Интервью с автором рисунка про троллейбус из буханки хлеба

Reading time6 min
Views51K
«Вот так, с помощью нехитрых приспособлений буханку белого (или черного) хлеба можно превратить в троллейбус… Но зачем?» Вряд ли кто-то из завсегдатаев Хабрахабра и Гиктаймс ни разу не видел этой забавной картинки — она часто появляется в комментариях к статьям о самоделках, изобретениях «британских учёных» и вообще любых проектах, которые появились на свет не потому что были кому-то нужны, а потому что были кому-то интересны.

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

image
Читать дальше →
Total votes 86: ↑82 and ↓4+78
Comments14

Быстрое вычисление степени

Level of difficultyMedium
Reading time15 min
Views11K

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

Читать далее
Total votes 17: ↑16 and ↓1+19
Comments8

Замки, драконы и сундуки: как возник классический сеттинг игрового фэнтези? Часть 4: рождение Dungeons & Dragons

Level of difficultyEasy
Reading time8 min
Views6.4K

К началу 1970-х годов в США оформилось большое и активное сообщество игроков в настольные игры — которое в значительной степени пересекалось с любителями всё более популярного тогда жанра фэнтези. Ранние настолки происходили из военных игр, использовавшихся с XIX века для подготовки офицеров — и долгое время они изображали исключительно реальные или теоретические боевые столкновения. Идея сделать настолку в жанре фэнтези появилась у человека по имени Гэри Гайгэкс после того, как он реализовал настольную игру про средневековые бои — и решил добавить в неё фэнтезийных войск. Когда к этой концепции добавилась идея отдельных юнитов-героев и ролевого отыгрыша — на свет появилась Dungeons & Dragons. Мать всех современных ролевых игр и основа для сферического в вакууме фэнтезийного сеттинга, который во многом именно благодаря ей возник из множества разных миров, разных авторов.

Все части цикла статей о возникновении классического сеттинга игрового фэнтези:
Читать дальше →
Total votes 49: ↑48 and ↓1+59
Comments5

Нейропиксели для небогатых

Level of difficultyEasy
Reading time22 min
Views11K

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

Не волнуйтесь, решение есть. Сегодня речь пойдёт про следующую ядрёную смесь: пиксельная графика и нейросети применительно к разработке инди-игр. Примитивные технологии древности, новейшие достижения прогресса и бедные свободные творцы. High tech, low life — киберпанк ещё никогда не был так близок!

Сразу оговорюсь: это не практическое руководство, а скорее, наблюдения заинтересованного лица, пока ещё занимающего выжидательную позицию на заборе. Готового рецепта у меня нет — только общее направление для последующих изысканий. Поэтому не ждите высокого технического уровня материала.
Читать дальше →
Total votes 57: ↑54 and ↓3+68
Comments11

Машинное обучение в браузере

Reading time9 min
Views3.9K

Меня зовут Алексей, сегодня мы с вами поговорим, как можно ускорить вычисления машинного обучения веб приложения с помощью WASM, WebGL или WebGPU.

Когда фронтенд‑разработчик слышит о машинном обучении в браузере, первое, что приходит ему на ум, это вопрос: «Как это может быть применено? Мы же работаем в браузере на JS, который, как известно, медленный (по сравнению с компилируемыми языками)».

Читать далее
Total votes 5: ↑5 and ↓0+6
Comments0

Сложная красота в простой формуле

Level of difficultyEasy
Reading time6 min
Views18K

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

Сегодня я предлагаю вспомнить один старый и простой алгоритм, рисующий красивые картинки, который когда-то вовлёк меня в программирование и увлёк математикой. А заодно мы немного разберёмся в том почему картинки получаются именно такими.

Читать далее
Total votes 96: ↑95 and ↓1+117
Comments85

Демо City In A Bottle – система рейкастинга в 256 байтах

Level of difficultyMedium
Reading time8 min
Views3.4K

Привет всем любителям size coding, сегодня я расскажу о чём-то потрясающем: крошечном движке трассировки лучей (raycasting) и генераторе города, умещающихся в автономном файле HTML размером 256 байтов.

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

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

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

Читать далее
Total votes 41: ↑38 and ↓3+56
Comments7

Много-агентное планирование траекторий в децентрализованном режиме: эвристический поиск и обучение с подкреплением

Level of difficultyMedium
Reading time17 min
Views3.2K

Привет! Меня зовут Константин Яковлев, я научный работник и вот уже более 15 лет я занимаюсь методами планирования траектории. Когда речь идет о том, чтобы построить траекторию для одного агента, то задачу зачастую сводят к поиску пути на графе, а для этого в свою очередь обычно используют алгоритм A* или какие‑то из его многочисленных модификаций. Если же агентов много, они перемещаются в рабочем пространстве одновременно, то задача (внезапно) становится несколько более сложной и применить напрямую A* не получится. Вернее получится, но лишь для небольшого числа агентов (проклятье размерности, куда деваться). Тем не менее для централизованного случая, т. е. для случая, когда есть один (мощный) вычислитель, с которым связаны все агенты и который всё про всех знает, решить задачу много‑агентного планирования можно достаточно эффективно. Можно даже находить оптимальные решения для умеренного количества агентов за относительное приемлемое время (например, порядка 1 секунды на современном десктопном PC для 30–50 агентов).

Если же говорить о децентрализованном случае, т. е. о том случае, когда агентам необходимо действовать индивидуально (например, нет устойчивой связи с центральным контроллером), опираясь лишь на собственные (локальные) наблюдения и опыт, то с хорошими решениями задачи становится гораздо сложнее. Когда я говорю «хорошие решения», я имею в виду прежде всего такие алгоритмы, которые бы давали стройные теоретические гарантии в общем случае. Хотя бы гарантии того, что каждый агент дойдёт (за конечное время) до своей цели. Тем не менее, задача интересная и специалисты из индустрии и академии её пытаются решать.

В этом посте я расскажу о наших свежих наработках в этой области, а именно о гибридном методе, которые сочетает в себе принципы классического эвристического поиска (A*) и обучения с подкреплением (PPO). Метод получился неплохим, превосходящим многие современные аналоги по результатам экспериментов, а соответствующая статья была принята на The 38th AAAI Conference on Artificial Intelligence (пока доступен только препринт). Это одна из топовых академических конференций по искусственному интеллекту, которая в этом (2024) году проходила в Канаде (спойлер: я сам визу получить не успел, но моим коллегам и со‑авторам, кто имел ранее выданные Канадские визы, удалось принять личное участие и достойно представить нашу науку на мировом уровне).

Итак, поехали!
Total votes 27: ↑27 and ↓0+27
Comments11

Замки, драконы и сундуки: как возник классический сеттинг игрового фэнтези? Часть 1: во всём виноват Конан-Варвар

Level of difficultyEasy
Reading time8 min
Views11K

Фэнтези в наши дни имеет массу разных форм и поджанров. Классическое и тёмное, эпическое и ироническое, городское, славянское, китайское, и прочее всякое-разное. И всё же, когда дело касается мира компьютерных и настольных игр, при слове «фэнтези» мы первым делом представляем что-то довольно-таки определённое. Пафосные паладины с мечами, остроухие эльфы с луками, коренастые гномы с топорами и пивом, свирепые зеленокожие орки, сумрачные маги и прочие некроманты с драконами будут бегать по живописным горам и равнинам, оборонять и штурмовать крепости, искать артефакты в подземельях, призывать и запечатывать всякие сущности — и попутно прокачивать свои способности. Но откуда взялся этот классический сеттинг игрового фэнтези? Ведь напрямую он не копирует ни одно литературное произведение, фильм или некую изначальную игру, которые можно было бы назвать его однозначной первоосновой. Попробуем разобраться!
Читать дальше →
Total votes 73: ↑71 and ↓2+86
Comments19

Ансамблевое обучение для самых маленьких

Level of difficultyMedium
Reading time13 min
Views2.7K

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

Читать далее
Total votes 4: ↑4 and ↓0+6
Comments2

Дерево отрезков

Reading time21 min
Views9.3K

Всем привет. В этой статье я расскажу про дерево отрезков. Очень мощной структуры данных, которая позволяет делать много разных операций над массивом чисел. Я постараюсь по полочкам разложить эту тему и объяснить возможности дерева отрезков. Также я разберу несколько нетривиальных задач на дерево отрезков. Помимо самого дерева отрезков я расскажу и про связанные темы: дерево Фенвика и разреженные таблицы.

Читать далее
Total votes 29: ↑29 and ↓0+34
Comments11

select / poll / epoll: практическая разница

Reading time10 min
Views72K
При проектировании высокопроизводительных сетевых приложения с неблокирующими сокетами важно решить, какой именно метод мониторинга сетевых событий мы будем использовать. Их есть несколько и каждый хорош и плох по-своему. Выбор правильного метода может быть критически важной вещью для архитектуры вашего приложения.

В этой статье мы рассмотрим:

  • select()
  • poll()
  • epoll()
  • libevent
Читать дальше →
Total votes 60: ↑55 and ↓5+50
Comments66

GPT-2 в картинках (визуализация языковых моделей Трансформера)

Reading time18 min
Views31K

openAI-GPT-2-3


В 2019 году мы стали свидетелями блистательного использования машинного обучения. Модель GPT-2 от OpenAI продемонстрировала впечатляющую способность писать связные и эмоциональные тексты, превосходящие наши представления о том, что могут генерировать современные языковые модели. GPT-2 не является какой-то особенно новой архитектурой – она очень напоминает Трансформер-Декодер (decoder-only Transformer). Отличие GPT-2 в том, что это поистине громадная языковая модель на основе Трансформера, обученная на внушительном наборе данных. В этой статье мы посмотрим на архитектуру модели, позволяющую добиться таких результатов: подробно рассмотрим слой внутреннего внимания (self-attention layer) и применение декодирующего Трансформера для задач, выходящих за рамки языкового моделирования.

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments2

GPT для чайников: от токенизации до файнтюнинга

Reading time13 min
Views99K

К моему удивлению, в открытом доступе оказалось не так уж много подробных и понятных объяснений того как работает модель GPT от OpenAI. Поэтому я решил всё взять в свои руки и написать этот туториал.

Читать далее
Total votes 26: ↑25 and ↓1+29
Comments8

Как работает физика в играх

Level of difficultyMedium
Reading time17 min
Views19K

В мире видеоигр игровая физика играет важную роль, определяя реалистичность и взаимодействие игрового мира с игроком. Что же происходит под капотом? Какие алгоритмы и подходы используются в современных движках? И что же значит «застрять в текстурах»? (спойлер: чушь полнейшая)

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

Читать далее
Total votes 74: ↑74 and ↓0+74
Comments36

Яндекс открывает датасеты Беспилотных автомобилей, Погоды и Переводчика, чтобы помочь решить проблему сдвига данных в ML

Reading time6 min
Views16K


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

Меня зовут Андрей Малинин, я старший исследователь в Yandex Research. Сегодня я расскажу о проблеме, о наших датасетах, а также о конкурсе, который мы проводим в рамках международной конференции NeurIPS 2021 совместно с учеными из Оксфордского и Кембриджского университетов.

Читать дальше →
Total votes 36: ↑35 and ↓1+46
Comments8

Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++

Level of difficultyMedium
Reading time24 min
Views8.5K

Привет, Хабр! Меня зовут Кирилл Колодяжный, я ведущий инженер-программист в YADRO. Помимо основных рабочих задач, включающих исследование проблем производительности СХД, я увлекаюсь машинным обучением. Участвовал в коммерческих проектах, связанных с техническим зрением, 3D-сканерами и обработкой фотографий. В задачах часто использовал С++, хотя машинное обучение традиционно ассоциируется с Python. Этот язык программирования буквально захватил сферу, его используют повсюду — от обучающих курсов до серьезных ML-проектов.

Однако Python — не единственный язык, на котором можно решать задачи машинного обучения. Так, альтернативой может стать С++. Если последний вам ближе, вам будет интересен и полезен этот текст.

Под катом разберемся:

как организовать работу с данными и загрузку обучающего датасета, 

как описать структуру нейронной сети, 

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

как организовать конвейер обучения сети, 

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

Читать далее
Total votes 20: ↑19 and ↓1+20
Comments15

Основные типы распределений вероятностей в примерах

Level of difficultyMedium
Reading time15 min
Views20K

Статистические исследования и эксперименты являются краеугольным камнем развития любой компании. Особенно это касается интернет-проектов, где учёт количества пользователей в день, времени нахождения на сайте, нажатий на целевые кнопки, покупок товаров является обычным и необходимым явлением. Любые изменения в пользовательском опыте на сайте компании (внешний вид, структура, контент) приводят к изменениям в работе пользователя и, как результат, изменения наблюдаются в собираемых данных. Важным элементом анализа изменений данных и его фундаментом является использование основных типов распределений случайных величин, от понимания которых напрямую зависит качество оценки значимости наблюдаемого изменения. Рассмотрим их подробнее на наглядных примерах.

Читать далее
Total votes 58: ↑58 and ↓0+58
Comments11

ИИ в 3D: Где мы сейчас и какое будущее нас ждёт? (Часть 3)

Level of difficultyMedium
Reading time12 min
Views2.7K

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

В этой статье разберём, как ИИ помогает решать одну из ключевых задач робототехники, а именно - понимание и ориентация в объёмных пространствах!

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments2
1
23 ...

Information

Rating
2,363-rd
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity