Как стать автором
Обновить
136
0
Вадим Марковцев @markhor

Head of Analytics

Отправить сообщение

Красивый двоичный поиск без ветвления

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров15K

Недавно я прочитал пост Алекса Мускара Beautiful Binary Search in D. В нём описывается алгоритм двоичного поиска под названием «алгоритм Шора». Я никогда не слышал о нём и его невозможно загуглить, но увидев алгоритм, я думал только об одном: «он без ветвления». Кто знал, что может существовать двоичный поиск без ветвления? Поэтому я занялся его трансляцией в алгоритм для итераторов C++, не требующий индексации на основе единицы или массивов фиксированного размера.

В GCC он более чем в два раза быстрее, чем std::lower_bound, который сам по себе — очень высококачественный двоичный поиск. Цикл поиска прост, а генерируемый ассемблерный код красив. Меня потрясло, что он существует, но им, похоже, никто не пользуется.
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии8

Умные рисовалки. Бесплатные аналоги MidJourney

Время на прочтение15 мин
Количество просмотров29K


▎Добрый день, дорогие хабражители!


Сегодня должно было выйти продолжение серии Анатомия игры, но у Вселенной оказались свои планы на мой компьютер. С другой стороны, где-то что-то убыло, где-то что-то прибыло. Так же можно сказать и о сегодняшнем объекте нашего внимания.
Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии15

Neural Network Optimization: океан в капле

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров13K

Всех приветствую, меня зовут Антон Рябых, работаю в Doubletapp. Вместе с коллегой Данилом Гальпериным мы написали статью про важный этап в процессе обучения нейронных сетей и получения необходимых нам результатов —  оптимизацию модели. Зачем нужно оптимизировать модель, если и так все работает? Но как только вы начнете разворачивать модель на устройстве, которое будет ее обрабатывать, перед вами встанет множество проблем.

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

Оптимизация моделей направлена на уменьшение размера моделей при минимизации потерь в точности и производительности.

Методы оптимизации

Pruning — устранение части параметров нейронной сети.
Quantization — уменьшение точности обрабатываемых типов данных.
Knowledge distillation — обновление топологии исходной модели до более эффективной, с уменьшенным количеством параметров и более быстрым выполнением.
Weight clustering — сокращение количества уникальных параметров в весах модели.
OpenVino, TensorRT — фреймворки, с помощью которых можно оптимизировать модели.

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии3

Как определить размер выборки для бутстрэпа старым дедовским способом

Время на прочтение13 мин
Количество просмотров10K

Всем привет! Меня зовут Рома Смирнов. Я работаю продуктовым аналитиком в Lamoda. Как и во многих других продуктовых компаниях, решения о том, раскатывать ли новую фичу, принимаются в Lamoda на основе данных, в частности на основе результатов A/B-тестирования.

Бутстрэп — один из популярных методов обработки результатов тестов. В этой статье я расскажу о том, каким образом можно определить размер выборки при расчете результатов A/B-теста с помощью бутстрэпа.

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии6

Self-Supervised Learning. Результаты и основные фреймворки

Время на прочтение4 мин
Количество просмотров3.6K

На протяжении последних 3-х статей мы рассматривали исключительно сами подходы к обучению SSL и не смотрели на качество. Давайте это исправим и сравним методы между собой и с supervised решением. Также глянем на то, какие есть фреймворки, чтобы поднять SSL на своих данных.

Напомню, что это шестая и последняя статья из цикла про SSL в Computer Vision.

Узнать, наконец, чем хорош SSL
Всего голосов 15: ↑14 и ↓1+13
Комментарии2

Приоритизация бэклога. Зачем нужны фреймворки и как работать по ICE — опыт менеджера с 5-летним стажем

Время на прочтение11 мин
Количество просмотров8.7K

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

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

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии2

Шерудим под капотом Stable Diffusion

Время на прочтение10 мин
Количество просмотров32K

Вероятно вы уже слышали про успехи нейросетей в генерации картинок по текстовому описанию.

