Как стать автором
Обновить
137
0
Арсений Кравченко @Arseny_Info

machine learning engineer

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

Мониторинг ML-систем. «6 лет назад vs сегодня»

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

Шесть лет назад я занимался стартапом FscoreLab, мы разрабатывали ML-системы для кредитного скоринга. Тогда я ещё слыхом не слыхивал о термине MLOps, да я и не уверен, что он вообще существовал. Однако, необходимость определённых практик и процессов, которые сейчас относят к MLOps, стала быстро понятна уже тогда. Один из самых важных уроков того времени - если модель обучить, задеплоить и отправить в свободное плавание, то рано или поздно, постепенно или внезапно, но случится что-то не очень хорошее. Да, сейчас от этого "откровения" хочется зевать - написана тонна книг и статей, запилена куча полезных инструментов, но в то время пришлось собирать систему ML-мониторинга опытным путём из подручных материалов. Состояла она из следующих компонентов:

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

Асинхронный python без головной боли (часть 1)

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

Почему так сложно понять asyncio?

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

Но будь я автором самого толстого в мире учебника по python, я бы рассказывал читателям про асинхронное программирование уже с первых страниц. Вот только написали "Hello, world!" и тут же приступили к созданию "Hello, asynchronous world!". А уже потом циклы, условия и все такое.

Съешь красную таблетку
Всего голосов 135: ↑135 и ↓0+135
Комментарии56

Ультимативный гайд по поиску утечек памяти в Python

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

Практика показывает, что в современном мире Docker-контейнеров и оркестраторов (Kubernetes, Nomad, etc) проблема с утечкой памяти может быть обнаружена не при локальной разработке, а в ходе нагрузочного тестирования, или даже в production-среде. В этой статье рассмотрим причины появления утечек в Python-приложениях, доступные инструменты для отладки и мониторинга работающего приложения, а также общую методику поиска утечек памяти.

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

PyTrace — Time Travel Debugger для Python

Время на прочтение2 мин
Количество просмотров6.9K
Мне часто приходится сталкиваться с отладкой.

Иногда я ставлю точку останова, но понимаю что уже слишком поздно, и надо начинать все сначала.

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

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

Возможно ли лучше понимать запутанный код? А что, если мы сможем понимать такой код, быстрее чем тот, кто его написал?

Встречайте,

PyTrace — это трейсер с возможностями Time-Travel Debugging-а

image
Всего голосов 29: ↑29 и ↓0+29
Комментарии14

Как устроено A/B-тестирование в Авито

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

Всем привет. Меня зовут Данила, я работаю в команде, которая развивает аналитическую инфраструктуру в Авито. Центральное место в этой инфраструктуре занимает А/B-тестирование.


А/B эксперименты — ключевой инструмент принятия решений в Авито. В нашем цикле продуктовой разработки А/B-тест является обязательным этапом. Мы проверяем каждую гипотезу и выкатываем только позитивные изменения.


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


Читать дальше →
Всего голосов 53: ↑48 и ↓5+43
Комментарии35

Я так хотел попасть в программный комитет конференции, и вот я здесь, и что мы будем делать?

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


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

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

Я говорю о работе с нормальными людьми, профессионалами в своём деле, а не в выступлениях. О работе с теми, кто сам подаёт заявку на доклад через форму подачи заявок. О работе с теми, кто на самом деле обеспечивает конференциям приток свежей крови и новых знаний, без которых весь процесс очень быстро выродится.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии15

Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

Время на прочтение25 мин
Количество просмотров1.4M

Регулярные выражения в Python от простого к сложному




Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

Плюс в питоне есть немало регулярных плюшек. Например, re.split может добавлять тот кусок текста, по которому был разрез, в список частей. А в re.sub можно вместо шаблона для замены передать функцию. Это — реальные вещи, которые прямо очень нужны, но никто про это не пишет.
Так и родился этот достаточно многобуквенный материал с подробностями, тонкостями, картинками и задачами.

Надеюсь, вам удастся из него извлечь что-нибудь новое и полезное, даже если вы уже в ладах с регулярками.
Читать дальше →
Всего голосов 99: ↑98 и ↓1+97
Комментарии66

Обнаружение аномалий в данных сетевого мониторинга методами статистики

Время на прочтение9 мин
Количество просмотров31K
Когда наблюдаемых метрик становится слишком много, отслеживание всех графиков самостоятельно становится невозможным. Обычно в этом случае для менее значимых метрик используют проверки на достижение критичных значений. Но даже если значения подобраны хорошо, часть проблем остается незамеченной. Какие это проблемы и как их обнаруживать — под катом.


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

Популяризация науки: лекции российских ученых

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

image


