Как стать автором
Поиск
Написать публикацию
Обновить
0
Alexander S. @rounderread⁠-⁠only

Data scientist

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

Оптимизируем Shuffle в Spark

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

Привет, Хабр! Меня зовут Сергей Смирнов, я аналитик в продукте CVM в X5 Tech. Я занимаюсь разработкой инструмента анализа A/B экспериментов. Мы ежедневно считаем десятки метрик для сотен экспериментов на десятки миллионов клиентов –- это терабайты данных, поэтому наш инструмент разработан на Spark.

В последнее время мы заметили, что существенную часть времени работы наших Spark-приложений занимает обмен данными (Shuffle) между исполнителями. В этой статье я расскажу о том, какие оптимизации помогли нам избавиться от самых тяжёлых операций Shuffle. Речь пойдёт не только о BroadcastJoin, но и о двух других неочевидных методах – предварительное репартицирование и бакетирование.

Читать далее

Параллельные вычисления в Apache Spark

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

Всем привет!

Иногда кажется, что для решения проблемы недостаточно простого выполнения расчётов в Spark и хочется более эффективно использовать доступные ресурсы. Меня зовут Илья Панов, я инженер данных в продукте CVM5 (Customer Value Management торговой сети Пятёрочка) группы X5, и хочу поделиться некоторыми подходами параллельных вычислений в Apache Spark.

Читать далее

Temporal Fusion Transformer: улучшение прогнозирования в ритейле с минимальными затратами

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

Всем привет! Меня зовут Дмитрий Поляков, я работаю аналитиком данных в команде ad-hoc аналитики X5 Tech. В этой статье мы хотели бы рассмотреть задачу прогнозирования, которая является чрезвычайно важной задачей в ритейле.

Мы детально рассмотрим основные преимущества и архитектурные особенности модели Temporal Fusion Transformer (TFT), наш подход к использованию этой модели в задаче прогнозирования спроса, и как нам удалось увеличить точность прогнозов в среднем на 7%, затратив при этом минимальные усилия.

Также эта статья будет полезна и тем, кто хочет глубже понять принципы работы TFT, изучить её применение в библиотеке Darts и решить задачу прогнозирования для множества многомерных временных рядов.

Читать далее

Теория мертвого 2GIS

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

Выбрали хороший ресторан (врача, СТО, юриста, риэлтора) по отзывам и высокому рейтингу в 2GIS, а оказалось, что там если не ужас-ужас-ужас, то как-то средне, явно не похоже на то, что вы бы ожидали от рейтинга 4.8 или даже 5 баллов. Знакомо?

Все знают, что в 2GIS могут быть накрученные фейковые отзывы (а их там всего 10-20 на весь город или там 99% фейковых? Есть ведь разница!), но не все умеют их легко опознавать. У 2gis, похоже, еще нет антифрода (что вполне нормально для пет-проекта, который делают веб-программисты в свободное время), но вы теперь можете различать ботов-зомби-инопланетян через мой антифрод af2gis, и выбирать себе те заведения, которые нравятся людям, а не ботам.

Статья будет длинная (она про все подряд о чем я думал и с чем разбирался последнее время), но тех, кто ее прочитает ждет фантастическая награда! Они смогут ходить в самые лучшие заведения города, их будут обслуживать самые красивые и шустрые официантки, еда будет очень вкусной, порции огромными и все это за довольно разумные деньги! Такие места есть, живые люди их любят и ставят им высокие оценки, а боты - любят другие заведения. Нужно только надеть волшебные очки чтобы увидеть, какие заведения хвалят люди, а какие - боты.

Прочитать и получить волшебные очки!

«Кем Вы видите себя через 5 лет», или HRско-русский разговорник

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

Вас спрашивали «Кем Вы видите себя через 5 лет»? Меня тоже. За двадцать пять лет в IT я понял, зачем они так делают. Понял – это значит, что я «привык и научился пользоваться» (С). Но «неприятно удивлять» они меня не перестали.

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

