🐍 Итоги недели в мире Python и обзоры новых инструментов: как генерировать анимацию на Python

🐍 Итоги недели в мире 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-формы.

Автор рассылки: Наталья Кайда

3
1 комментарий

сейчас нейросети есть для генерации анимаций

Ответить