Устарели ли NumPy и PyTorch? Как перевести проект с Python 2 на Python 3 так, чтобы пользователи не заметили? Как дать языковой модели доступ к данным, которых не было в обучающем датасете?
В сентябре мы проведём конференцию PiterPy 2024, где поговорят обо всех этих вопросах и многих других. Все описания докладов уже есть на сайте, а теперь для Хабра мы свели их в один текст, подсократили в нём длинные описания, перевели на русский англоязычные.
Тематические блоки
ML
Бэкенд
Тестирование
Инструменты и фреймворки
Internals
Данные
Основы
Кибербезопасность
Vanilla Python
Замена Питону
ML
Александр Константинов
Raft
Кузьма Лешаков
Yandex Cloud
Диалоги с языковыми моделями всем уже привычны. Но многие жалуются «нейросеть не знает того, чего не было в её датасете». Как изменить ситуацию?
Александр и Кузьма расскажут о необходимой базе при создании RAG-приложений с использованием больших языковых моделей. Они кратко рассмотрят рынок LLM, затем — конкретные пользовательские сценарии с использованием, в том числе, Yandex GPT. Разберут доступные в облаке способы расширения знаний — через Datasphere и через построение RAG (Retrieval-Augmented Generation).
Воркшоп: Большие языковые модели в облаке Yandex Cloud
Дмитрий Сошников
МАИ / НИУ ВШЭ
Помимо теоретического доклада про LLM, на конференции будет и этот воркшоп, где спикер продемонстрирует работу с ними на практике.
Дмитрий расскажет про использование больших языковых моделей в облаке для решения различных задач — от извлечения структурированных данных из больших массивов текстовых данных до построения вопросно-ответных систем и автоматических ответов на отзывы. Поделится техническими деталями работы YandexGPT и хостинга открытых языковых моделей (LLaMA 3 / Saiga) в облаке. Расскажет про проекты с использованием LLM внутри Яндекса, покажет несколько увлекательных демонстраций.
Интеграция чат-бота в существующую архитектуру
Артур Чеканов
ITentika
В последние годы наблюдается увеличение интереса к использованию чат-ботов в различных организациях. Многие идеи, которые ранее реализовывались на веб-сайтах, теперь переносятся в Telegram-боты — от простых помощников до полноценных приложений. Однако некоторые решения были созданы не оптимальным способом, что затрудняет их масштабирование и интеграцию в уже существующую архитектуру.
Артур расскажет об эволюции чат-ботов, поделится опытом их интеграции и подходами к разработке.
Вашей компании LLM не нужен? Построение инфраструктуры с нуля
Мичил Егоров
X5 Tech
Подробно рассмотрим построение инфраструктуры для использования больших языковых моделей (LLM) с нуля, опираясь на опыт Х5 Tech.
Мичил начнет с объяснения, что такое LLM и почему они становятся все более важными для современных технологий. Обсудим ключевые компоненты, необходимые для создания масштабируемой и надежной инфраструктуры. Сравним три популярных бэкенда для инференса LLM: llama-cpp, TGI и vLLM, выделяя их преимущества и недостатки. Особое внимание уделим подводным камням llama-cpp и рассмотрим, действительно ли vLLM — идеальное решение. Затронем тему информационного поиска и его связь с LLM — Мичил объяснит, как эти модели могут улучшить процессы поиска по базам знаний.
В заключение обсудим, как заставить LLM писать качественный текст, на основе опыта внедрения чат-бота для сотрудников Пятерочки.
Валерия Петренко
Ozon
Как давно вы пользуетесь NumPy? А PyTorch? А что, если найдется библиотека, которая делает все то же самое, но быстрее?
Во время доклада мы рассмотрим JAX — библиотеку от Google. Посмотрим на такую штуку, как JIT — just in time compilation: что он собой представляет и как изменяет ваш код. Проанализируем бенчмарки JAX, NumPy и PyTorch по CPU и MEM. Рассмотрим различия в API этих инструментов.
И, наконец, узнаем: JAX — «убийца» NumPy или просто хайп?
Бэкенд
Драматическое приручение кролика
Святослав Посохин
Точка
Представим, что у нас есть сервис, в который ежедневно сваливаются реестры платежей. Их необходимо обработать. Для каждого получателя проверить статус, доступный лимит на получение; возможно, отправить уведомление, сформировать выписку и так далее.
Все это обычно решается с помощью фоновых задач, и есть множество инструментов для этого. Так, для работы в фоне мы взяли Dramatiq. И спустя 3 года получили свою первую ошибку от RabbitMQ — «100 connection limit reached».
В докладе разберем, зачем нам столько соединений. Почему это плохо и как в Точке держат нагрузку в 10 раз больше, имея в 10 раз меньше соединений. Не обошлось и без контрибьюта в open source.
Еще один фреймворк: как мы стали пилить интеграции за спринт вместо квартала
Дмитрий Иванюшин
ContactPay
Один из аспектов ContactPay— это интеграция с внешними партнерами — платежными шлюзами. Чтобы поддерживать стабильную доставку, требуется унифицировать процессы. Для своих нужд в компании разработали фреймворк, которым пользуются для всех интеграций, существенно сокращая time-to-market с момента подписания договоров.
Эти практики подойдут как аналитикам, так программистам. В докладе Дмитрий осветит решения, которые стали использовать у себя в процессах, и к чему это привело. Какие проблемы это помогло решить, а какие нет.
Backend-Driven UI: как мы это сделали и что из этого вышло
Александр Киверин
Циан
Александр расскажет о реализации подхода Backend-Driven UI (BDUI) на Python в Циан. Как за год смогли с нуля реализовать 2 отдельных BDUI-языка, подружили их в одном сервисе, не испугались полиморфных и рекурсивных Swagger-схем, научили backend-разработчиков основам верстки на всех платформах, поменяли принцип мышления стейкхолдеров и запустили новую форму подачи объявления на первых пользователей.
Доклад будет полезен разработчикам любого уровня, дополнительных знаний не требуется — краткий экскурс в BDUI будет включен в презентацию.
Простое управление настройками Django-приложения
Денис Дудник
Sigmadevs
Евгений Кацевман
Factory5
Динамично развивающийся Django-проект с множеством экспериментальных алгоритмов и бизнес-правил. Требуется инструмент, позволяющий создавать в одном месте параметры этих алгоритмов и настраивать их в реальном времени.
Классические подходы решения подобных задач, такие как файлы констант, переменные окружения, хранение значений в БД, имели ряд ограничений. Все они требовали вмешательства разработчика для изменения значений, не выглядели естественно в коде, не имели простой валидации. Поэтому было создано свое решение — django-liveconfigs.
В докладе рассмотрим классические подходы решения подобных задач, такие как файлы констант, переменные окружения, хранение значений в БД, а также сравним django-liveconfigs с имеющимися решениями для Django. Продемонстрируем пользу предложенного решения как со стороны разработчика, так и со стороны бизнеса. И, конечно, будут примеры использования — от простого к сложному.
Тестирование
Брокеры сообщений и Python в 2024-м
Никита Пастухов
AirtAI
Event-driven train уже вовсю набрал ход и тяжело представить крупную отказоустойчивую систему без Kafka, RabbitMQ или другого брокера где-нибудь под капотом. Однако инструменты для разработки подобных сервисов вызывают шок у поколения, воспитанного FastAPI.
Пройдемся по всем больным мозолям Python-клиентов к брокерам сообщений, сформируем список требований к «современному» инструментарию, познакомимся с FastStream и немного окунемся в историю его создания.
Практические шаблоны и лучшие практики для разработки Python-библиотек
Максим Ликсаков
МТС
Максим поделится знаниями и опытом в разработке высококачественных и масштабируемых Python-библиотек, используемых для ETL-процессов. Обсудим шаблоны проектирования и архитектурные решения, которые позволяют создавать эффективные и легко поддерживаемые и тестируемые библиотеки.
На примере реальных задач вам покажут, как можно улучшить процессы разработки Python-инструментов, минимизировать возможные ошибки и ускорить внедрение изменений. Обсудим, как стандартизация и автоматизация тестирования помогает в поддержке и развитии больших проектов.
Технологии: Python 3.x pytest setuptools, Poetry, handling requirements, optional requirements, Codecov, Sphinx, autodoc, etc. GitHub Actions, GitLab CI, Git tags.
Внутреннее устройство бинарных сборок Python
Александр Артамонов
Yandex Infrastructure
В Python-мире существуют разнообразные инструменты и подходы для дистрибуции своих приложений. Какие-то подходят больше для open source, другие вы используете у себя в продакшене, про третьи вы пытаетесь не вспоминать, а про какие-то даже не слышали.
Особняком от классических подходов стоит бинарная сборка Python, которая решает проблемы специфичным образом, практикуется в Big Tech и интересна энтузиастам. Вот только некоторые инструменты, которые используются в создании автономных Python-программ: PyInstaller, Nuitka, PyOxidizer, py2app, PythonZipper (Bazel), cx_Freeze.
В Яндексе используется своя система сборки, которая появилась более 10 лет назад. Она умеет собирать Python в замкнутые и подлинно герметичные бинарные программы под все популярные платформы.
Во время доклада рассмотрим базовое устройство автономных сборок Python, погрузимся в детали их реализации, сравнивая с подходом, используемым в Яндексе. Выясним, какие преимущества дает такой подход и на какие компромиссы ради этого придется пойти.
Руслан Морозов
Kaspersky
Антон Новиков
Kaspersky
Руслан и Антон расскажут об опыте внедрения подхода trunk-based development (TBD) при разработке KasperskyOS.
Пробежимся по базовым вопросам конфигурационного управления и тому, как их можно адресовать. В частности, как код хранить, изменять, собирать, тестировать, релизить. Почему крупные проекты неизбежно борются со сложностью во всех этих процессах и к чему это приводит.
Пройдемся по текущим дизайн-решениям Kaspersky, рассмотрим их плюсы и минусы. Закончим мыслями о том, каких ошибок стоит избегать и что для этого нужно.
Инструменты и фреймворки
Всё или ничего: как обновить Python и не попасть на костер
Сергей Яхницкий
Яндекс Такси
История про внедрение новых инструментов и борьбу с легаси на масштабе в сотни микросервисов. Фокус именно на масштаб и взаимодействия с инфрой и людьми, но специфику Python Сергей подсветит ярко.
Будет полезно сеньорам и техлидам.
Разбираемся с end-to-end type safety для наших бэков
Денис Аникин
Райффайзен Банк
При написании бэкенда и фронтенда мы постоянно сталкиваемся с мелким или крупным «рассинхроном» в полях и типах, и это нужно всегда отслеживать вручную. Даже имея средства вроде Swagger, мы постоянно натыкаемся на несовершенство интеграции back и front.
Конечно, у нас есть вариант пойти в GraphQL, но что, если вы решили остаться на REST? На это есть ответ у JS-бэкендов: end-to-end type safety. Фреймворки вроде tRPC позволяют писать «одинаковые» модели для бэкенда и фронтенда, а также иметь возможность поддержки типов и даже автокомплит на уровне IDE.
В докладе подробнее раскроют проблему, покажут ее возможные решения и даже решение автора на коленке (скрипт конвертации типов, вотчер и т. п.). Вы узнаете, как можно улучшить свои REST-based наработки, и, возможно, откроете для себя мир typesafe API.
Воркшоп: Accelerating API Development in PostgreSQL with PostgREST
Krishna Lodha
Rotten Grapes Private Limited
Инструмент PosgREST предназначен для того, чтобы быстрее и качественнее создавать REST API в PostgreSQL-окружениях, опираясь напрямую на схемы PostgreSQL.
К концу этого воркшопа участники овладеют необходимыми знаниями и навыками для того, чтобы эффективно его использовать.
Как проводить переезды, не привлекая внимания пользователей
Виктор Азаубаев
Яндекс Казахстан
Большие переезды с нарушением обратной совместимости — это всегда боль, и каждая миграция особенна по-своему. Виктор расскажет о том, как пришлось мигрировать 200 000 строк кода с Python 2 на Python 3, оставаясь в основе внутренней инфраструктуры так, чтобы пользователи этого не заметили. Также коллеги Виктора постоянно обновляют внешние библиотеки и фреймворки в условиях монорепозитория с десятками тысяч проектов. Спикер расскажет, какие подходы использовали, с какими трудностями столкнулись, как подготовиться к большим переездам и что бы он сделал иначе.
Internals
PyPy: ускоряем Python с помощью Python
Андрей Шарапов
Контур
В вопросе выжимания производительности из микросервисов на Python чаще всего можно услышать варианты переписать на asm, Go, Rust, Node.js и т. д. Что это значит для Python-команды? Наем дорогого специалиста под одну задачу или переобучение Python-разработчика с размытием фокуса компетенций на два стека. Что, если можно на порядок поднять производительность CPU-bound операций, не меняя стек и не расширяя команду?
Бейлак Алиев
Райффайзен Банк
В Python есть два интересных механизма для работы с памятью: RefCount и GC. А насколько они близки? Зачем гадать — проведем эксперимент! Попробуем отключить RefCount, посмотрим на GC и докажем, что это действительно независимые механизмы. Проведем замеры памяти, чтобы оценить масштабы бедствия.
Optimizing Python Startup Time by Code Data Share
Yichen Yan
Alibaba Cloud
При росте нагрузки время холодного старта программы на Python может становиться крайне важным. Спикер поговорит о том, как возможно снижать это время. В докладе он представит обзор проблемы и объяснит, как в Alibaba Cloud кэшируют байт-код без возникновения дополнительных накладных расходов. Вас ждет глубокое погружение в детали реализации с помощью CPython.
Python JIT и extension на C: чего ожидать в будущем?
Александр Боргардт
DuckStax
Текущее состояние и перспективы использования JIT-компиляции (Just-in-Time) в Python и расширений на языке C. Рассмотрим, как эти технологии влияют на производительность Python-приложений, какие новые возможности и улучшения нас ожидают, а также какие вызовы предстоит преодолеть разработчикам. Особое внимание будет уделено устройству JIT и преодолению новых рубежей в проектах.
Данные
Александр Мещеряков
Синимекс
Обсудим, как получить и обработать геоданные в Python. Какие библиотеки использовать для работы с геоданными. Рассмотрим, как можно джойнить данные не только по текстовым полям, но и при помощи геометрий.
Вы научитесь правильно рассчитывать расстояния, использовать различные проекции и сможете рассчитать расстояния маршрута при помощи библиотеки OSMnx. Узнаете, как получить картограммы и агрегировать данные.
Apache Kafka для Python-разработчиков
Григорий Кошелев
Контур
Погружение в Apache Kafka для Python-разработчиков:
Внутреннее устройство и принцип работы основных компонентов Apache Kafka.
Особенности использования Python-клиента к Apache Kafka.
Разбор основных сценариев использования и best practices.
Из бэкенда в дата-инженерию: типовые ошибки и паттерны
Юлия Волкова
CodeScoring
Практический доклад с кейсами и наглядными примерами. Не просто про базовые вещи в дата-инженерии, понимание которых является минимальным базисом, но и про то, почему это важно. Посмотрим на реализацию максимально обыденных и привычных для бэкенда, но абсолютно неправильных паттернов с точки зрения дата-инженерии. Поговорим о работе со временем, перекладывании даты из базы туда-обратно, важности инструментов для обработки данных, любви к foreign key и о другом.
Основы
D в DDD: где D — это доменная логика
Макс Столпасов
X5 Tech
Макс расскажет, как использует принципы Domain-Driven Design (DDD) в своей работе. Вы узнаете, почему так важно понимать бизнес-процессы вашего проекта и как это помогает создавать качественный и гибкий код.
Он поделится реальными примерами из своего опыта, чтобы показать, как DDD помогает решать сложные задачи. Обсудим, как правильно организовать код, чтобы он был легче в поддержке и адаптации к изменениям.
Будет полезно всем, кто хочет улучшить взаимодействие между бизнесом и разработчиками и создавать устойчивые к изменениям приложения.
Денис Аникин
Райффайзен Банк
Есть широко известные принципы SOLID, и люди по отношению к ним делятся на несколько крупных групп. Нам интересны две. Первая скажет: «ну там же все уж понятно и давно пройдено» и добавит: «я использую принципы интуитивно». Вторая пояснит: «это бесполезное инфоцыганство». Есть и другие люди, но в докладе мы поговорим об этих двух группах. О том, работают ли эти принципы или нет.
Доклад будет основан сугубо на практике: исходя из разработки множества крупных энтерпрайзных систем и общения на большом количестве собеседований. Денис расскажет, как можно жить с этими принципами, как их внедрять, как все в индустрии их «хорошо» используют (спойлер: не очень) и как можно некоторые из SOLID-принципов достичь автоматически. Поговорим о каждой букве подробнее, а также покопаемся в коварных вопросах про SOLID на собеседованиях.
Senior. Ретроспектива, или Что я сначала не понимал в своей карьере, а потом как понял
Дмитрий Аникин
Kaspersky
Дмитрий взглянет на свой путь от стажера до сеньора по принципу «туда и обратно».
Сначала пройдется снизу вверх по ступеням грейдов и расскажет о тех аспектах и навыках в Python, которые помогли ему получить буст в карьере. Затем пойдет в обратном порядке, чтобы уже с высоты текущего развития посмотреть на каждый из этапов и объяснить, что хорошие специалисты сами такими не станут, если им не помочь.
Кибербезопасность
Выбираем open-source SAST для Python-проектов
Максим Кобилев
Solar
Рассмотрим популярные open source-инструменты для статического анализа безопасности (SAST) в Python-проектах: Bandit, SonarQube, Semgrep, CodeQL. Обсудим преимущества и недостатки каждого с примерами использования на подготовленном бенчмарке — заранее уязвимом Python-приложении (OWASP Top 10).
И снова про безопасность в мире Python-разработки
Алексей Смирнов
CodeScoring
Поговорим о том, куда же все катится. Что происходит в мире безопасности open source-пакетов, какие есть тренды и есть ли что-нибудь положительное в них. Что делает сообщество, чтобы защитить разработчиков от злоумышленников. Какие ошибки чаще всего допускают Python-разработчики и как их можно было бы избежать.
Vanilla Python
Tackling Thread Safety in Python
Adarsh Divakaran
Digievo Labs
Разрабатывая на Python, мы часто пренебрегаем потоковой безопасностью, что ведет к непредсказуемому поведению кода в многопоточных окружениях. Рассмотрим частые подводные камни и трудности, воздействие Global Interpreter Lock и использование примитивов синхронизации.
Стили в Python: как перестать рвать на себе волосы, читая чужой код
Игорь Мосягин
Klarna
Когда мы рассуждаем о качестве кода, обычно говорим о PEP 8, о том, что нельзя называть переменные непонятным образом и о том, что надо прогонять Black или Ruff или что-то еще на свой код. Но что, если посмотреть пошире?
На практике нам приходится влезать в код, написанный с использованием разных подходов, поэтому полезно уметь «работать в разных стилях». Возьмем для примера понятную задачу вордкаунта и рассмотрим, как одну и ту же штуку можно сделать разными способами и что из этого получится.
Доклад будет полезен тем, кого уже «тошнит» от Литкода, но хочет иметь больше универсальности в своей коробке инструментов. А также всем, кто когда-то писал на других языках, но теперь считает, что раз он питонист, то больше делать нечего.
Замена Питону
Bend vs Mojo. Чей хайп сильнее?
Михаил Гурбанов
Райффайзен Банк
Новые языки растут как грибы после дождя! В прошлом году мы получили Mojo, он влетел «с ноги» в топ чарты интернета и продолжает набирать популярность. Но совсем недавно появился другой язык под названием Bend, который набрал 15K звезд за неделю. Оба языка заточены под ML и параллелизм, но какой лучше и сильнее?
Посмотрим на особенности каждого из языков, немного покопаемся во внутренностях. Конечно же, будем бенчмаркать до потери пульса, так как эти языки очень хорошо подходят для ML, где скорость крайне важна.
Конечно, конференция не сводится к докладам, но живое общение не распишешь по пунктам. Так что нам остаётся только прояснить необычный формат для тех, кто не был на предыдущих PiterPy:
18 сентября будет полностью онлайновый день.
а 26-27 сентября будут доступны два варианта: можно будет лично прийти на конференцию в Петербурге, но можно будет и подключиться к происходящему удалённо, кому как удобнее.
Остальная информация и билеты — на сайте PiterPy. А если что-то осталось непонятным, можете спрашивать прямо здесь.