Pull to refresh
37
35
Юрий @yurixi

Программист

Send message

Пишем свою Diffusion модель с нуля

Level of difficultyMedium
Reading time12 min
Views15K

Всем привет, думаю у вас на слуху разного рода Diffusion модели последние 2 года. На его основе генерируют реалистичные изображения и видео, поэтому мне захотелось копнуть поглубже и узнать какова кроличья нора...

Меня зовут Юра, я - разработчик, фаундер и ML энтузиаст, также пишу свои заметки в своем ТГ канале. Я решил разобраться и понять, как устроена Diffusion модель внутри, понять ее математику и постараться объяснить и разложить ее на пальцах. Ну и конечно пописать код, который (спойлер) заработал. На гифке изображены примеры итоговых картинок на моей финальной модели.

Если вам тоже интересно, то читайте дальше

Читать далее

Использование Graphviz для построения блок-схем

Reading time3 min
Views32K
Мы создаем ПО для разработки и поддержки баз данных Oracle, и статический анализатор PL/SQL является одной из основных фич наших приложений. Кто знаком с Oracle, тот хорошо знает что такое PL/SQL.

Известная поговорка гласит: «Лучше один раз увидеть, чем сто раз услышать». Поэтому мы решили заимпрувить статический анализатор таким образом, чтобы он визуализировал код в виде блок-схем (Flowcharts) и диаграмм вызовов (Call Trees). Хоть и нарисовать блоки и их связи несложно, оптимизировать их расположение на «листе» представлялось задачей, требующей значительных усилий. Чтобы стрелки минимально пересекались и обтекали блоки, блоки объединялись в группы, и диаграмма при этом не превращалась в «кашу», нужно было потратить много сил и времени.

И тогда мы решили поискать готовое решение, дабы не изобретать велосипед. Наше внимание сразу привлек Graphviz – open source решение по визуализации диаграмм. Первые его версии были разработаны компанией AT&T, а теперь он доступен как набор утилит и библиотек, а также в исходниках под лицензией Eclipse Public License (EPL).

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

Записываем PNG без мам, пап и внешних библиотек

Reading time9 min
Views16K

Я решал очередную техническую задачу и столкнулся с проблемой: нужно сохранять изображения, а у меня нет сериализаторов и я не могу использовать готовые библиотеки. Ситуацию ухудшает, что из доступных форматов только PNG, JPEG и WebP. Выбор пал на PNG.

Формат изображения PNG известен с 1996 года, а на Хабре опубликовано несколько статей о декодировании этого формата. И ни одной — о кодировании. Я расскажу, как сохранить PNG своими руками на случай, если вам тоже придется это делать. Например, в академических целях.

Под катом вас ждет подробный разбор каждого байта на множестве иллюстраций.
Читать дальше →

Генеративная графика — не только ИИ

Level of difficultyMedium
Reading time10 min
Views1.7K

Привет, Хабр! В прошлый раз мы с вами создавали «Игру жизни» на Godot. Движок показал себя отлично, но для такой простой задачи это всё равно что забивать микроскопом гвозди. Особенно когда речь идёт о веб‑экспорте.

В последнее время стоит заикнуться про генерацию изображений, как все сразу вспоминают про нейросети. Stable Diffusion, Midjourney и прочие модели впечатляют, не спорю. Но давайте взглянем на другую сторону генеративного искусства. Ту, где картинки создаются не гигабайтами весов нейронной сети, а несколькими килобайтами JavaScript-кода.

И кстати раз уж речь зашла про красоту в коде: мы как раз запустили «Конкурс красоты кода 2.0». Самое время показать, что даже простые алгоритмы могут создавать нечто впечатляющее. Именно такие работы, где за внешней простотой скрывается математическая элегантность, часто оказываются самыми интересными.

Читать далее

Как много общаться с людьми и не возненавидеть их

Level of difficultyEasy
Reading time4 min
Views4.7K

Привет! Мы — Лера и Наташа — исследователи в UX-лаборатории Контура. Мы много общаемся с командой-заказчиком, с пользователями продукта и с другими коллегами.

Но есть одно существенное отличие: у исследователя лаборатории каждые 3-4 недели новый заказчик и новый продукт. Хотя мы далеко не суперэкстраверты и не особо заряжаемся от бесконечного общения.

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

Читать далее

Как мы делаем Автограф — «русское Visio»

Reading time6 min
Views23K
image
Самая первая инженерная версия редактора, не самая удобная для конечных пользователей

