🐍 Итоги недели в мире Python и обзоры новых инструментов: как генерировать анимацию на Python
Привет!
Всю неделю мы мониторим интернет, чтобы в воскресенье прислать тебе интересное письмо. Наша цель – держать читателей в курсе последних открытий и тенденций в мире Python. В еженедельных письмах ты найдешь:
- Новые возможности в последних версиях Python
- Работа с базами данных и SQL в Python.
- Веб-разработка на Django и Flask.
- Машинное обучение и анализ данных с помощью Python.
- Автоматизация и работа с API на Python.
- Тестирование и отладка кода на Python.
- Задачи для новичков с решениям
Как сделать GPT-2 с нуля; Быстрая разработка бизнес-приложений на Python; Как обойтись без Docker и Kubernetes; Как настроить SQLite на максимальную производительность.
🔨 Инструменты
ToonCrafter – мощный AI-инструмент для интерполяции (создания плавного перехода) между двумя изображениями – стартовым и финальным. В процессе интерполяции ToonCrafter генерирует промежуточные кадры; результат выглядит совершенно естественно – как фрагмент реального мультфильма. Две дополнительные фичи инструмента:
- Использование эскизов для управления деталями анимационного процесса.
- Применение стиля и цветовой палитры референса для раскрашивания мультфильма, начальный и конечный кадр которого определены черно-белыми эскизами.
Piku – микро-PaaS (платформа как сервис), вдохновленная Dokku, опенсорсной альтернативой Heroku. Процесс работы с Piku выглядит так же, как и при использовании Dokku и Heroku – платформа обеспечивает развертывание, управление и независимое масштабирование приложений на одном хосте. Позволяет обойтись без Docker и Kubernetes, работает на любом облаке и на любом винтажном ARM/Intel железе, способном запустить Python 3.7+, nginx и uwsgi (это по силам даже Raspberry Pi 1 Model B 256MB 2012 года выпуска). Поддерживает:
- Виртуальные хосты, SSL-сертификаты и кэширование статических путей.
- Приложения на Python, Node, Clojure, Java и Go.
🐍 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»
Teo – новый фреймворк для создания серверных приложений. Структура и поведение веб-приложений на Teo определяются с помощью предварительно заданных схем – этот подход упрощает разработку и поддержку кода. Ключевые особенности:
- Нативная поддержка Python, Rust и Node.js дает возможность использовать любой из трех языков для написания серверной части приложения, что обеспечивает гибкость и выбор подходящего инструмента под конкретные задачи и предпочтения команды.
- Инновационное определение схем, вдохновленное GraphQL и Prisma, облегчает работу с данными и их структурирование.
- Автоматическая миграция баз данных – фреймворк самостоятельно обрабатывает изменения в структуре базы данных, минимизируя необходимость ручного вмешательства разработчика.
- Поддержка всех популярных СУБД – совместим с MySQL, PostgreSQL, SQLite и MongoDB.
- Генерация ORM типов и интерфейсов упрощает взаимодействие с базой данных и ускоряет процесс разработки.
- Генерация клиентов для фронтенда – автоматически создает клиентов для отправки запросов к серверу, что облегчает интеграцию с фронтендом.
- Высокая эффективность и производительность – оптимизирован для быстрой обработки запросов и минимальных затрат ресурсов.
- Очистка, преобразование и валидация данных – встроенные механизмы обеспечивают безопасность и корректность обработки данных.
- Управление пользовательскими сессиями реализовано из коробки, что упрощает аутентификацию и авторизацию.
- Встроенная проверка прав доступа – предоставляет средства для контроля доступа к ресурсам и операциям.
- Middleware с принципом FILO (первым пришел – последним вышел).
- Пользовательские обработчики маршрутов – можно создавать собственные обработчики для маршрутов, что увеличивает гибкость при построении логики приложения.
- Автоматически созданную админ-панель можно легко настроить под свои нужды.
- Хорошая совместимость с AI-решениями.
Zango – мета-фреймворк для разработки бизнес-приложений, построенный на основе Django. Его цель – ускорить процесс создания корпоративных приложений и снизить операционные расходы. Основные возможности и особенности:
- Работа со множеством приложений в рамках одного монолитного проекта. Zango позволяет размещать и управлять различными бизнес-приложениями или микросервисами на одном сервере под общей оболочкой. Это помогает сэкономить ресурсы и снизить затраты на инфраструктуру.
- Многоарендность. Zango переосмысливает концепцию многоарендности, позволяя запускать разные приложения на одном сервере, а не просто разные экземпляры одного приложения.
- Предустановленные пакеты. Фреймворк поставляется с набором бесплатных пакетов для быстрой разработки, включая базовую аутентификацию, конструктор интерфейсов, CRUD-операции и систему управления рабочими процессами.
- Встроенные инструменты для обеспечения безопасности и соответствия регуляторным требованиям.
- Панель управления приложениями. Фреймворк предоставляет централизованную панель для управления всеми развернутыми приложениями, конфигурирования разрешений, ролей пользователей и т. д.
🐍🎓 Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»
📜 Туториалы
Оптимальные настройки SQLite для Django
Инструменты для работы со SQLite по умолчанию включены в Python и во все популярные веб-фреймворки на его основе. Долгое время считалось, что эта СУБД подходит лишь для небольших любительских проектов, а в документации Django до сих пор написано, что SQLite следует использовать только на этапе разработки, но не в продакшене. Однако разработчики SQLite зря времени не теряют – производительность и функциональность СУБД постоянно совершенствуется, и как результат – популярность неуклонно растет:
Автор этого туториалапо настройке SQLite для Django тоже долгое время находился под впечатлением, что любому серьезному приложению нужна PostgreSQL, а потом узнал о PRAGMA – это специальное командное слово, которое позволяет конфигурировать или запрашивать параметры конфигурации как для движка базы данных, так и для ее содержимого. Например, PRAGMA можно использовать для:
- Запроса информации о списке таблиц, индексах, столбцах и другие аспектах схемы.
- Изменения режима синхронизации диска, который контролирует, насколько агрессивно SQLite будет записывать данные на физический накопитель.
- Получения списка всех подключенных баз данных. Изменения способа ведения журнала транзакций для улучшения производительности.
- Включения или отключения трассировки SQL для отладочных целей.
Настройки PRAGMA, предложенные в статье, обеспечивают улучшенную производительность и надежность базы данных SQLite, особенно в условиях с высокой нагрузкой и конкурентным доступом к данным. Они помогают оптимизировать работу с файловой системой, управлять транзакциями и обеспечивать целостность данных:
- PRAGMA foreign_keys=ON. Активация внешних ключей позволяет SQLite автоматически управлять связями между таблицами – это обеспечивает целостность данных и упрощает работу с внешними ключами.
- PRAGMA journal_mode=WAL. Использование журнала предзаписи (WAL) вместо стандартного журнала транзакций (JIT) улучшает производительность за счет асинхронного записи транзакций, поскольку снижает время ожидания при одновременном доступе к базе данных.
- PRAGMA synchronous=NORMAL. Этот параметр регулирует момент синхронизации данных на диск после каждой операции записи. NORMAL обеспечивает баланс между производительностью и сохранностью данных, синхронизируясь только при критических моментах.
- PRAGMA busy_timeout=5000.Устанавливает таймаут ожидания при попытке получить доступ к заблокированной базе данных – это помогает избежать мгновенного возврата ошибки при высокой конкуренции за ресурсы.
- PRAGMA temp_store=MEMORY.Хранение временных таблиц и индексов в памяти ускоряет операции с ними за счет использования виртуальной памяти.
- PRAGMA mmap_size=134217728. Определяет максимальный размер файла базы данных, который будет отображаться в памяти, улучшая производительность чтения за счет сокращения дисковых операций.
- PRAGMA journal_size_limit=67108864. Устанавливает максимальный размер файла журнала предзаписи – это позволяет SQLite переиспользовать существующий файл для последующих записей, ускоряя процесс.
- PRAGMA cache_size=2000. Регулирует количество страниц диска базы данных, которые SQLite будет держать в памяти одновременно – это влияет на скорость доступа к данным.
- transaction_mode="IMMEDIATE". Начинает транзакции в режиме немедленного выполнения, что позволяет избежать ошибок SQLITE_BUSY при попытке открыть уже занятую базу данных, учитывая установленный таймаут ожидания.
🐍🧩 Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»
Как сделать GPT-2 с нуля
Андрей Карпаты показал, как самостоятельно разработать аналог модели GPT-2 на 124 млн параметров:
- Реализация модели GPT-2. Сначала разрабатывается нейронная сеть, лежащая в основе GPT-2, с помощью PyTorch. Загружаются исходные веса модели от OpenAI через Hugging Face. Реализуется прямой проход для получения логитов (необработанных оценок для каждого слова в словаре).
- Оптимизация производительности. Применяются различные трюки для ускорения обучения – смешанная точность, использование тензорных ядер на GPU, компиляция кода PyTorch и оптимизации вниманием. В результате время одной итерации сокращается с 1000 мс до менее 100 мс.
- Настройка гиперпараметров. Выбираются гиперпараметры обучения в соответствии с теми, что использовались при тренировке оригинальных GPT-2 и GPT-3: оптимизатор AdamW, планировщик темпа обучения, градиентный клиппинг, распараллеливание на нескольких GPU и т. д. Также обсуждается выбор данных для обучения.
- Результаты обучения. Показываются примеры сгенерированного моделью текста, обсуждаются достоинства и ограничения воссозданной модели по сравнению с оригиналом.
Как превратить стандартную форму Django в модальное окно
Это видео демонстрирует процесс создания модального окна на основе Django-формы с использованием Tailwind CSS, HTMX и JavaScript. Цель – превратить обычную форму редактирования в более современное модальное окно, сохраняя при этом стандартную функциональность Django-формы.
Автор рассылки: Наталья Кайда
сейчас нейросети есть для генерации анимаций