Pull to refresh
59
0
Семён Приходько @ababo

User

Send message

Глобально оптимальный, восьмой и наиболее быстрый вид интерпретаторов байткода

Level of difficultyHard
Reading time15 min
Views8.7K

Совершать невозможное и раздавать пинки здравому смыслу — в этом и состоит жизнь членов Гуррен-Дана! (C) Камина

Эта статья вступает в техническую полемику со статьей 2015 года за авторством Atakua, подходы из которой я и атакую. Atakua исследует 7 видов интерпретаторов байткода, но делает это без уважения - быстрейшей оказывается двоичная трансляция, которая, по сути, уже не интерпретатор байткода, а форма Ahead-Of-Time компилятора. Эта двоичная трансляция транслирует байткод в машинный код, представляющий собой цепочку вызовов скомпилированных сервисных процедур. Тех самых, что в интерпретаторе байткода отвечают за выполнение каждого опкода.

Но Atakua не выжал из интерпретаторов байткода всю скорость которая возможна. Так что эта статья - туториал: как написать интерпретатор байткода, который может обгонять JIT/AOT-компиляцию по скорости. Интересно? Читайте дальше!

Бенчмарк прилагается. Будет немного хардкора и ни одной сгенерированной нейросетью картинки!

Читать далее
Total votes 93: ↑90 and ↓3+108
Comments99

Эволюция архитектур нейросетей в компьютерном зрении: классификация изображений

Level of difficultyMedium
Reading time24 min
Views3.3K

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

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

Классификация изображений
Total votes 6: ↑5 and ↓1+5
Comments1

Пространство двумерного времени

Reading time6 min
Views17K

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

Понятно от чего так и зачем — мозг эволюционировал и родился в гравитации, но речь не об этом.

Говорят, есть ещё четвертое недо‑ или пере‑ измерение — время. Его мы воспринимаем ещё более направленным и постоянно в нём движемся.

В попытках порассуждать о восприятии только в трёхмерном пространстве, можно предположить о том, что в одномерном пространстве мы тоже мыслим, и привести в качестве примера как раз время. Но пространство предполагает возможности покоя и движения вдоль измерений в любом направлении (даже если измерение направлено в восприятии, например, гравитацией). С движением обратно во времени у нас всё сложно, с остановкой времени — ещё гораздо сложнее. Но пока закроем на это г̶л̶а̶з̶а̶ мозг и предположим, что ок — у нас есть в восприятии примеры трехмерного и одномерного (время) пространств. Но как быть с двумерным? Можете себе представить 2 разных ортогональных друг другу направления времени? Я — нет 🙂

Читать далее
Total votes 23: ↑20 and ↓3+26
Comments67

Собираем бюджетный домашний NAS на 14 ТБ

Level of difficultyMedium
Reading time13 min
Views87K


Начав заниматься фотографией, я быстро ощутил нехватку места на компьютере. Фотографии в RAW имеют большой вес, а про видео говорить ещё страшнее. Решение проблемы очень простое — собрать NAS.

О моём опыте сборки бюджетного NAS на 14 ТБ я напишу далее в статье.
Читать дальше →
Total votes 140: ↑139 and ↓1+171
Comments264

Разбор SAM2 через колено в голову или революция в разметке видео

Level of difficultyEasy
Reading time7 min
Views2.2K

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

Оригинальную SAM мы используем для разметки в достаточно промышленных масштабах (в том числе и для видео), и потому пройти мимо препарирования SAM2 было невозможно, но так как модель уже по верхам разобрали в тг-каналах, пейпер хорош, а то, что модель феноменальна - понятно без слов, то я постараюсь поглубже разобрать подготовку датасета/разметку и саму модель именно на сложных примерах с моими комментариями.

Легкое чтиво и много гифок — самое то для бодрого старта понедельничка!

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

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

Level of difficultyEasy
Reading time6 min
Views38K

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

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

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

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

Level of difficultyMedium
Reading time9 min
Views20K

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

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

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

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

Что вы знаете о символьном программировании?

Level of difficultyMedium
Reading time15 min
Views17K

Кликбейтный заголовок, риторический вопрос и обещание раскрыть тайну! Не самый лучший набор, но нормального названия для статьи мне в голову не пришло. Что же здесь все таки будет? Речь пойдет о реализации символьного программирования в Wolfram Language (WL). Я не буду рассказывать про отличия от других парадигм. А также здесь точно не будет общих определений. Вместо этого я попытаюсь ответить на несколько вопросов исходя из своего личного опыта и наблюдений.

Внимание! Я не математик и не знаю haskell и lisp! И буду рад если меня поправят настоящие математики, которые с ними знакомы.

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

Распознавание речи (транскрибация) по аудиозаписям диалогов. Whisper. Личный опыт

Reading time5 min
Views15K

Распознаем речь по аудиозаписям диалогов сотрудников и клиентов.
Сохраняем по разным дорожкам, в тексте и с таймингом.
Модель Whisper, работаем в Colab.
Личный опыт.

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

Определение области коллизии

Level of difficultyMedium
Reading time15 min
Views7.8K

Поиск контактных точек коллизии

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

Давайте же посмотрим как это сделать!

Поехали
Total votes 48: ↑48 and ↓0+48
Comments13

SectorC: компилятор Си в пределах 512 байт

Level of difficultyMedium
Reading time9 min
Views20K

SectorC (github) – это компилятор Си, написанный на ассемблере x86-16 и умещающийся в загрузочный сектор 512 байт машины x86. Он поддерживает достаточно обширную функциональность Си для создания реальных и интересных программ, являясь при этом, пожалуй, самым миниатюрным компилятором Си из когда-либо написанных.
Читать дальше →
Total votes 107: ↑105 and ↓2+148
Comments45