В России MS Visio используется для того, чтобы нарисовать планы помещений, вентиляции, пожарной сигнализации, рисовать всякие схемы работы — и так далее. Потом в какой-то момент оно пропало, а желание делать удобные схемы осталось.

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

Сейчас мы замещаем Visio в России и поддерживаем VSD/VSDX-форматы в обе стороны.

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

Сильно упрощая, каждая схема и в нашем движке, и в движке Visio состоит из векторных элементов. Пользователь перемещает окно с полем зрения по схеме, и для этого места идёт рендер — рисуются только те элементы, которые видно. Для каждого масштаба делается пререндер этого вектора с разной детализацией, то есть пользователь каждый момент времени работает со всего одной группой SVG-элементов. Всё остальное только кажется схемой из деталей, на самом деле — это единая отрендеренная большая картинка.
Читать дальше →

Капитализм Vs Инфономика

Level of difficultyEasy
Reading time3 min
Views1.7K

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

Читать далее

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

Reading time21 min
Views2.5K

Доминирующий на сегодняшний день подход к языковому моделированию  основан на рекуррентных нейронных сетях. Их успех в моделировании часто связан со способностью таких сетей обработать неограниченный контекст. В этой статье мы разрабатываем подход для конечного контекста с помощью сложенных (композитных) сверток, которые могут быть более эффективными, поскольку они позволяют распараллеливать последовательные порции данных. Мы предлагаем новый упрощенный нейро-управляемый механизм и исследуем для него влияние ключевых архитектурных решений. Предложенный подход достигает наиболее значимых результатов на бенчмарке WikiText103, даже несмотря на то, что он характерен долгосрочностью зависимостей, а также сопоставимых результатов на бенчмарке Google Billion Words. Наша модель уменьшает задержку при оценивании предложения на порядок, по сравнению с рекуррентными базовыми значениями. Насколько нам известно, это первый случай, когда непериодический подход конкурентоспособен с сильными рекуррентными моделями в подобных крупномасштабных языковых задачах.

Читать далее

Настройка ПИД-регулятора для беспилотных автомобилей

Level of difficultyMedium
Reading time5 min
Views2.4K

Настройка ПИД-регулятора для беспилотных автомобилей

Этот проект иллюстрирует концепцию ПИД-регулятора, применяемого в беспилотных автомобилях в рамках программы Udacity «Беспилотный автомобиль»

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

В контексте беспилотных автомобилей они играют важную роль в управлении такими параметрами движения, как рулевое управление, ускорение и т. д. Сложные алгоритмы, используемые в беспилотных автомобилях, по сути, рассчитывают траекторию и скорость движения беспилотного автомобиля. Автономность может быть реализована только в том случае, если автомобиль следует по траектории с заданной скоростью. Именно здесь PID-регулятор играет свою роль, обеспечивая соблюдение беспилотным автомобилем рассчитанных параметров. Любое отклонение от рассчитанных параметров может привести к непредвиденным или катастрофическим последствиям.

Читать далее

Как исследователи нарушают привычные подходы в ИИ, исключая матричное умножение

Level of difficultyMedium
Reading time6 min
Views3.7K

Привет, на связи Елена Кузнецова, специалист по автоматизации Шерпа Роботикс. Сегодня я перевела для вас статью, посвященную использованию моделей ИИ без лишней математики. Все мы знаем, что нейросети - дело энергозатратное. А описанные в статье исследования могут помочь снизить энергопотребление в работе нейросетей.

Исследователи из Университета Калифорнии в Санта-Круз, UC Дэвис, LuxiTech и Университета Сучжоу объявили о разработке нового подхода к оптимизации работы языковых моделей ИИ, который исключает матричное умножение из вычислительных процессов. Это принципиально меняет операции нейронных сетей, которые в настоящее время ускоряются с помощью графических процессоров (GPU). Результаты работы, изложенные в недавней препринте, могут существенно повлиять на экологическую устойчивость и операционные расходы систем ИИ.

Читать далее

Распределение IQ: как программисту выживать в мире, рассчитанном на дураков?

Level of difficultyEasy
Reading time8 min
Views44K

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

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

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

Читать далее

Как идеи Аристотеля применяются в GenAI. Разбираем вопросы этики ИИ в образовании и создаем философский чат-бот

Level of difficultyMedium
Reading time16 min
Views1.5K

