Восемь докладов про Python — со второго большого Pytup, который прошёл в конце 2019-го в Екатеринбурге. Pytup — конференция для Python-разработчиков. Сначала она проходила только в формате вечерних митапов для екатеринбургских питонистов, где выступали спикеры из Яндекса. А затем, помимо уютных вечерних встреч, раз в год мы стали проводить большой Pytup — масштабное мероприятие с экспертами из разных компаний.
1. Как на основе ML построить гиперлокальный прогноз погоды — Елена Волжина (Яндекс.Погода)
https://www.youtube.com/watch?v=ECALEJ79KHg&list=PLQC2_0cDcSKCXhELTYYhZdr-aSisYHrXQ&index=2&t=1s
Погодные сервисы могут ошибаться в прогнозах. Представим это как задачу машинного обучения, факторами в которой служат атмосферные параметры из разных моделей прогноза, а цель обучения — приблизиться к реальным данным с метеостанций. В докладе Лена рассказывает про две ML-технологии Яндекса для предсказания погоды.
Во-первых, Метеум — он гиперлокально предсказывает погоду по всему миру. Это микс традиционных численных моделей предсказания и передовых ML-алгоритмов. Здесь используется библиотека CatBoost и результаты пяти погодных моделей, в том числе чтобы показывать погоду в реальном времени с разрешением 2х2 км. Во-вторых, технология наукастинга, которая даёт краткосрочный глобальный прогноз на основе нейросетей и данных с геоспутников и метеорадаров. Наукастинг позволяет узнать, например, что будет с погодой в ближайшие 10, 20 минут.
2. NeuroCore храним, хостим и обучаем модели — Тимофей Дейс (СКБ Контур)
https://www.youtube.com/watch?v=N2zvciC1LfY&list=PLQC2_0cDcSKCXhELTYYhZdr-aSisYHrXQ&index=2
Для машинного обучения есть множество стандартных инструментов. А вот решений для запуска моделей в продакшен — гораздо меньше, к тому же у многих компаний они свои. Тимофей делится подходом, который они с коллегами использовали в Контуре — рассказывает о возникнувших сложностях, принятых решениях и какой в итоге получился инструмент. Вы узнаете, как жить, если у вас K8s, докер в докере без докера, а также получите ответы на другие важные для питониста вопросы.
3. Бесполезный REPL — Александр Артеменко (Яндекс.Такси)
https://www.youtube.com/watch?v=w4zabj_GAhg&list=PLQC2_0cDcSKCXhELTYYhZdr-aSisYHrXQ&index=3
Почему REPL (read-eval-print loop) бесполезен в Python, даже если это волшебный IPython? В докладе Саша объясняет свою точку зрения и предлагает одно из возможных решений такой проблемы. В первую очередь доклад будет полезен тем, кого интересует более быстрая и эффективная разработка, а также тем, кто пишет stateful-системы.
4. Специфицируй это — Александр Брязгин (Яндекс)
https://www.youtube.com/watch?v=A9Ij-qJOLjM&list=PLQC2_0cDcSKCXhELTYYhZdr-aSisYHrXQ&index=4
Саша рассказывает о том, что такое спецификация REST API на примере OpenAPI + Swagger и зачем она нужна. Вспоминает, как его команда прикручивала автоматическую генерацию спецификации OpenAPI + Swagger в уже готовом сервисе и какие библиотеки им пригодились. Вы узнаете, в чём польза такого подхода и какой есть интересный туллинг вокруг спецификации OpenAPI.
5. Валидация данных при помощи Pydantic — Степан Плетнев (Tinkoff․ru)
https://www.youtube.com/watch?v=_5kCjRj6bng&list=PLQC2_0cDcSKCXhELTYYhZdr-aSisYHrXQ&index=5
В Тинькофф ежедневно работают с данными из внешних источников: принимают REST-запросы, читают файлы и обрабатывают пользовательский ввод. Эти данные всегда необходимо валидировать, например, на наличие обязательных полей или соответствие типов/значений данных. У модулей Marshmallow и Cerberus специфичный способ описания схемы, который каждый раз приходится вспоминать. А вот Pydantic использует синтаксис type hints для описания формата данных. Это позволяет быстро писать валидаторы и конвертеры данных, используя очевидные объявления классов в стиле dataclasses.
Разбираемся на примерах, как Pydantic устроен изнутри, как он упрощает нашу работу и что можно получить от современного Питона.
6. Деревья синтаксиса модификация исходного кода в 2019-м — Кирилл Борисов (Booking․com)
https://www.youtube.com/watch?v=rHWe_kNn4Ss&list=PLQC2_0cDcSKCXhELTYYhZdr-aSisYHrXQ&index=6
Переход на Python 3, жёсткие ограничения стиля и структуры кода, масштабные рефакторинги… Стоит ли вручную править код в тысяче мест по одному шаблону или можно доверить это дело автоматике? В докладе Кирилл обсуждает инструменты для работы с исходным Python-кодом и объясняет, как написать свой небольшой Black за пару вечеров.
7. Машинное обучение на коленке — Иван Меньших
https://www.youtube.com/watch?v=sh3Srpp_CXc&list=PLQC2_0cDcSKCXhELTYYhZdr-aSisYHrXQ&index=7
Что делать, если вы хотите добавить немного ML вашей компании, но нет ни бюджетов, ни железа, ни даже данных? Ваня делится своим взглядом на эту проблему — правда работающим. Вы узнаете, как с минимальными затратами, практически на коленке, запустить этот процесс, что в нём самое важное (тут без сюрпризов) и какие опенсорсные решения могут вам помочь.
8. Сетевые функции на Python — Валентин Синицын (Яндекс.Облако)
https://www.youtube.com/watch?v=OaaKsbl4YGM&list=PLQC2_0cDcSKCXhELTYYhZdr-aSisYHrXQ&index=8
Виртуализация сетевых функций (Network Functions Virtualization, NFV) — модный облачный термин. Он означает перенос межсетевых экранов, балансировщиков, систем обнаружения вторжений и тому подобного со специализированного сетевого «железа» в контейнеры или виртуальные машины. Традиционный стек для NFV-приложений — высокопроизводительный код на C и DPDK. Поэтому понять путь пакета от приёма сетевой картой до обработки полезных данных — нетривиальная задача даже для NFV-разработчика.
А что, если реализовать и само приложение, и драйвер сетевой карты на Python? Оказывается, в современном Linux это не только возможно, но и довольно просто. Конечно, такое решение вряд ли будет соперничать по производительности с железными «коробками» — зато одним «чёрным ящиком» в мире станет меньше.
✈ https://yadi.sk/d/VKZthXz6c7Q18Q — а здесь оригиналы всех докладов. На случай, если вы захотите скачать и посмотреть их там, где нет интернета.