Как жили наши предки 400 лет назад? Создание базы данных населения XVII века по южным уездам России

Reading time6 min
Views8.6K

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

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

Как всё начиналось.

Привет! Меня зовут Дмитрий и вот уже более 10 лет я изучаю историю южных уездов России XVII века. Территориально – это современные Белгородская, а также соседние Воронежская, Курская, Липецкая и другие области. Населены они были тогда так называемыми служилыми людьми – они получали здесь в качестве служебного жалования земельные наделы, которые сами и обрабатывали. В XVIII веке их потомки стали однодворцами, а затем государственными крестьянами. Большая часть населения Курской, Воронежской и соседних губерний XIX века происходят из тех самых служилых людей XVI–XVII веков.

Продолжим?
Total votes 39: ↑38 and ↓1+56
Comments13

ChatGPT как инструмент для поиска: решаем основную проблему

Reading time40 min
Views120K

Вышедшая чуть больше месяца назад ChatGPT уже успела нашуметь: школьникам в Нью-Йорке запрещают использовать нейросеть в качестве помощника, её же ответы теперь не принимаются на StackOverflow, а Microsoft планирует интеграцию в поисковик Bing - чем, кстати, безумно обеспокоен СЕО Alphabet (Google) Сундар Пичаи. Настолько обеспокоен, что в своём письме-обращении к сотрудникам объявляет "Code Red" ситуацию. В то же время Сэм Альтман, CEO OpenAI - компании, разработавшей эту модель - заявляет, что полагаться на ответы ChatGPT пока не стоит.

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

Погрузиться с головой →
Total votes 96: ↑96 and ↓0+96
Comments51

Заблуждения программистов о времени

Reading time12 min
Views75K

Музей-скансен эпохи Средневековья в Дании в режиме обычной работы (слева) ставит целью воссоздать повседневную жизнь города на стыке XIV и XV веков. Для съёмок фильма (справа) он «погрязнел»

Для киносъёмок в музей под открытым небом Middelaldercentret внесли несколько изменений. Вместо аккуратной каменной улицы развели неприятную кашицу из грязи, не самые роскошные стеклянные окна прикрыли досками и развесили везде выцветшее тряпьё. Здания как следует измазали чем-то коричневым, кое-где зачем-то перемешав субстанцию с соломой. В случайное здание воткнули факел, а не попытались изобразить лучину или фонарь.

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

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

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

Заблуждение 1. В сутках 24 часа или 86 400 секунд


Иногда и кое-где стрелки часов переводят, создавая сутки длиной в 23 и 25 часов — всё очевидно. Будет неплохо углубиться в случаи поэкзотичней.
Читать дальше →
Total votes 152: ↑145 and ↓7+177
Comments313

Бесполезный и красиво ужасный язык программирования ALLang

Reading time12 min
Views5.7K

Примерно год назад я писал язык программирования под названием ALLang. Расшифровка его звучит так: Another LISP Language, что незамысловато даёт понимание его второсортности. Тем не менее, таковой язык всё же предлагает интересные особенности в своей реализации со стороны эзотерических языков.

Читать далее
Total votes 16: ↑14 and ↓2+19
Comments9

Квантовые компьютеры: без математики и философии

Reading time13 min
Views33K

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

Первое и самое главное, что нужно знать - квантовые компьютеры не имеют ничего общего с обычными. Квантовые компьютеры по своей природе - аналоговые, там нет бинарных операций. Вероятно, вы уже слышали про Кубиты, что у них есть состояние 0, 1 и 0-1 одновременно, и благодаря этому вычисления выполняются очень быстро: это заблуждение. Кубит - это магнит (обычно атом или электрон), подвешенный в пространстве, который может вращаться по всем трем осям. Собственно, вращение магнита в пространстве - это и есть операции квантового компьютера. Почему это может ускорить вычисления? Было очень сложно найти ответ, но самые стойкие читатели увидят его в конце статьи. Начнем разоблачения.

Читать далее
Total votes 77: ↑71 and ↓6+82
Comments95

Шахматы и вопрос разумности больших языковых моделей

Reading time23 min
Views11K


Масштабирование больших языковых моделей (LLM) является захватывающей темой, поскольку рассматривается как один из лучших кандидатов на пути к ИИ человеческого уровня. Уже сейчас LLM могут отвечать на вопросы, генерировать реалистичные статьи и поддерживать, казалось бы, осмысленный разговор на широкий круг тем. Некоторые исследователи ИИ даже утверждают, что LLM возможно уже могут «слегка обладать сознанием», а журналисты выпускают статьи вроде «роботы захватят весь мир» с картинками терминаторов. Однако, скептики возражают, что большинство таких моделей — это просто большая ассоциативная память, без истинного понимания реальности и неспособная к определенным типам задач. Одна из таких задач, которая привлекла мое внимание — игра в шахматы. В то время как специализированные шахматные движки давно обыгрывают чемпионов мира, даже очень большие языковые модели, такие как GPT-3 с сотнями миллиардов параметров едва справляются с такой простой задачей как мат в один ход. А с такими способностями к стратегии, эти модели едва ли справятся с завоеванием мира. Поэтому как шахматист со стажем и по совместительству разработчик нейросетей я решила попробовать устранить этот недостаток.
Читать дальше →
Total votes 70: ↑68 and ↓2+90
Comments50

Пишем на Rust расширение для SQLite, чтобы научить его работать с файлами Excel

Reading time11 min
Views7.1K

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

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

Исходный код на GitHub

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

Так все же, насколько быстры каналы в Linux?

Reading time26 min
Views23K

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

Читать далее
Total votes 77: ↑72 and ↓5+86
Comments31
1
23 ...

Information

Rating
6,312-th
Location
Винница, Винницкая обл., Украина
Date of birth
Registered
Activity