Учёные Лаборатории цифровой философии Санкт-Петербургского государственного университета на протяжении нескольких лет занимаются глубоким исследованием цифрового мира. Проект объединяет междисциплинарные исследования и занимается вопросами, которые задают философам представители цифровых технологий, статусом традиционных философских вопросов в сфере технологий и разработкой цифровых инструментов в изучении философии. Исследование генеративных нейронных сетей и их использование в педагогике вообще и в философии в частности – одна из сфер интересов учёных Лаборатории. Опыт применения этих сетей на семинарах показал ряд интересных особенностей использования GenAI (Generative Artificial Intelligence) в философии.

Об этике применения генеративных нейронных сетей в образовании, а также о философском чат-боте рассказывает координатор семинара «Лаборатория цифровой философии» Дмитрий Ярочкин.

Читать далее

Как у нейросетей работает внимание? Статья про self-attention и cross-attention

Level of difficultyMedium
Reading time5 min
Views3.5K

Удивительно, как нейросети похожи на нас. У них тоже есть внимание, и на примере коня на ракете я расскажу, как оно работает!

Читать далее

12 причин, почему технологии Wolfram — это не Open Source

Reading time18 min
Views5.8K

На протяжении многих лет меня много раз спрашивали о моем мнении по поводу бесплатного программного обеспечения с открытым исходным кодом. Иногда вопросы вызваны сравнением с каким-либо перспективным или недавно вошедшим в моду проектом с открытым исходным кодом, иногда сравнением с застойным проектом с открытым исходным кодом, а иногда убеждением, что технологии Wolfram были бы лучше, если бы они были с открытым исходным кодом.

Я рискую тем, что спровоцирую open-source сообщество, но решил поделиться некоторыми своими взглядами. Хотя есть контрпримеры к большинству моих слов, не все пункты применимы к каждому проекту, и я несколько упускаю из виду различные виды "свободного" и "открытого", я надеюсь, что мне удалось выкристаллизовать некоторые ключевые моменты.

Подскаст, посвященной это теме размещен в SoundCloud.

TLDR: Большая часть этой статьи может быть подытожена двумя выводами: (1) бесплатное программное обеспечение с открытым исходным кодом может быть очень хорошим, но оно плохо справляется с тем, что мы пытаемся сделать; и большая часть причины в том, что (2) открытый исходный код распределяет разработку среди небольших, самостоятельно собирающихся групп, которые по отдельности решают части общей задачи, но масштабная, единая разработка требует централизованного контроля и постоянных усилий.

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

Читать далее

Полезные Youtube-каналы

Level of difficultyEasy
Reading time2 min
Views8K

Сегодня хотим поделиться с вами подборкой Youtube‑каналов по ИИ, машинному обучению и математике. Если у вас есть еще рекомендации, обязательно дополняйте пост в комментариях!

Читать далее

Могут ли трансформеры «думать»

Level of difficultyMedium
Reading time21 min
Views6.3K

Недавние исследования показывают, что модели трансформеров способны почти безошибочно решать задачи, требующие нескольких логических шагов. Например, из утверждения А вывести Б и дойти логически до В. И что удивительно, это достигается без использования Chain-of-Thought или особых промптов — только классический GPT-2. Давайте посмотрим, как трансформеры «думают» при решении задач рассуждения, и напишем для этого код с использованием библиотеки Hugging Face.

Читать далее

Подборка игр с низкоуровневым программированием

Level of difficultyEasy
Reading time5 min
Views38K

TL;DR

Игры от Zachtronics:

TIS-100, EXAPUNKS, SHENZHEN I/O

Про создание процессора от логических элементов и до написания кода на ассемблере: браузерная бесплатная nandgame.com, более продвинутая Turing complete.

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

Подробности

Тысяча и одна библиотека С++

Reading time65 min
Views41K

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

Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.

Прикоснуться к сокровищнице языка С++

Дизайн и эволюция constexpr в C++

Reading time29 min
Views37K

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

У constexpr с каждым годом становится больше возможностей. Сейчас использовать в compile-time вычислениях можно почти всю стандартную библиотеку. Пример вычисления числа до 1000 с наибольшим количеством делителей: ссылка на код.

История constexpr насчитывает долгую историю эволюции с ранних версий C++. Исследуя предложения в стандарт и исходники компиляторов, можно понять, как слой за слоем создавалась эта часть языка, почему именно так она выглядит, как на практике вычисляются constexpr-выражения, какие возможности ждут нас в будущем, а какие - могли бы быть, но не были приняты в Стандарт.

Эта статья подходит как тем, кто еще не знает, что такое constexpr, так и тем, кто уже долгое время его использует.

Назад в будущее

Information

Rating
224-th
Location
Иркутск, Иркутская обл., Россия
Registered
Activity