Я решил разобраться, и заодно сделать небольшой туториал, по архитектуре модели Stable Diffusion. Сегодня мы не будем глубоко погружаться в математику и процесс тренировки. Вместо этого сфокусируемся на применении и устройстве основных компонент: UNet, VAE, CLIP.

Читать далее
Всего голосов 81: ↑81 и ↓0+81
Комментарии11

Кто круче rsync? Интересные алгоритмы для синхронизации данных

Время на прочтение7 мин
Количество просмотров22K

Тридж, автор rsync

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

Если без шуток, то все знают rsync — инструмент для быстрой синхронизации файлов и каталогов с минимальным трафиком, который пришёл на замену rcp и scp. В нём используется алгоритм со скользящим хешем, разработанный австралийским учёным, программистом и хакером Эндрю Триджеллом по кличке Тридж (на фото).

Алгоритм эффективный, но не оптимальный.
Читать дальше →
Всего голосов 61: ↑60 и ↓1+59
Комментарии10

Как избежать 10 частых ошибок в настройке NGINX

Время на прочтение17 мин
Количество просмотров53K


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


  1. Недостаточное количество файловых дескрипторов;
  2. Директива error_log off;
  3. Отсутствие keepalive-соединения с вышестоящими серверами;
  4. Упущение механизмов наследования директив;
  5. Директива proxy_buffering;
  6. Неправильное использование директивы if;
  7. Чрезмерные проверки работоспособности;
  8. Незащищенный доступ к метрикам;
  9. Использование ip_hash, когда весь трафик поступает из одного и того же блока /24 CIDR;
  10. Игнорирование преимуществ вышестоящих групп.
Читать дальше →
Всего голосов 70: ↑70 и ↓0+70
Комментарии3

8 ошибок, из-за которых ты проиграешь в соревновательном Data Science

Время на прочтение8 мин
Количество просмотров16K

Привет, чемпион!

Если ты читаешь этот пост, значит, тебе стало интересно, не допускаешь ли этих ошибок ты?! Почти уверен, что ты допускал эти ошибки хотя бы раз в жизни. Мы не застрахованы от совершения ошибок, такова наша человеческая натура — ошибаться для нас естественно. Однако, я постараюсь уберечь тебя от тех ошибок, которые совершал сам или замечал у других.

Так вышло, что за время участия в чемпионатах по соревновательному анализу данных я достаточно часто бывал в призовых местах. Однако, бывали случаи, когда я лишался призовых по глупости или неосторожности. Рассказываю по порядку.
Читать дальше →
Всего голосов 59: ↑57 и ↓2+55
Комментарии10

PostgreSQL Antipatterns: ударим словарем по тяжелому JOIN

Время на прочтение6 мин
Количество просмотров20K
Продолжаем серию статей, посвященных исследованию малоизвестных способов улучшения производительности «вроде бы простых» запросов на PostgreSQL:


Не подумайте, что я так сильно не люблю JOIN… :)

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


Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии14

Как не надо индексировать

Время на прочтение5 мин
Количество просмотров37K

Развитие происходит по спирали: когда-то люди не умели правильно индексировать, потом (в основном) научились, потом пришли noSQL и все снова забыли знание древних. Что вы будете делать, когда последние из старых DBA отплывут в Валинор?

Снова и снова и сталкиваюсь с полным набором антипаттернов индексирования. Я их перечислю, но! Для каждого антипаттерна есть исключение, когда именно это и стоит делать. Поэтому кликбейтно сформулированное правило верно в 95% случаях, но если вы хотите копнуть глубже, то прочитайте про исключения.

И в конце полезные скрипты для MSSQL, Postgres и MySQL.

Читать далее
Всего голосов 44: ↑44 и ↓0+44
Комментарии25

JavaScript: 2 интересных примера практического использования Intersection Observer API

Время на прочтение20 мин
Количество просмотров14K


Привет, друзья!