Дисклеймер:

Я не призываю врать или «играть по правилам» HR. Я делюсь практической схемой подачи опыта и скиллов, чтобы минимизировать отказы «по софтам». В моем случае она работает.

Читать далее

Как исправлять ошибки в Git, не оставляя улик

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

Как же иногда хочется закинуть коммиты «Remove debug log», «fix» или «fix fix fix». Такие коммиты как грязные носки под кроватью: их не видно, пока не придёт ревьюер с пристальным взглядом или, что еще хуже, потенциальный работодатель, решивший посмотреть на ваш профиль github.

К счастью, Git предлагает два супер-инструмента для того, чтобы история коммитов выглядела так, будто ты всегда знаешь, что делаешь: git commit --fixup и git rebase --autosquash. И сегодня мы разберем на практике как это применять.

Читать далее

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

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

📌 градиент обреченный

Хочу показать, как создать мультиязычный параллельный корпус и книги при помощи моего пет-проекта.

Для примера возьмем 10 редакций "Мастера и Маргариты" Михаила Булгакова (ru, uk, by, en, fr, it, es, de, hu, zh). Сначала выровняем девять переводов с оригиналом, а затем выровняем все вместе. Получим параллельный корпус на 10 языках и много красивых книг. Приступим.

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

Читать далее

Пишем свой PyTorch на NumPy. Часть 1

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

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

В этой статье мы реализуем собственную библиотеку машинного обучения на NumPy!

Читать далее

50 оттенков линейной регрессии, или почему всё, что вы знаете об A/B тестах, помещается в одно уравнение

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

Всем привет! A/B тестирование уже давно стало стандартом в проверке гипотез и улучшении продуктов в X5. Но, как ни странно, многие из «модных» техник, которые применяются в A/B тестировании, на самом деле, не что иное, как вариации старой доброй линейной регрессии. 

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

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

Читать далее

Amazon, Microsoft, Facebook, Tesla, Lyft — история поиска работы мечты, или «Вредные» советы для карьерного развития

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

Всем привет!

Я давно хотел поделиться советами и своим опытом к прохождению интервью и развитию карьеры. Пока думал про заголовок, вспомнилась книга из детства - "Вредные советы". Но в Отличие от Григория Остера, мои советы могут вам пригодится, они Полезные.

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

Возможно вы найдете много оЧепяток. но, к сожалению, грамматика не мой конек, не то, что хождение по собеседованиям, где я как "рыба в воде".

Прежде чем перейти к компаниям типа Amazon и Microsoft, я хочу начать с простых примеров.

Читать далее

Продвинутое использование библиотеки PYTORCH: от подготовки данных до визуализации

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

PyTorch — современная библиотека машинного обучения с открытым исходным кодом, разработанная компанией Facebook. Как и другие популярные библиотеки, такие как TensorFlow и Keras, PyTorch позволяет использовать вычислительную мощность видеокарт, автоматически составлять граф вычислений, дифференцировать и считать его. Но, в отличие от предыдущих библиотек, обладает более гибким функционалом, благодаря тому, что использует динамический граф вычислений.

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

Для начала загрузим нужные библиотеки:

Читать далее

'Attention is all you need' простым языком

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

Некоторое время назад я повесил здесь статью с кратким обзором техник векторизации, и мне показалось логичным продолжить эту тему попыткой разобраться с тем, в какую сторону NLP шагнула дальше, как научилась оцифровывать смысл: выбор пал на механизм attention. Мы с коллегой-переводчицей перевели и переработали Youtube-ролик 'Attention is all you need explained' в статью, которую и представляем вашему вниманию.

Заранее прошу прощения за светофор в картинках: по-другому черный фон из скриншотов убрать не получалось :).

В 2017 году, в статье Attention is all you need, исследователи из Google представили архитектуру Transformer. Новизна Transformer заключалась в использовании self-attention (досл. с англ. — самовнимание, внутреннее внимание) — механизма, благодаря которому модель может сосредоточиться не на всех сразу, а на наиболее важных элементах входной последовательности...

