Search
Write a publication
Pull to refresh
5
0.6

Разработчик ПО

Send message

Простая хэш-таблица для GPU

Reading time11 min
Views13K

Я выложил на Github новый проект A Simple GPU Hash Table.

Это простая хэш-таблица для GPU, способная обрабатывать в секунду сотни миллионов вставок. На моём ноутбуке с NVIDIA GTX 1060 код вставляет 64 миллиона случайно сгенерированных пар ключ-значение примерно за 210 мс и удаляет 32 миллиона пар примерно за 64 мс.

То есть скорость на ноутбуке составляет примерно 300 млн вставок/сек и 500 млн удалений/сек.

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

  • Обрабатываются только 32-битные ключи и такие же значения.
  • Хэш-таблица имеет фиксированный размер.
  • И этот размер должен быть равен двум в степени.

Для ключей и значений нужно зарезервировать простой разграничивающий маркер (в приведённом коде это 0xffffffff).
Читать дальше →

Самодельный лидар: OpenTOFLidar

Reading time27 min
Views80K

В этой статье я хочу рассказать про свой проект импульсного (TOF) Open Source лидара — о том как я его делал, и каких результатов удалось добиться.
top-picture

Читать дальше →

Нечёткая математика. Основы нечётких множеств

Reading time6 min
Views21K
Излишнее стремление к точности стало оказывать действие, сводящее на нет теорию управления и теорию систем, так как оно приводит к тому, что исследования в этой области сосредоточиваются на тех и только тех проблемах, которые поддаются точному решению. Многие классы важных проблем, в которых данные, цели и ограничения являются слишком сложными или плохо определенными для того, чтобы допустить точный математический анализ, оставались и остаются в стороне лишь по той причине, что они не поддаются математической трактовке. Л. Заде

Определение и характеристики


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


Но качественная оценка не обладает свойством аддитивности, присущим привычным нам числам; т. е. мы не можем определить результат операций для приближенных оценок (“небольшая сумма денег” + “небольшая сумма денег”), в отличие от, к примеру, натуральных чисел (2 + 2). Не можем определить потому, что качественная оценка сильно зависит от лица, принимающего решение, контекста и смысла, вкладываемого в конкретном случае.


Однако, в мире имеется достаточно величин, которые мы не в состоянии по тем или иным причинам точно оценить: степень порядка в комнате, "престижность" автомобиля, красота человека, “схожесть" вещей, … Но работать с ними как с привычными числами хочется хотя бы для задач автоматизации.

Читать дальше →

«Загляните, это нечто»: саморепликация искусственной ДНК

Reading time9 min
Views18K


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

Ученые из института биохимии им. Макса Планка (Германия) успешно создали биологическую систему, которая обладает способностью к репликации собственного ДНК. Какие методики были применены для создания синтетического реплицирующего ДНК, насколько эффективна полученная система и что данное открытие значит для современной синтетической биологии? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.
Читать дальше →

Коты в коробочках, или Компактные структуры данных

Reading time12 min
Views29K

image


Как быть, если дерево поиска разрослось на всю оперативку и вот-вот подопрет корнями соседние стойки в серверной? Что делать с инвертированным индексом, жадным до ресурсов? Завязывать ли с разработкой под Android, если пользователю прилетает «Память телефона заполнена», а приложение едва на половине загрузки важного контейнера?


В целом, можно ли сжать структуру данных, чтобы она занимала заметно меньше места, но не теряла присущих ей достоинств? Чтобы доступ к хэш-таблице оставался быстрым, а сбалансированное дерево сохраняло свои свойства. Да, можно! Для этого и появилось направление информатики «Succinct data structures», исследующее компактное представление структур данных. Оно развивается с конца 80-х годов и прямо сейчас переживает расцвет в лучах славы big data и highload.


А тем временем на Хабре найдется ли герой, способный пересковоговорить три раза подряд
[səkˈsɪŋkt]?

Читать дальше →

Аппаратный ключ шифрования за 3$ — возможно ли это?

Reading time10 min
Views71K

Итоговый результат — ключ размером с флешку