В мире растет число фейковых новостей и все сложнее найти источник правдивой информации. Спрос на достоверность, качество и фактчекинг не пропал, но сложно подружить методологии проверки данных с новостями мейнстрима в эпоху, когда даже серьезные издания гонятся за кликбейтом. Изъеденные недочетами новости политики, экономики, спорта и других сфер начинают раздражать, а не привлекать внимание. Образуется информационный вакуум, заполнить который могут новости науки. Манипулировать научными данными не так интересно, как фактами в экономике и политике. Наука поддерживается прекрасной репутацией источников — например, не вызывает сомнений авторитетность журнала «Nature» или достоверность базы данных биотехнологической информации PubMed.


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

Всего голосов 41: ↑40 и ↓1+39
Комментарии32

Установка OpenStreetMap Nominatim для нахождения широты и долготы по введенному адресу

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

Хотел бы поведать свою историю об установке геокодера Nominatim на выделенный сервер. Изначально предполагалось, что эта задача займёт у меня около 5-7 часов, но не тут то было… Поэтому было решено написать статью c описанием разворачивания Nominatim на сервер до полной работоспособности сайта. Но обо всём по порядку.
Читать дальше
Всего голосов 21: ↑19 и ↓2+17
Комментарии28

Методы оптимизации нейронных сетей

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

В подавляющем большинстве источников информации о нейронных сетях под «а теперь давайте обучим нашу сеть» понимается «скормим целевую функцию оптимизатору» лишь с минимальной настройкой скорости обучения. Иногда говорится, что обновлять веса сети можно не только стохастическим градиентным спуском, но безо всякого объяснения, чем же примечательны другие алгоритмы и что означают загадочные \inline \beta и \inline \gamma в их параметрах. Даже преподаватели на курсах машинного обучения зачастую не заостряют на этом внимание. Я бы хотел исправить недостаток информации в рунете о различных оптимизаторах, которые могут встретиться вам в современных пакетах машинного обучения. Надеюсь, моя статья будет полезна людям, которые хотят углубить своё понимание машинного обучения или даже изобрести что-то своё.


image


Под катом много картинок, в том числе анимированных gif.

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

Определяем пользователей VPN (и их настройки!) и прокси со стороны сайта

Время на прочтение6 мин
Количество просмотров168K
W.I.T.C.H.
We can save the day from dark, from bad
There's no one we need


Многие из вас используют VPN или прокси в повседневной жизни. Кто-то использует его постоянно, получая доступ к заблокированным на государственном или корпоративном уровне ресурсам, многие используют его изредка, для обхода ограничений по географическому положению. Как вы можете знать, крупные интернет-игроки в сфере стриминга видео, музыки и продажи игр никогда не любили пользователей, которые легко обходят географические ограничения, разблокируя недоступный в их стране контент, или совершая покупки заметно дешевле. За примерами не нужно далеко ходить: Netflix изменил свое соглашение об использовании, добавив пункт о блокировке VPN, всего 2 месяца назад; Hulu тоже грешил блокировкой пользователей, а Steam вообще подозрительно смотрит на не-русскоязычных пользователей из России. В последнее время, компании пытаются блокировать уже не конкретных пользователей, а сами IP-адреса VPN-сервисов, создавая определенные неудобства уже самому VPN-сервису и его пользователям. Похоже, они не используют никаких спецсредств, а блокируют выборочно и вручную. Хоть я и не поддерживаю какие-либо блокировки вообще, меня заинтересовала техническая часть вопроса: можно ли как-то определить использование прокси-серверов и VPN со стороны сервера, не прикладывая особых усилий?
Можно, при определенных условиях. И достаточно точно.
Читать дальше →
Всего голосов 53: ↑49 и ↓4+45
Комментарии84

Как попасть в топ на Kaggle, или Матрикснет в домашних условиях

Время на прочтение9 мин
Количество просмотров32K
Хочу поделиться опытом участия в конкурсе Kaggle и алгоритмами машинного обучения, с помощью которых добрался до 18-го места из 1604 в конкурсе Avazu по прогнозированию CTR (click-through rate) мобильной рекламы. В процессе работы попытался воссоздать оригинальный алгоритм Мактрикснета, тестировал несколько вариантов логистической регрессии и работал с характеристиками. Обо всём этом ниже, плюс прикладываю полный код, чтобы можно было посмотреть, как всё работает.

Рассказ делю на следующие разделы:
1. Условия конкурса;
2. Создание новых характеристик;
3. Логистическая регрессия – прелести адаптивного градиента;
4. Матрикснет – воссоздание полного алгоритма;
5. Ускорение машинного обучения в Python.
Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии21

Нет – взломам серверов! Советы по проверке и защите