Читать продолжение

Моржовый оператор := в Python

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

Python постоянно развивается: с каждой новой версией появляются различные оптимизации, активно внедряются новые инструменты. Так, в Python 3.8 появился моржовый оператор (:=), который стал причиной бурных споров в сообществе. О нем и пойдет речь в этой статье.

А начнем мы с истории о том, как моржовый оператор довел Гвидо ван Россума, создателя Python, до ухода с должности "великодушного пожизненного диктатора" проекта по разработке языка.

Читать далее

Открытый курс машинного обучения. Тема 4. Линейные модели классификации и регрессии

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

Всем привет!


Сегодня мы детально обсудим очень важный класс моделей машинного обучения – линейных. Ключевое отличие нашей подачи материала от аналогичной в курсах эконометрики и статистики – это акцент на практическом применении линейных моделей в реальных задачах (хотя и математики тоже будет немало).


Пример такой задачи – это соревнование Kaggle Inclass по идентификации пользователя в Интернете по его последовательности переходов по сайтам.


UPD 01.2022: С февраля 2022 г. ML-курс ODS на русском возрождается под руководством Петра Ермакова couatl. Для русскоязычной аудитории это предпочтительный вариант (c этими статьями на Хабре – в подкрепление), англоговорящим рекомендуется mlcourse.ai в режиме самостоятельного прохождения.


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

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

Как мы создавали AmneziaFree, и боролись с интернет-цензурой в разных странах

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

Всем привет! На связи команда Amnezia. И если вы давно за нами следите, вы помните как мы были очень маленьким стартапом, который делал первые шаги по созданию более менее современного приложения с open source кодом, чтобы создавать VPN на собственном сервере. Мы понимали что подобное решение нужно, но еще не понимали на сколько нужно и что именно мы будем делать дальше.

AmneziaFree.  Начало

Наверное, мы бы и дальше  оставались просто разработчиками self-hosted клиента, если бы не массовая блокировка общественно значимых сайтов весной 2022 в России. Особенно болезненно ощущалась блокировка невероятно популярного Instagram* 

Тогда при поддержке активистов и различных медиа мы взяли самые очевидные инструменты - арендовали у партнеров серверные мощности, взяли за основу open source приложение WireGuard и создали телеграм-бота раздающего конфигурации для каждого пользователя - и уже буквально через месяц, у нас был готов бесплатный сервис для доступа к заблокированным сайтам AmneziaFree. Он стал неожиданно популярным,  практически 250 000 пользователей за короткий промежуток времени получили конфиги с помощью этого бота.  

Читать далее

Он победил LLM RAG: реализуем BM25+ с самых азов

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

Привет, меня зовут Борис. Я автор телеграм канала Борис опять. Периодически мне на глаза попадается что-то интересное и я глубоко в этом закапываюсь. В данном случае это алгоритм поиска BM25+, который победил продвинутые методы векторного поиска на LLM.

Разберемся, что это за зверь и почему он так хорошо работает. В этой статье мы реализуем его на Python с нуля. Начнем с самого простого поиска, перейдем к TF-IDF, а затем выведем из него BM25+.

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

Код доступен в Google Collab.

Читать далее

Пишем GPT в 60 строк NumPy (часть 1 из 2)

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

В этом посте мы начнём реализацию с нуля GPT всего в 60 строках numpy. Во второй части статьи мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
Читать дальше →

Что делает ChatGPT… и почему это работает?

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

То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным "большим языковым моделям" (LLM), так и к ChatGPT).

Читать далее

Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда

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

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

Погнали →

GPT для чайников: от токенизации до файнтюнинга

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

К моему удивлению, в открытом доступе оказалось не так уж много подробных и понятных объяснений того как работает модель GPT от OpenAI. Поэтому я решил всё взять в свои руки и написать этот туториал.

Читать далее
1

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность