Search
Write a publication
Pull to refresh
-2
0.1
Send message

YARL: как Яндекс построил распределённый Rate Limiter с нулевым влиянием на время ответа сервисов

Reading time14 min
Views32K

Yandex Rate Limiter (далее просто YARL) — это сервис лимитирования нагрузки для распределённых сервисов. Его особенность в том, что он способен работать с миллионами квот, имея при этом очень низкие накладные расходы на проверку квоты. Если совсем кратко, это система распределённых Leaky Bucket'ов, с помощью которых можно ограничивать разные величины, связанные со временем: скорость передачи данных по сети, запросы в секунду и т. п.



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

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

Разработка Adblock Radio

Reading time21 min
Views20K


tl;dr: Adblock Radio распознаёт аудиорекламу с помощью машинного обучения и Shazam-подобных техник. Основной движок с открытым исходным кодом: используйте его в своих продуктах! Можно объединить усилия для поддержки большего количества радиостанций и подкастов.

Мало кому нравится слушать рекламу на радио. Я запустил проект AdblockRadio.com, чтобы слушатели могли пропускать рекламу на своём любимом интернет-радио. Алгоритм опубликован с открытым исходным кодом, а в этой статье описывается, как он работает.

Adblock Radio уже протестировали на реальных данных более 60 радиостанций в семи странах. Он также совместим с подкастами и работает довольно хорошо!
Читать дальше →

Запускаем PostgreSQL в Docker: от простого к сложному

Level of difficultyEasy
Reading time12 min
Views643K

О простых и продвинутых способах запуска PostgreSQL в Docker: добавляем healthcheck, ставим на мониторинг, настраиваем параметры.

Читать далее

ГАР БД ФИАС или очень полная БД ФИАС

Reading time6 min
Views26K

01.06.2020 ИФНС опубликовала новый формат выгрузки данных
17.12.2020 Мягко намекнула, что в 2021 будет использоваться только он
01.09.2021 Это свершилось: теперь просто "полная БД ФИАС" перестала обновляться и требуется использовать ГАР БД ФИАС

Частично импортируем ГАР БД ФИАС в MySQL на PHP.

Читать далее

Выполняем глубокое обучение быстро при помощи Fast AI

Reading time5 min
Views12K

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

И всё же, существует инструмент, позволяющий легко совершить «быстрый старт» и опробовать нейронные сети в деле самостоятельно – это fast ai. Вообще, fast ai – это прежде всего группа исследователей, занимающихся вопросами искусственного интеллекта и глубокого обучения в частности, которая выпустила одноимённую библиотеку в свободное пользование в 2018 году. Если говорить простыми словами – fast ai представляет собой надстройку над упомянутым выше фреймворком pytorch и упрощает работу с ним, делает это быстрее. Отсюда и слово «быстро» в названии статьи.

Пожалуй, перейдём к практике и покажем, насколько просто работать с fast ai на простом примере задачи классификации изображений – постараемся обучить нейронную сеть различать две модели автомобильной марки Subaru: Impreza и Legacy. Как и обычно, в первую очередь выполняем установку библиотеки, выполнив в консоли команду:

Читать далее

Парсим базу юриков ФНС (велосипедостроение с xml, csv, SQLite и Питоном)

Reading time7 min
Views9K

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

Вводная

Что хотим сделать: взять данные по юридическим лицам (ЮЛ) РФ за 2019 год (идентификаторы ЮЛ: наименование и ИНН(ЮЛ), оборот, расход) и положить в SQLite.

Читать далее

Kedro — ключ к модульной Data Science

Reading time8 min
Views6.5K

Kedro — фреймворк модульного кода в Data Science. С его помощью вы можете создавать проекты по шаблону, настраивать конвейер в YAML, делить его на части, документировать проект — и это далеко не всё. Материалом о работе с Kedro делимся к старту курса по Data Science.

Читать далее

Как классифицировать данные без разметки

Reading time7 min
Views9.5K

Пользователи iFunny ежедневно загружают в приложение около 100 000 единиц контента, среди которого не только мемы, но и расизм, насилие, порнография и другие недопустимые вещи. 

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

Как мы это в итоге сделали — расскажу под катом на наглядном примере. Статья рассчитана на тех, кто знаком с Python (при этом необязательно разбираться в Data Science и Machine Learning).

Читать далее

Пять лучших киберпанк-аниме

Reading time7 min
Views95K

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

И всё же в обоих этих статьях огромный массив японского киберпанка лишь упоминался. А ведь он во многих отношениях даже больше и значимее, чем на родине жанра, в США. Киберпанк не просто так получил массу японских черт ещё у американских авторов. Сами японцы уже в 80-е буквально влюбились в новый жанр, и принялись в нём активно работать. Однако если киберпанк в США – это преимущественно фильмы и книги, то в стране Восходящего Солнца его основными воплощениями стали манга и аниме, комиксы и мультипликация с японской спецификой.


За сорок прошедших с начала 80-х лет японцы сделали десятки, если не сотни, аниме-произведений в жанре киберпанка. И некоторые из них прочно вошли в золотой фонд жанра. Списков топ-10 и так далее в сети хватает – но многие из них крайне поверхностны, кратки и написаны «для галочки» без особого вникания в предмет.
Так что почему бы не попробовать сделать свой вариант, копнув чуть глубже?

Прунинг нейронных сетей (фитнес бывает полезен не только людям)

Reading time15 min
Views15K

Всем привет! В данном посте я хотел бы рассказать про весьма интересную и важную деятельность в области глубокого обучения как прореживание (прунинг) нейронных сетей. На просторах сети есть неплохие материалы по данной теме, например, статья на Хабре трехлетней давности.

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

Поехали!

Читать далее

PlanetScale — Serverless SQL база данных для разработчиков

Reading time4 min
Views5.3K

Этим летом я по уши увяз в serverless-тематике и даже решил переписать один из своих pet-проектов целиком на serverless. Движок для сайта, поддерживающий бессерверные вычисления и вендор для кэширующей прослойки были найдены быстро - NextJS (с деплоем на Vercel) и Upstash с оплатой за каждую отдельную операцию и байт в хранилище. Камнем преткновения стал выбор провайдера для DBaaS. Мне бы хотелось реализовать всё таким образом, чтобы у проекта было две разных базы данных - для разработки и для production, и мне совсем не хотелось запускать базу данных для разработки на локальной машине. Поверхностное ознакомление с DBaaS провайдерами показало, что за дополнительную базу данных пришлось бы платить вдвое больше несмотря на то, что она использовалась бы дай Бог пару раз в неделю. И я ушёл в просмотр докладов и презентаций на YouTube и это именно тот момент когда я открыл для себя PlanetScale. Хочу поделиться своим открытием с вами.

Читать далее

Аналитика vs моделирование. Задача по теории вероятностей

Reading time5 min
Views7.4K

В ящике 4 белых 10 черных шаров. Из него наудачу вынимают шар, фиксируют его цвет и возвращают шар назад в ящик. Назовем «белым пулом» любую максимальную цепочку подряд вынутых белых шаров. Найти математическое ожидание количества «белых пулов» при извлечении из ящика 20 шаров.

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

милости просим наставить на путь истинный.

DeDLOC: обучаем большие нейросети всем миром

Reading time7 min
Views12K


Как показывает опыт последних лет, самые интересные результаты в deep learning получаются при использовании больших нейросетей, обученных на массивах неразмеченных данных. Правда, для создания этих моделей нужен суперкомпьютер с десятками или сотнями мощных видеокарт, а также быстрым соединением между серверами. Но что делать, если таких ресурсов нет, а в открытом доступе хорошей модели под вашу задачу не нашлось?

Сегодня я расскажу про технологию, которая позволяет учить нейросети, объединяя через интернет вычислительные мощности энтузиастов из любой точки мира. В её основе лежит совместная научная работа Yandex Research, Hugging Face, студентов ШАД, ВШЭ и МФТИ, а также профессора Университета Торонто. Технология уже получила боевое крещение в ходе реального эксперимента, подробно описанного ниже. В конце статьи вы узнаете, как поставить такой эксперимент самостоятельно — модель и код доступны всем желающим.

Претрейн для всех, и пусть никто не уйдёт обиженным


За последние несколько лет во многих областях deep learning (например, в обработке естественного языка) стала популярной идея self-supervised learning. Оказалось, что для получения полезных в целевой задаче представлений не нужна большая размеченная выборка. Достаточно обучить модель на какой-то простой сигнал, построенный из неразмеченных данных, которых чаще всего в достатке. В частности, известные многим архитектуры BERT, GPT и языковая модель YaLM обучаются именно так.
Читать дальше →

Защита данных пользователя: как добавить поддержку правил CCPA и GDPR в мобильное приложение

Reading time16 min
Views5.1K

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

Поэтому приватность и безопасность данных сейчас сложно переоценить. В большинстве IT-компаний это понимают и работают над собственными инструментами защиты (Apple, например, на каждой презентации делает особый акцент). Страны, в свою очередь, регулируют всё это специальными законами.

Основными из них являются Европейский General Data Protection Regulation (GDPR) и, принятый в Калифорнии, California Consumer Privacy Act (CCPA). Сегодня подробно разберёмся, что это за законы, чего требуют и как внедрить их поддержку в свой сервис, сайт или мобильное приложение.

Это первая статья из цикла про приватность на iOS, где поговорим не только про законы, но и про изменения в политике App Store, AppTracking Transparency и IDFA.

Читать далее

Cross-Fold Generation или как генерировать длинные последовательности с ruGPT-3

Reading time11 min
Views3K

RuGPT-3 - AI-модель для русского языка, которая умеет писать тексты. Она может генерировать истории, стихи и новости, которые люди не могут отличить от настоящих. Похожая модель лежит в основе Балаболы от Яндекса. В этой статье мы описываем способ генерации длинных текстов без потери смысла на примере модели ruGPT-3 Large. Мы назвали этот метод Cross-Fold Generation. С ним можно генерировать последовательности более 2000 токенов с сохранением идеи текста.

Читать далее

Как организовать разметку данных для машинного обучения: методики и инструменты

Reading time17 min
Views11K

Если бы у data science существовал собственный зал славы, отдельную его часть нужно было бы посвятить разметке. Памятник отвечающим за разметку выглядел бы как атлант, держащий огромный камень, символизирующий их тяжелый и скрупулезный труд. Собственной стелы заслужила бы и база данных изображений ImageNet. За девять лет её контрибьюторы вручную разметили более 14 миллионов изображений. Даже представлять этот труд утомительно.

Хотя разметка и не является особо интеллектуальным трудом, она всё равно остаётся серьёзной проблемой. Разметка — неотъемлемый этап предварительной обработки данных для контролируемого обучения. Для этого стиля обучения моделей используются исторические данных с заранее заданными целевыми атрибутами (значениями). Алгоритм может находить целевые атрибуты, только если их указал человек.

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

Как получить высококачественный размеченный набор данных и не поседеть в процессе работы? Главной трудностью являются выбор ответственных за разметку, оценка необходимого для неё времени и подбор наиболее подходящих инструментов.
Читать дальше →

UUID версии 7, или как не потеряться во времени при создании идентификатора

Reading time7 min
Views42K

В течение многих лет я противостоял засилью UUID как ключей в базах данных, но со временем и практикой до меня дошло. Они действительно удобны, когда речь идёт о распределённых системах. Генерировать новый идентификатор на разных концах планеты не так-то просто. Создание псевдослучайных идентификаторов решает эту проблему.

Хотя, подобные решения, не всегда хороши. В отличие от обыкновенных цифровых значений, которые легко кешировать и сортировать, UUID не так гибки в использовании. UUID версии 7 предназначен как раз для того, чтобы разобраться с подобными проблемами.

Добро пожаловать в мир сортированых UUID

HuggingArtists | Генерируем текст песен с трансформером за 5 минут

Reading time7 min
Views18K

image


В этой статье я расскажу о том, как создавался проект HuggingArtists и что у него под капотом.
Мне будет очень приятно, если вы поставите сразу звезду в репозитории:
GitHub stars

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

Классификатор обращений пользователей (1C + python)

Reading time8 min
Views5.2K

1. Описание задачи

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

Читать далее

Как улучшить распознавание русской речи до 3% WER с помощью открытых данных

Level of difficultyEasy
Reading time5 min
Views9K

Меня зовут Николай, когда в 2009 году я защищал диссертацию по распознаванию речи, скептики мне говорили, что слишком поздно, так как Microsoft и Google уже “всё сделали”. Сейчас в SberDevices я обучаю модели распознавания речи, которые используются в семействе виртуальных ассистентов Салют и других банковских сервисах. Я расскажу, как обучил модель распознавания речи, используя Common Voice и недавно открытый датасет Golos. Ошибка распознавания составила от 3 до 11 % в зависимости от типа тестовой выборки, что очень неплохо для открытой модели.

Не так давно наша команда подготовила и опубликовала общедоступный датасет Golos. Почему встал вопрос об обучении и публикации акустической модели QuartzNet? Во-первых, чтобы узнать, какую точность достигает система распознавания речи при обучении на новом датасете. Во-вторых, обучение само по себе ресурсоёмкое, поэтому сообществу полезно иметь в открытом доступе предобученную модель на русском языке. Полная версия статьи опубликована на сайте arxiv.org и будет представлена на конференции INTERSPEECH2021

Читать далее

Information

Rating
5,829-th
Registered
Activity