Pull to refresh
0
Alexander S.@rounderread⁠-⁠only

Data scientist

Send message

Распределённое обучение с PyTorch на кластере для тех, кто спешит

Level of difficultyMedium
Reading time14 min
Reach and readers11K

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

В качестве инструмента для запуска задач рассматриваются torchrun и MPI.

Читать далее

Как защитить свой VDS сервер: 53 000 попыток взлома за 5 дней

Level of difficultyMedium
Reading time23 min
Reach and readers44K

Как защитить свой VDS сервер: 53 000 попыток взлома за 5 дней

Представьте себе: вы арендовали скромный VDS, чтобы поэкспериментировать. Ничего грандиозного — пара тестовых сайтов, простенький веб-сервер на nginx, пара скриптов в cron для автоматизации рутины, SSH для удалённого доступа. Обычная песочница для разработчика, никому, казалось бы, не интересная. Сервер тихо живёт своей жизнью где-то в облаке, отдаёт странички, выполняет задачи, ждёт ваших команд. Вы даже не подозреваете, что за этой тишиной уже разворачивается настоящая цифровая охота.

За два года работы в технической поддержке облачного хостинга я видел множество взломов, помогал клиентам с восстановлением серверов. Видел всё: от примитивных майнеров до полностью стёртых проектов без бэкапов. Сейчас я работаю инженером технической поддержки в компании CleverData (входит в холдинг LANSOFT).

Однажды, ради чистого любопытства, я решил заглянуть в логи свежеиспечённого VDS, созданного всего пять дней назад...

Читать далее

Бутстреп и А/Б тестирование

Reading time10 min
Reach and readers98K

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

Читать далее

А/Б тестирование на маленьких выборках. Построение собственного критерия

Reading time8 min
Reach and readers14K

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

Читать далее

Линеаризация: зачем и как укрощать ratio-метрики в A/B-тестах

Level of difficultyMedium
Reading time12 min
Reach and readers48K

Привет, Хабр! В прошлой статье я указал, что в A/B-тестах используются три основных типа метрик, а именно пользовательские конверсии, средние метрики пользователей и ratio-метрики. К последним обычно относят средний чек, CTR баннера, среднюю длину сессии и др. Такие метрики имеют ограничения при оценке стандартными статистическими критериями и общую особенность определения в контексте экспериментов.

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

Читать далее

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

Level of difficultyMedium
Reading time11 min
Reach and readers3.2K

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

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

Читать далее

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

Reading time8 min
Reach and readers8.6K

Всем привет!

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

Читать далее

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

Reading time24 min
Reach and readers5.1K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time62 min
Reach and readers50K

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

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

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

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

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

Level of difficultyEasy
Reading time8 min
Reach and readers52K

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

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

Дисклеймер:

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

Читать далее

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

Reading time3 min
Reach and readers12K

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

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

Читать далее

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

Reading time13 min
Reach and readers14K

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

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time16 min
Reach and readers6.3K

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

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

Читать далее

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

Reading time18 min
Reach and readers20K

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

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

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

Читать далее

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

Reading time22 min
Reach and readers40K

Всем привет!

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

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

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

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

Читать далее

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

Reading time9 min
Reach and readers32K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time6 min
Reach and readers41K

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

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

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

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

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

Level of difficultyEasy
Reading time9 min
Reach and readers31K

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

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

Читать далее

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

Reading time30 min
Reach and readers612K

Всем привет!


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


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


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


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

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

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

Reading time3 min
Reach and readers15K

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

AmneziaFree.  Начало

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

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

Читать далее

Information

Rating
Does not participate
Location
Россия
Registered
Activity