Повсеместное шифрование и, как следствие, обилие ключей заставляет задуматься об их надежном хранении. Хранение ключей на внешних устройствах, откуда они не могут быть скопированы, уже давно считается хорошей практикой. Я расскажу о том, как за 3$ и 2 часа сделать такой девайс.
Читать дальше →

Делаем универсальный RFID-ключ для домофонов

Reading time6 min
Views224K
Приветствую всех, кого интересует тема электронных ключей-вездеходов. Сам я, по правде сказать, давно не слежу за новостями в этой области. Но свою разработку трёхлетней давности хочу опубликовать, так как она проста в повторении и может быть кому-то интересна. Суть: вместо десятка ключей с кодами-вездеходами и просто кодами, все ключи можно носить в одном небольшом устройстве.


Читать дальше →
Развитие искусственного интеллекта, как и его восприятие человеком, прошло сложный путь и продолжается на наших глазах. ИИ давно вырос из коротких штанишек простого помощника человека и все активнее заявляет о своих правах. Стартующий в 2019 году технологический конкурс Up Great ставит перед собой долгосрочную амбициозную цель — создать универсальный ИИ, который будет обучаться вместе с людьми в ходе совместной деятельности. А это значит, что пришло время окончательно решить, кем является ИИ для человека и кем человек является для ИИ.
Читать дальше

Как понять, что ты — фрезеровщик?

Reading time2 min
Views17K
Фрезеровщики – отличные ребята. Я с ними много тусовался в цехе, когда проходил практику и писал диссертацию. Позже я понял, что фрезеровщиков полно везде.

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

Фрезеровщик всегда выполняет норму. Даже перевыполняет, почти всегда. Но, как ни странно, перевыполняет всегда на небольшой процент. Словами фрезеровщика: «вишь, делаем чутка побольше, чтобы премия была, но не сильно, чтоб норму не повысили». Уходит домой в 15-00, хотя рабочий день – до 17-00. Потому что выполнил норму.
Читать дальше →

Визуальная теория информации (часть 1)

Reading time12 min
Views23K


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

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

К сожалению, теория информации может казаться пугающей. Я не думаю, что есть какая-то причина для этого. Фактически, многие ключевые идеи могут быть объяснены визуально!

Читать дальше →

Визуальная теория информации (часть 2)

Reading time10 min
Views25K


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

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

Читать дальше →

Что такое быть тимлидом

Reading time14 min
Views32K

Интро


К сожалению, большая часть работы тимлида скрыта от команды. И в зависимости от многочисленных факторов, таких как размер команды, выстроенные процессы, наличие других ролей, занимающихся работой с командой — она еще и невероятно размыта. Список твоих обязанностей в разных компаниях будет отличаться. Где-то это просто формальная должность человека, который просто перетаскивает задачи из одного статуса в другой в свободное время от написания кода, в другой — это полноценная роль, где придется отложить в сторону свою любимую IDE и заняться кучей других обязанностей. Кстати, очень часто эту роль совмещают с еще одной ролью, техлида, и далеко не всегда это плохо.


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


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

Читать дальше →

Эксперименты с нейронными сетями на данных сейсморазведки

Reading time14 min
Views18K
Сложность интерпретации данных сейсмической разведки связана с тем, что к каждой задаче необходимо искать индивидуальный подход, поскольку каждый набор таких данных уникален. Ручная обработка требует значительных трудозатрат, а результат часто содержит ошибки, связанные с человеческим фактором. Использование нейронных сетей для интерпретации может существенно сократить ручной труд, но уникальность данных накладывает ограничения на автоматизацию этой работы.

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

Проведение акваториальной сейсморазведки
Рисунок 1. Проведение акваториальной сейсморазведки (источник)
Читать дальше →

Deep Reinforcement Learning: как научить пауков ходить

Reading time14 min
Views24K

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


Основой решения является алгоритм Advantage Actor Critic (A2C) с оценкой Advantage через Generalized Advantage Estimation (GAE).


Под катом математика, реализация на TensorFlow и множество демок того, к каким способам ходьбы сошлись алгоритмы.


Нейросети. Куда это все движется

Reading time7 min
Views42K

Статья состоит из двух частей:


  1. Краткое описание некоторых архитектур сетей по обнаружению объектов на изображении и сегментации изображений с самыми понятными для меня ссылками на ресурсы. Старался выбирать видео пояснения и желательно на русском языке.
  2. Вторая часть состоит в попытке осознать направление развития архитектур нейронных сетей. И технологий на их основе.

Понимать архитектуры нейросетей непросто


Рисунок 1 – Понимать архитектуры нейросетей непросто


Все началось с того, что сделал два демонстрационных приложения по классификации и обнаружению объектов на телефоне Android:


  • Back-end demo, когда данные обрабатываются на сервере и передаются на телефон. Классификация изображений (image classification) трех типов медведей: бурого, черного и плюшевого.
  • Front-end demo, когда данные обрабатываются на самом телефоне. Обнаружение объектов (object detection) трех типов: фундук, инжир и финик.
Читать дальше →

ИИ, пытающийся избежать проблем, научился сложному поведению

Reading time6 min
Views34K


В обучении с подкреплением (Reinforcement Learning) часто используется любопытство в качестве мотивации для ИИ. Заставляющее его искать новые ощущения и исследовать окружающий мир. Но жизнь полна неприятных сюрпризов. Можно упасть с обрыва и с точки зрения любопытства это всегда будут очень новые и интересные ощущения. Но явно не то, к чему надо стремиться.


Разработчики из Berkeley перевернули задачу для виртуального агента с ног на голову: главной мотивирующей силой сделали не любопытство, а наоборот — стремление всеми силами избегать любой новизны. Но "ничего не делать" оказалось сложнее, чем кажется. Будучи помещенным в постоянно меняющийся окружающий мир, ИИ пришлось обучиться сложному поведению, чтобы избегать новых ощущений.

Читать дальше →

Свёрточные текстуры

Reading time8 min
Views8.7K

Самостоятельно обновляемые текстуры


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


Рисунок 1: двойная буферизация свёрточной текстуры

Прежде чем двигаться дальше, нам нужно решить одну проблему: текстуру нельзя считывать и записывать одновременно, такие графические API, как OpenGL и DirectX, не позволяют этого делать. Так как следующее состояние текстуры зависит от предыдущего, нам нужно как-то обойти это ограничение. Мне нужно выполнять чтение из другой текстуры, а не из той, в которой выполняется запись.

Решением является двойная буферизация. На рисунке 1 показано, как она работает: на самом деле вместо одной текстуры есть две, но в одну из них выполняется запись, а из другой производится чтение. Текстура, в которую выполняется запись, называется back buffer (вторичный буфер), а рендерящаяся текстура — front buffer (первичный буфер). Поскольку свёрточная тестура «записывается в саму себя», вторичный буфер в каждом кадре выполняет запись в первичный буфер, а затем первичный рендерится или используется для рендеринга. В следующем кадре роли меняются и предыдущий первичный буфер используется как источник для следующего первичного буфера.

Получение разрешения на полёт дрона (БВС, БПЛА) в Российской Федерации

Reading time9 min
Views18K
image

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

В первую очередь хочу выразить благодарность автору статьи «Получение разрешения на полет дрона (БВС, БПЛА) в Российской Федерации в 2019 году» (далее — первоначальная статья), которой я руководствовался сам оформляя свои полеты, и настоятельно рекомендую прочитать данный пост раньше моего. Однако, в процессе выполнения некоторых процедур я столкнулся с некоторыми расхождениями реальности с описанным. Именно об этих отличиях и пойдет речь.
Читать дальше →

Наши на конференции AI Journey

Reading time3 min
Views2.8K


8 и 9 ноября в Москве прошла конференция с ведущими российскими и международными специалистами в области ИИ и анализа данных, а также представителями компаний-лидеров по развитию и применению ИИ-технологий в бизнес-процессах. Делимся с вами видеозаписями выступлений и презентациями наших коллег.

Никогда больше не игнорируйте обучение с подкреплением

Reading time6 min
Views11K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Don’t Ever Ignore Reinforcement Learning Again» автора Michel Kana, Ph.D.

Обучение с учителем и обучение без учителя — это ещё не все. Все это знают. Начните с OpenAI Gym.

image

Собираетесь победить чемпиона мира по шахматам, нардам или го?

Есть способ, который позволит вам это сделать — обучение с подкреплением.
Читать дальше →

Information

Rating
3,255-th
Registered
Activity