Обновление Python в 30+ ML-сервисах: uv, Ruff и ty

Python 3.10 уже выглядит как прошлый век — но обновить один проект и одновременно перевести десятки ML-сервисов с PyTorch и CUDA на свежую версию языка совсем не одно и то же.
Денис Крумко — MLOps-инженер Kolesa Group с более чем 10-летним опытом разработки на Python. Его команда строит пайплайны подготовки данных, обучения и деплоя ML-сервисов, которыми ежедневно пользуются миллионы пользователей Казахстана и Узбекистана.
В докладе: — насколько Python становится быстрее с каждым новым релизом и за счёт чего — какие проблемы возникают при обновлении 30+ ML-сервисов с PyTorch и CUDA — где искать подводные камни, даже когда после обновления всё выглядит стабильным — насколько хорош новый Python-туллинг на Rust: uv, Ruff и ty
Видео
Презентация
1 / 51Текст презентации
Слайд 1: «Это твой знак,
«Это твой знак, что пора обновить Python» Денис Крумко Senior MLOps Engineer Наша история обновления сервисов и инструментов
Слайд 2: «Это твой знак, что пора обновить Python»: наша история обновления
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов ● Компьютерная Безопасность Сибирский Федеральный Университет ● Python Backend Dev ● MLOps Engineer @ Kolesa Group since 2023 Денис Крумко
Слайд 3: ● как менялся Python с годами
● как менялся Python с годами О чём сегодня поговорим «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 4: ● как менялся Python с годами
● как менялся Python с годами ● как мы обновляли наши сервисы О чём сегодня поговорим «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 5: ● как менялся Python с годами
● как менялся Python с годами ● как мы обновляли наши сервисы ● что такое современный Python tooling О чём сегодня поговорим «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 6: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов ML инженера
Слайд 7: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов «End-of-life»
Слайд 8: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов «End-of-life» ● нет обновлений
Слайд 9: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов «End-of-life» ● нет обновлений ● нет поддержки от third-party библиотек
Слайд 10: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов «End-of-life» ● нет обновлений ● нет поддержки от third-party библиотек ● нет security patches
Слайд 11: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов source: bbc.com
Слайд 12: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов State Of Python 2025 48% of people are currently using Python 3.11. Upgrading to 3.13 will make their code run ~11% faster end to end while using ~10-15% less memory. If they are one of the 27% still on 3.10 or older, their code gets a whopping ~42% speed increase (with no code changes), and memory use can drop by ~20-30%! © Michael Kennedy, founder of Talk Python and a PSF Fellow
Слайд 13: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 14: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 15: Какой был стек
Какой был стек ● Python 3.8.12 ● PyTorch 1.13.1 ● CUDA 11.6.2 ● MLflow 1.29.0 «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 16: Service issues
Service issues ● потребление RAM ● обновление зависимостей ● время ответа сервисов Tooling issues «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 17: Service issues
Service issues ● потребление RAM ● обновление зависимостей ● время ответа сервисов ● разный env у всех ● фиксирование зависимостей ● долгие проверки в CI/CD Tooling issues «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 18: Обновление зоопарка
Обновление зоопарка ● изучать breaking changes «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 19: Обновление зоопарка
Обновление зоопарка ● изучать breaking changes ● YOLO и обновить до latest «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 20: Обновление зоопарка
Обновление зоопарка ● изучать breaking changes ● YOLO и обновить до latest ● и то, и другое 🤙 «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 21: Python 3.13 + MLflow 2.21
Python 3.13 + MLflow 2.21 ● Python дает прирост скорости ~40%* * цифры из статьи “State Of Python” и документации MLflow «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 22: Python 3.13 + MLflow 2.21
Python 3.13 + MLflow 2.21 ● Python дает прирост скорости ~40%* ● FastAPI вместо Flask (x5 faster)* * цифры из статьи “State Of Python” и документации MLflow «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 23: Python 3.13 + MLflow 2.21
Python 3.13 + MLflow 2.21 ● Python дает прирост скорости ~40%* ● FastAPI вместо Flask (x5 faster)* ● обновили Pytorch (2.12) и CUDA (12.8) * цифры из статьи “State Of Python” и документации MLflow «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 24: Новые проблемы
Новые проблемы 1. Медленные сборки 2. Потребление VRAM 3. HTTP 503 под нагрузкой «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 25: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
1. Медленные сборки «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 26: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 27: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 28: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 29: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
2. Потребление VRAM «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 30: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
2. Потребление VRAM «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 31: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 32: не грузите меня
3. HTTP 503 Service Unavailable не грузите меня «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 33: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов MLflow 1.29 MLflow 2.21
Слайд 34: Результаты
Результаты «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 35: Чек-лист обновления
Чек-лист обновления ❏ время сборки и размер образа ❏ время ответа сервиса ❏ нагрузочное тестирование ❏ потребление CPU/RAM/VRAM ❏ качество ответов «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 36: Service issues
Service issues ● потребление RAM ● обновление зависимостей ● время ответа сервисов ● разный env у всех ● фиксирование зависимостей ● долгие проверки в CI/CD Tooling issues ??? «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 37: Astral – Next-gen
Astral – Next-gen Python tooling ● ruff – линтер и форматтер ● uv – package/env manager ● ty – type checker «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 38: Действительно ли круто?
Действительно ли круто? PYLINT «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 39: «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
«Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 40: В чем магия?
В чем магия? ● готовые binary файлы c Python «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 41: В чем магия?
В чем магия? ● готовые binary файлы c Python ● быстрый resolve зависимостей «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 42: В чем магия?
В чем магия? ● готовые binary файлы c Python ● быстрый resolve зависимостей ● “uv uses aggressive caching” «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 43: uv не ускоряет ваш код,
uv не ускоряет ваш код, он ускоряет ваш flow. «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 44: Tooling issues – solved
Tooling issues – solved ● одинаковый env у всей команды (uv run) «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 45: Tooling issues – solved
Tooling issues – solved ● одинаковый env у всей команды (uv run) ● фиксирование версий (uv.lock) «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 46: Tooling issues – solved
Tooling issues – solved ● одинаковый env у всей команды (uv run) ● фиксирование версий (uv.lock) ● ускорение CI/CD (uv.lock, ruff, ty) «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 47: Подводим итоги
Подводим итоги ● это тот самый знак, что пора обновить Python! «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 48: Подводим итоги
Подводим итоги ● это тот самый знак, что пора обновить Python! ● сделайте чек-лист обновления «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 49: Подводим итоги
Подводим итоги ● это тот самый знак, что пора обновить Python! ● сделайте чек-лист обновления ● uv 🔥 / ruff 💪 / ty 😐 «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 50: В понедельник…
В понедельник… ❯ переведи проект на юви и раф ❯ и питон еще обнови да идеально «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Слайд 51: Спасибо
Спасибо за внимание! @deniskrumko deniskrumko.github.io «Это твой знак, что пора обновить Python»: наша история обновления сервисов и инструментов
Другие доклады митапа
Когда ИИ уверенно ошибается Александр Канцеляристов
Платформа данных для AI-агентов с RAG Диана Аимбетова
Agentic SDLC: от постановки задачи до продакшена с AI-агентами Азамат Галимжанов
Мой код говорит сам за себя: как заставить его говорить и не запинаться Болат Тишкамбеков
















