На днях мне посчастливилось заниматься решением 2 несложных, но довольно интересных задач на чистом JavaScript (из-за React чуть не забыл, как это делается). В процессе решения этих задач никто не пострадал, напротив, все остались довольны. Поэтому я решил поделиться результатами с сообществом.


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


Введение


Итак, задачи были следующими:


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




  • Реализовать "ленивую" (отложенную, lazy) загрузку медиаресурсов (изображений, аудио и видео), поскольку те же изображения даже после сжатия с помощью gulp-imagemin весили (и весят, потому что они никуда не делись) неприличные 50 Мб и загружались при запуске приложения (больше они себя так не ведут).
Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии19

Практическое руководство по методу максимального правдоподобия

Время на прочтение4 мин
Количество просмотров24K

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

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

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

Читать далее
Всего голосов 9: ↑7 и ↓2+5
Комментарии3

Устройство поисковых систем: базовый поиск и инвертированный индекс

Время на прочтение24 мин
Количество просмотров24K

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

В статье описано устройство поиска, инвертированного индекса и его оптимизаций с отсылками к теории. В качестве подопытного кролика взят Tantivy — реализация архитектуры Lucene на Rust. Статья получилась концентрированной, математикосодержащей и несовместимой с расслабленным чтением хабра за чашкой кофе, осторожно!
Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии6

Ещё 8 правил проектирования API

Время на прочтение10 мин
Количество просмотров18K

Используйте глобально уникальные идентификаторы. Клиент всегда должен знать полное состояние системы. Избегайте двойных отрицаний…

Читать далее
Всего голосов 43: ↑40 и ↓3+37
Комментарии95

Как получить новый сертификат инженера по машинному обучению от Google Cloud

Время на прочтение3 мин
Количество просмотров5.8K
Недавно Google представила новый сертификат, который подтверждает, что его обладатель умеет проектировать, создавать и выпускать модели машинного обучения с использованием облачных технологий Google Cloud — Google Cloud Professional Machine Learning Engineer. Также подразумевается, что сертифицированный инженер знает все проверенные модели и методы машинного обучения.


Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии2

AWS — сколько нужно сервисов, чтобы поднять веб-приложение?

Время на прочтение4 мин
Количество просмотров17K

Так получилось, что до 2020 года я не имел дело с облаками. Когда же, наконец, углубился в эту тему, то немного потерялся от обилия сервисов, предлагаемых в AWS.


Необходимо было создать приложение с такими фичами:


  • Авторизацией через facebook или google.
  • Возможностью загрузки и отображения медиа-файлов.
  • Получением событий с сервера в реальном времени.

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

Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии40

Аккумуляторы против батареек

Время на прочтение3 мин
Количество просмотров98K
Номинальное напряжение щелочных батареек 1.5 вольта, а номинальное напряжение NiMh-аккумуляторов 1.2 вольта, из-за этого многие думают, что аккумуляторы могут не работать в устройствах, предназначенных для работы от батареек. Я изучил, как меняется напряжение на батарейках и аккумуляторах при разрядке в разных режимах.

Для теста были использованы хорошие батарейки Lexman и аккумуляторы, использующие технологию Eneloop — Fujitsu AA 2500 mah и IKEA LADDA AAA 900 mAh.

Читать дальше →
Всего голосов 107: ↑107 и ↓0+107
Комментарии134

Вероятно, хватит рекомендовать «Чистый код»

Время на прочтение13 мин
Количество просмотров174K
Возможно, мы никогда не сможем прийти к эмпирическому определению «хорошего кода» или «чистого кода». Это означает, что мнение одного человека о мнении другого человека о «чистом коде» обязательно очень субъективно. Я не могу рассматривать книгу Роберта Мартина «Чистый код» 2008 года с чужой точки зрения, только со своей.

Тем не менее, для меня главная проблема этой книги заключается в том, что многие примеры кода в ней просто ужасны.
Читать дальше →
Всего голосов 157: ↑147 и ↓10+137
Комментарии427

Информация

В рейтинге
Не участвует
Откуда
Madrid, Madrid, Испания
Дата рождения
Зарегистрирован
Активность