Pull to refresh
39
0
Дмитрий Смолин @dimsmol

Software Engineer

Send message

Разбор монады ContT, или как написать продвинутый goto, генераторы и файберы на хаскеле

Level of difficultyHard
Reading time7 min
Views1.1K

В этой статье я разберу монаду ContT, и покажу как вернуть return и другие control-flow операторы из императивных языков программирования, которых мне так нехватало, когда я начинал изучать хаскель.

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments2

Как я собрал красивое ведро для гидропоники

Level of difficultyEasy
Reading time10 min
Views23K

Несколько лет назад я писал пост о том, как вырастить на гидропонике крайне острый Trinidad Scorpion CARDI. Он, при его живительных 1.2 миллионах единиц Сковилла, на неподготовленных перцеедов производит впечатление эквивалентное облизыванию паяльника.

Пока Монстр плодоносил и радовал в течение нескольких лет, я продумывал более удобный вариант гидропонной установки, который было бы не стыдно показывать в приличном интерьере гостям. Классический вариант “юного гидропониста” из канализационных труб, алюминиевого скотча и вороха булькающих трубочек был с негодованием забракован женой. Я разработал и протестировал несколько прототипов с 3D-печатными элементами, но потом проект был поставлен на паузу.

Окончательно доделать его получилось после того, как внезапно выяснилось, что коллеги тоже фанаты острого. Мы собрались в нашей виртуальной “курилке”, запилили проект со всеми положенными milestone в Asana и начали тестировать. Садитесь поудобнее, сегодня будет лонгрид-оффтопик, про то, как толпа DevOPS из WiseOPS пилила совместный хобби проект для украшения офиса. Да, мы заняты не только работой) А еще я поделюсь подробной инструкцией и файлами для 3D-печати.

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

Читать далее
Total votes 104: ↑115 and ↓-11+126
Comments156

Я ненавижу фитнес и поэтому занимаюсь им в VR. Часть 4: немного после

Level of difficultyEasy
Reading time9 min
Views1.6K

В предыдущих трёх статьях мы поговорили о фитнесе вообще и VR в частности, подробно прошлись по плюсам и минусам VR-фитнеса, а также рассмотрели большинство специализированных фитнес-приложений для Meta¹ Quest. А что насчёт не специализированных? А что насчёт VR вне Meta¹? Или вообще не VR? Чтобы не потратить на статью ещё два года (да, я потратил два года), я пройдусь по этим темам очень-очень поверхностно, исключительно для создания более-менее целостного образа индустрии.

Почему бы просто не играть в Beat Saber?

Действительно, почему?
Total votes 10: ↑8 and ↓2+6
Comments16

Я ненавижу фитнес и поэтому занимаюсь им в VR. Часть 2: про VR

Level of difficultyEasy
Reading time18 min
Views4.3K

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

Итак, TL;DR: да, фитнес в VR есть, он хорош и полезен, во многом лучше обычного и кому-то зайдёт идеально, но есть серьёзные ограничения.

О, странное! Поподробнее, пожалуйста
Total votes 11: ↑11 and ↓0+11
Comments43

Бесконтактные и слабые измерения, контрфактические вычисления и контрпортация

Level of difficultyMedium
Reading time20 min
Views2.7K

От философов-антиреалистов, эзотериков и богословов часто можно услышать проповеди на тему ограниченности научных методов и о существовании за пределами физического мира иных планов бытия, которые нематериальны и не могут быть познаны экспериментальным путём. Но они не в курсе, что наука уже много лет занимается изучением контрфактуалов - «потусторонних» событий, происходящих не в нашей вселенной, но тем не менее подчиняющихся известным физическим законам. Учёные постоянно открывают новые способы «взломать» классическую физику и ставят умопомрачительные эксперименты, результаты которых заставляют нас пересмотреть традиционные определения реальности. Практика показывает, что природа познаваема и содержит в себе всё необходимое для роста знания, главное – задавать ей правильные вопросы. Как измерить светочувствительную бомбу, не подрывая её? Как провести вычисление, не включая компьютер? Как увидеть, не глядя, и узнать о событии, которое не произошло? Как подсмотреть за котом Шрёдингера и воскресить его? Как отменить коллапс волновой функции? Наконец, как осуществить настоящую телепортацию без локального обмена информацией? Если обычная квантовая телепортация, запутанность и туннелирование уже не кажутся вам чем-то удивительным, готовьтесь к настоящим чудесам. В этой статье я разберу пять экспериментов, о которых вы вряд ли слышали, но результаты которых действительно взрывают мозг.

Читать далее
Total votes 14: ↑13 and ↓1+12
Comments6