Время на прочтение3 мин
Количество просмотров33K
Подозреваете, что Linux-сервер взломан? Уверены, что всё в порядке, но на всякий случай хотите повысить уровень безопасности? Если так – вот несколько простых советов, которые помогут проверить систему на предмет взлома и лучше её защитить.

image

Читать дальше →
Всего голосов 47: ↑36 и ↓11+25
Комментарии43

Особенности продвижения приложений в СНГ, на западных рынках и в Азии

Время на прочтение21 мин
Количество просмотров14K
Предыдущая статья про 15 нестандартных инструментов продвижения мобильного приложения неожиданно хорошо зашла на Хабре. Это говорит о том что тема для сообщества актуальна.

В данной статье вас ожидает большой текст (TLD:DR!) о продвижении приложения в СНГ, на западных рынках и в Азии, с подробным разбором каждого из рынков и большим количеством полезных ссылок.

Запасайтесь чаем и добро пожаловать под кат.

image
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии7

FizzBuzz на TensorFlow

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

интервьюер: Приветствую, хотите кофе или что-нибудь еще? Нужен перерыв?


я: Нет, кажется я уже выпил достаточно кофе!


интервьюер: Отлично, отлично. Как вы относитесь к написанию кода на доске?


я: Я только так код и пишу!


интервьюер: ...


я: Это была шутка.


интервьюер: OK, итак, вам знакома задача "fizz buzz"?


я: ...


интервьюер: Это было да или нет?


я: Это что-то вроде "Не могу поверить, что вы меня об этом спрашиваете."


интервьюер: OK, значит, нужно напечатать числа от 1 до 100, только если число делится нацело на 3, напечатать слово "fizz", если на 5 — "buzz", а если делится на 15, то — "fizzbuzz".


я: Я знаю эту задачу.


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


я: ...


интервьюер: Вот маркер и губка.


я: [задумался на пару минут]


интервьюер: Вам нужна помощь, чтобы начать?


я: Нет, нет, все в порядке. Итак, начнем с пары стандартных импортов:


import numpy as np
import tensorflow as tf

интервьюер: Эм, вы же правильно поняли проблему в fizzbuzz, верно?


я: Так точно. Давайте обсудим модели. Я думаю тут подойдет простой многослойный перцептрон с одним скрытым слоем.

Читать дальше →
Всего голосов 132: ↑123 и ↓9+114
Комментарии140

MCMC-сэмплинг для тех, кто учился, но ничего не понял

Время на прочтение15 мин
Количество просмотров32K
Рассказывая о вероятностном программировании и Байесовской статистике, я обычно не уделяю особого внимания тому, как, на самом деле, выполняется вероятностный вывод, рассматривая его как некий «чёрный ящик». Вся прелесть вероятностного программирования заключается в том, что, на самом деле, для того, чтобы строить модели, не обязательно понимать, как именно делается вывод. Но это знание, безусловно, весьма полезно.


Как-то раз я рассказывал о новой Байесовской модели человеку, который не особенно разбирался в предмете, но очень хотел всё понять. Он-то и спросил меня о том, чего я обычно не касаюсь. «Томас, — сказал он, — а как, на самом деле, выполняется вероятностный вывод? Как получаются эти таинственные сэмплы из апостериорной вероятности?».
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии22

Байесовский анализ в Python

Время на прочтение8 мин
Количество просмотров57K
Этот пост является логическим продолжением моего первого поста о Байесовских методах, который можно найти тут.
Я бы хотел подробно рассказать о том, как проводить анализ на практике.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии18

Кейс NGINX: Как противостоять DDoS-атакам

Время на прочтение2 мин
Количество просмотров26K
Основная цель нашей работы состоит в том, чтобы сделать IaaS простым и понятным даже для тех, кто не сталкивался с ИТ-сферой. Поэтому мы проводим постоянную оптимизацию всех систем и рассказываем о том, что нам удалось сделать, в нашем блоге на Хабре.

Пара примеров:


Сегодня мы решили взглянуть на западный опыт и кратко проанализировать тему балансировки нагрузки. Нас привлекла заметка на тему работы с DDoS-атаками.

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

Как я победил в конкурсе BigData от Beeline

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

Все уже много раз слышали про конкурс по машинному обучению от Билайн и даже читали статьи (раз, два). Теперь конкурс закончился, и так вышло, что первое место досталось мне. И хотя от предыдущих участников меня и отделяли всего сотые доли процента, я все же хотел бы рассказать, что же такого особенного сделал. На самом деле — ничего невероятного.
Читать дальше →
Всего голосов 100: ↑92 и ↓8+84
Комментарии32

Информация

В рейтинге
Не участвует
Откуда
Польша
Работает в
Дата рождения
Зарегистрирован
Активность