Художественные приемы и профессиональные термины для создания изображений с ИИ. Всё, что нужно знать

Reading time7 min
Views6.2K

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

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

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

Читать далее
Total votes 30: ↑27 and ↓3+24
Comments10

Как я начал заниматься спортом по 2-3 часа в день

Level of difficultyEasy
Reading time6 min
Views35K

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

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

Читать далее
Total votes 86: ↑81 and ↓5+76
Comments132

Самое понятное объяснение Специальной теории относительности

Level of difficultyMedium
Reading time13 min
Views98K

Специальная теория относительности - удивительная теория, которая опровергла многие представления о мире, в которых человечество не сомневалось всю историю своего существования.

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

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

Для иллюстраций я написал интерактивный визуализатор СТО, работающий в браузере. Ссылка на него и исходники проекта в конце статьи.

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

Как языковая модель предсказывает следующий токен (часть 1)

Reading time27 min
Views6.6K

Я обучил небольшой (порядка 10 миллионов параметров) трансформер по превосходному туториалу Let’s build GPT: from scratch, in code, spelled out Андрея Карпати. После того, как он заработал, я захотел максимально глубоко понять, как он устроен внутри и как создаёт свои результаты.

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

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

Если вы знакомы с трансформерами и хотите сразу узнать вывод, то он таков: каждый блок трансформера (содержащий слой многоголового внимания и сеть с прямой связью) изучает веса, связывающие конкретный промт с классом строк, найденных в обучающем корпусе. Распределение токенов, соответствующее этим строкам в обучающем корпусе, и есть приблизительно то, что блок выводит как прогноз для следующего токена. Каждый блок может ассоциировать один и тот же промт со своим классом строк обучающего корпуса, что приводит к другому распределению следующих токенов, а значит, и к другим прогнозам. Окончательный результат работы трансформера — это линейное сочетание прогнозов каждого блока.

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

Язык твой — друг твой. Дообучаем языковые модели, собираем корпуса, делаем книги на малых языках

Level of difficultyMedium
Reading time14 min
Views6.3K

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

Мы научимся:

1. Дообучать мультиязычные языковые модели, переводящие текст в векторное представление (эмбеддинги).

2. Использовать их для выравнивания текстов библиотекой lingtrain-aligner, извлекая из текстов параллельные корпуса.

3. Загружать датасеты и модели на HuggingFace, чтобы это было доступно всем.

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

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

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

Читать далее
Total votes 47: ↑45 and ↓2+43
Comments11

Метод конечных элементов своими руками

Level of difficultyMedium
Reading time9 min
Views16K

Метод конечных элементов (МКЭ) применяют в задачах упругости, теплопередачи, гидродинамики — всюду, где нужно как-то дискретизировать и решить уравнения сплошной среды или поля. На Хабре было множество статей с красивыми картинками о том, в каких отраслях и с помощью каких программ этот метод приносит пользу. Однако мало кто пытался объяснить МКЭ от самых основ, с простенькой учебной реализацией, желательно без упоминания частных производных через каждое слово.

Мы напишем МКЭ для расчёта упругой двумерной пластины на прочность и жёсткость. Код займёт 1200 строк. Туда войдёт всё: интерактивный редактор, разбиение модели на треугольные элементы, вычисление напряжений и деформаций, визуализация результата. Ни одна часть алгоритма не спрячется от нас в недрах MATLAB или NumPy. Код будет ужасно неоптимальным, но максимально ясным.

Размышление над задачей и написание кода заняли у меня неделю. Будь у меня перед глазами такая статья, как эта, — справился бы быстрее. У меня её не было. Зато теперь она есть у вас.

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

Ваш телефон – секретное оружие: Как превратить его в веб-камеру и оживить ваши онлайн-встречи! (Если у вас Linux)

Level of difficultyEasy
Reading time3 min
Views9.5K

Что объединяет удаленного сотрудника, на долю которого выпало много видеозвонков, зарождающуюся звезду YouTube и начинающего стримера? Все они, рано или поздно, осознают неотъемлемую важность повышения качества изображения, которое предоставляется их зрителям. А еще у них наверняка есть какой-нибудь Xiaomi Nano Porridge 10 Pro с довольно неплохой матрицей. И я не исключение, бросив вызов этой проблеме по-программистски и постаравшись обойтись без больших финансовых затрат, решением которой и хочу поделиться с вами. Добро пожаловать под кат!

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

Darcs и Pijul. Системы контроля версий для тех, кто любит математику и не любит деревья

Level of difficultyEasy
Reading time6 min
Views5.7K

Небольшой обзор систем контроля версий, альтернативных git, и основанных на математической теории. Речь пойдёт о двух системах распределённого контроля версий: Darcs, написанной на Haskell, и Pijul, написанной на Rust. Обе они сейчас активно развиваются и предлагают свои сетевые репозитории. Оказалось, что про них на Хабре толком нет ничего, тогда как про git образовался целый хаб. Поскольку я люблю и использую Haskell, я остановил свой выбор на Darcs, и вот, спустя два месяца непрерывной работы над библиотекой геометрической алгебры для hackage, я готов поделиться впечатлениями от её использования.

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

Как работают трансформеры: разбираем математику

Level of difficultyMedium
Reading time28 min
Views17K

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

Как вы увидите, математика модели не так уж сложна. Сложность возникает из-за количества этапов и количества параметров. Перед прочтением этой статьи я рекомендую прочитать пост Illustrated Transformer (или читать их параллельно) [перевод на Хабре]. Это отличный пост, объясняющий модель трансформера интуитивным (и наглядным!) образом, поэтому я не буду объяснять то, что уже объяснено в нём. Моя цель заключается в том, чтобы объяснить, как работает модель трансформера, а не что это такое. Если вы хотите углубиться в подробности, то изучите известную статью Attention is all you need [перевод на Хабре: первая и вторая части].

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

С новым годом: GPT в 500 строках на SQL

Reading time42 min
Views37K

В минувшем году все только и говорили об ИИ и о том, как он может всё за вас сделать.

Мне нравится, когда кто-то или что-то работает за меня. Поэтому решил: попрошу-ка ChatGPT написать за меня новогодний пост:

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

Что ж, лишний раз убеждаешься, что, если хочешь что‑то сделать хорошо – сделай это сам.

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

Читать далее
Total votes 215: ↑211 and ↓4+207
Comments21

Скрытые возможности элемента <input>

Level of difficultyMedium
Reading time8 min
Views17K

Элемент <input> в HTML самый интересный.

Большинство его собратьев вне зависимости от своих атрибутов ведут себя одинаково. При этом атрибут type элемента <input> может принимать 22 разных значения, которые не только меняют его поведение, но и влияют на внешний вид (зачастую в ущерб стилистике).

Элемент <input> отвечает за всё, начиная с текстового ввода и чекбоксов, заканчивая переключателями и кнопкой для сброса всех полей в форме. В этой статье я опишу не только различные типы <input>, но и сопутствующие атрибуты, о которых вы могли не знать, и которые делают этот элемент более удобным и применимым в различных ситуациях. Приступим!
Читать дальше →
Total votes 103: ↑102 and ↓1+101
Comments22

Mamba. От начала до конца

Level of difficultyMedium
Reading time5 min
Views23K

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

Читать далее
Total votes 29: ↑28 and ↓1+27
Comments25

О кастомных HTML-тегах по-человечески и как их использовать

Level of difficultyMedium
Reading time7 min
Views12K

Расскажу вам о том, как использовать чудо-юдо под названием «Кастомные HTML‑теги» понятно, но подробно.

Читать далее
Total votes 44: ↑43 and ↓1+42
Comments38

Абиогенез и алгоритмы естественного отбора

Reading time15 min
Views6.5K

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

Изучить подробнее...
Total votes 15: ↑15 and ↓0+15
Comments33

Непослушное дитя Докинза или о формировании современного мемофонда

Reading time10 min
Views2.3K

В уже далёком 2017 году я единственный раз побывал на фестивале «Geek Picnic», проходившем в Санкт-Петербурге. На тот фестиваль я собрался исключительно ради того, чтобы послушать Ричарда Докинза. Прочитанная им лекция выложена на YouTube здесь. В целом этот поход был для меня во многом ритуальным событием (в лекции Ричарда я не услышал ничего такого, что ранее у него же не читал – в частности, в великолепной книге «Самое грандиозное шоу на Земле»), но из высказанных им мыслей мне наиболее запомнилась шутливая: «я придумал слово «мем» раньше, чем появился Интернет». Действительно, именно Докинз предложил в 1976 году термин «мем» для обозначения самовоспроизводящейся информационной единицы, чья природа во многом схожа с вирусной. Под катом будет рассказано, насколько научна такая трактовка мема и как она связана с восприятием информации.

Также напомню, что в Рунете не позже чем с 2003 года существует сайт «Энциклопедия культур» http://ec-dejavu.ru/main.html, на котором проанализированы и объяснены многочисленные мемы, сложившиеся до распространения Интернета.

Читать далее
Total votes 17: ↑16 and ↓1+15
Comments3
1
23 ...

Information

Rating
Does not participate
Location
Sunnyvale, California, США
Date of birth
Registered
Activity