🐏 herdr — agent-aware tmux 🐏
Сейчас есть много новых терминалов и отдельных приложений-оркестраторов для удобной работы с агентскими сессиями. У них есть общая проблема: нужно уходить из своего любимого терминала 😭😭😭 А управлять агентами в tmux из любимого терминала хоть и можно, но не так удобно.
Есть решение, которое сочетает сильные стороны обоих подходов: herdr — это как tmux, но с функциями для агентов. То есть с herdr вы получаете удобное управление агентскими сессиями в своем любимом терминале 🥰 🥰 🥰 И просто fancy замена для tmux, если вдруг нужно. Со всеми ожидаемыми функциями типа:
• Персистентные сессии
• Индикаторы активности агентов
• CLI интерфейс, чтобы агенты сами управляли сессиями в herdr
• Возможность запустить агента на remote машине с ноутбука и продолжить работу с телефона
• etc.
На всякий добавлю, что herdr — новый проект, который очень активно развивается, так что пока возможны баги и частые изменения. Но мне он показался важным, поэтому решил рассказать.
🧚 Pixi — современный менеджер пакетов и проектов из мира Conda 🧚
Сегодня расскажу про Pixi — более функциональный аналог uv из экосистемы Conda. Несмотря на то, что в Python проектах я использую только uv (и вам рекомендую), я также активно использую Pixi, но для других задач.
TL;DR
• Сегодня в мире Conda нужно использовать Pixi, а не Conda/Mamba/Micromamba.
• Команда pixi global служит sudo-free альтернативой apt на Linux с легким переносом глобального окружения между машинами.
• Команда pixi exec служит для одноразовых запусков инструментов без их установки (в духе uvx).
Кратко о Conda
Conda — это инструмент для управления пакетами, зависимостями и виртуальными средами. Сильно упрощая, это как PyPI+pip+virtualenv в Python, но без привязки к конкретному языку. Conda пакеты устанавливаются из так называемых "каналов". Самый большой публичный канал называется conda-forge, и в нем есть все от консольных утилит (Git, uv, neovim, etc.) до Python и C++ библиотек.
Кратко о Pixi
Сегодня при работе с экосистемой Conda нужно использовать Pixi, а не Conda/Mamba/Micromamba. Pixi оперирует теми же самыми базовыми сущностями (Conda среды, Conda каналы, Conda пакеты), но более надежно, воспроизводимо и удобно. Упрощая, Pixi в мире Conda — это как uv в мире Python, но с дополнительными возможностями.
Pixi как альтернатива apt на Linux
На Linux я активно использую команду pixi global как sudo-free альтернативу apt для установки глобальных инструментов: git, uv, python, и т.д. Например:
pixi global install python
python --version
cat $HOME/.pixi/manifests/pixi-global.toml
pixi exec для одноразовых запусков программ с любыми зависимостями без их установки. Скажем, запустить питон, никуда его не устанавливая:
pixi exec python --version
pixi exec -s "python=3.14.3" -s numpy python -c "import numpy"
Оптимизатор Muon добавили в PyTorch
Тут вышел PyTorch v2.9:
https://github.com/pytorch/pytorch/releases/tag/v2.9.0
Для меня главный хайлайт релиза — это torch.optim.Muon. Если знаете про Muon, то новость на этом всё :)
Если не слышали про Muon, то это такой оптимизатор, который согласно легенде появился в 2024 году в результате дискуссий на сайте икс-точка-ком. Официальной "статьей" про Muon является этот пост: https://kellerjordan.github.io/posts/muon. У Muon уже есть истории успеха на бенчмарках и реальных задачах, в том числе при обучении больших моделей.
Технический TL;DR:
(1) Muon — это как SGD с моментом, но момент градиента ортогонализируется перед его применением (код). То есть ищется ортогональная матрица, наиболее похожая на оригинальный момент градиента, и вот она уже применяется к параметру с учетом learning rate. Это существенное отличие от "поэлементных" оптимизаторов по типу SGD или Adam, которые смотрят на все параметры модели как на один плоский вектор.
(2) Muon используется только для матриц в скрытых слоях. Все остальные параметры (входные эмбеддинги, финальные слои, bias-ы в скрытых слоях, и т.д.), нужно продолжать оптимизировать AdamW или чем-то подобным. То есть в коде у вас будет два оптимизатора.
(3) Из интуиций, почему Muon работает, я слышал примерно такое: "By orthogonalizing the update matrix, Muon ensures that updates are distributed more evenly across all parameters, preventing some features from being over-represented or neglected" (конкретно эту формулировку я просто нагуглил).
(4) Из практических рекомендаций для Muon знаю про важность использования weight decay. Еще вижу в доках интересную опцию adjust_lr_fn, которая вроде как позволит переиспользовать гиперпараметры, которые вы затюнили для AdamW. Но сам не пробовал.
———
Я сам видел случаи, когда Muon давал качество лучше, чем AdamW, но наверняка тут зависит от задачи. Моё личное ощущение такое, что сообщество пока еще копит интуицию о пользе Muon для скорости обучения и финального качества в разных сетапах, но в целом все уже согласны, что это интересный апдейт для области. Вообще, добавление новых оптимизаторов в PyTorch — это редкость, и вот Muon решили добавить.
Если у вас есть какой-то опыт работы с Muon, будет интересно узнать.
📦 Python пакет для TabM
Небольшая новость для тех, кто следит за DL для табличных данных. Мы тут выпустили Python пакет для TabM — нашей tabular DL архитектуры, о которой я рассказывал раньше.
С момента анонса TabM прошел проверку практикой, и если в одном предложении, то TabM значительно усилил нишу практичных бейзлайнов в табличном DL. То есть взять TabM и получить хорошие результаты люди смогли в самых разных контекстах: и на Kaggle, и на масштабе 100M объектов, и в академических исследованиях.
Пакет делает чуть более доступным как сам TabM, так и эффективное ансамблирование, и предлагает такое:
- PyTorch реализация TabM
- PyTorch слои и функции для построения своих эффективных ансамблей.
- Jupyter/Colab пример с обучением TabM.
💻 pip install tabm
Ссылки:
- Пакет
- Colab пример
- Статья
🚀 TabM: новая DL архитектура для табличных данных
Новая большая статья по tabular DL при моем участии! Ссылки в конце поста.
Для практиков, TabM — это новый ответ на вечный вопрос: “Какую современную табличную архитектуру попробовать?”. На этот раз SOTA на бенчмарках простая, практичная и машстабируется на миллионы объектов.
Для области, TabM — это история о том, как сделать лучше, проще и дешевле одновременно. И как показать это на красивых информативных графиках 💅
Для любителей ML, TabM — это удобная точка входа в область: мы замерили и task performance, и training times, и inference throughput у многих моделей. Думаю, вводные части тоже будут интересными!
Для всех читателей: для быстрого обзора статьи, вы можете посмотреть всего три части:
📜 Abstract — TL;DR
🖼️ Figure 1 — модель
📈 Page 7 — результаты
В одном предложении: TabM is a simple and powerful tabular DL architecture that efficiently imitates an ensemble of MLPs.
Ссылки:
- arXiv
- GitHub
- Twitter
- Reddit
СОВЕТ ДНЯ: красивые Matplotlib графики в одну строчку
Как в одну строчку увеличить разрешение Matplotlib графиков, чтобы они наконец стали красивыми, а не мыльными:
# In Jupyter, after imports:
%config InlineBackend.figure_format='retina'
# Or:
import matplotlib_inline
matplotlib_inline.backend_inline.set_matplotlib_formats('retina')
import matplotlib.pyplot as plt
import numpy as np
# First, run as-is.
# Then, uncomment the next line and rerun.
# %config InlineBackend.figure_format='retina'
plt.plot(np.arange(10))
P.S. Расширения для VSCode
Небольшое практическое дополнение:
- у подобных инструментов обычно есть расширения для VSCode, чтобы их можно было установить и начать использовать по кнопке (добавил расширение для Ruff в предыдущий пост)
- с недавнего времени в настройках этих расширений стала появляться опция “Import Strategy” с опцей “useBundled”, то есть оно само вам установит и настроит инструмент (например Ruff; кстати напомню, что в расширении для Ruff можно отключить фиксы вашего кода и оставить только фукнции линтера)
- имхо такой путь больше подходит для личных и ресерч проектов, а для большой командной разработки на мой слух более надежно звучит Import Strategy = “fromEnvironment” (нужно будет самому установить и настроить инструмент)
🐍 Python 3.12 🐍
Вышел!
Вижу только одно большое изменение, с учетом которого мы будем писать код, это "Type Parameter Syntax”, о котором был пост год назад. TL;DR: больше не нужен typing.TypeVar:
def max[T](args: Iterable[T]) -> T: …
def max_number[T: (int, float)](args: Iterable[T]) -> T: …
# вот так теперь не надо
# Point = tuple[float, float]
# Point: TypeAlias = tuple[float, float]
# надо вот так
type Point = tuple[float, float]
type Point[T] = tuple[T, T]
# пример для ценителей:
type RecursiveList[T] = T | list[RecursiveList[T]]
Задачи на табличных данных
Это нетехнический краткий пост про саму область анонсированной статьи, можно смело пропускать если знаете.
Упрощая, исследуя нейросети для табличных данных, люди стремятся не к получению штучных сложных результатов (о которых мы обычно слышим, в духе “обыграть человека в шахматы” или вот ChatGPT), а к улучшению существующих решений на огромном числе задач “попроще”, и туда входит действительно миллион всего: от прогноза погоды на завтра и рекомендации фильмов до классификации частиц в физике высоких энергий.
И расклад такой:
- очень часто данные в этих задачах — по сути Excel таблички
- нейросетям на таких табличных данных тяжело 🙁
- если улучшить нейросети для табличных данных, то миру будет хорошо 👍
@simple_it_channel
Привет! Сегодня будет анонс новой статьи про нейронные сети для табличных данных, где я первый автор. Проект получился большим, анонс и контент вокруг статьи займут больше, чем один пост. Надеюсь, будет интересно!
P.S. Сужение канала до одной этой темы точно не планируется :)
@simple_it_channel
О канале + хайлайты
Небольшая заметка для постоянных и будущих гостей 🙂
Хайлайты
- /channel/simple_it_channel/52
- /channel/simple_it_channel/28
- /channel/simple_it_channel/34
Обо мне
Меня зовут Юра, МФТИ/ШАД/Яндекс, сначала был (ML) инженером, а сейчас ML исследователь. Основная тема — Deep Learning для табличных данных. Целевые конференции — NeurIPS/ICLR/ICML. Ссылки на профили:
- GitHub
- Twitter
- Google Scholar
О канале
- IT в целом, Python в частности, Machine Learning / Deep Learning / Data Science, полезные библиотеки, инструменты и философия по всем этим темам -- вот всякое такое тут было и будет.
- Пока выходит, что контент больше про долгосрочное и практичное, чем про новостное.
- В постах я делюсь тем, что мне самому приносит пользу и радость.
Добро пожаловать!
@simple_it_channel
Инструменты профилирования в Python
На PyCon 2023 было вводное выступление про профилирование (Python Profiling State of the World), которое дает повод обновить шортлист на эту тему. Шортлист — это что-то типа минимального набора, который покрывает большинство кейсов и который я бы рассматривал для своей реальной практики.
У меня так:
- py-spy для CPU (можно применить даже к уже запущенному процессу)
- memray для RAM
- speedscope для просмотра flamecharts (это чуть более модная версия flamegraphs, и py-spy нативно умеет выдавать speedscope формат, узнал это все из видео)
- torch.profiler для пользователей PyTorch (не путать со старым `torch.autograd.profiler`), есть визуализация в TensorBoard.
И немного выходя за пределы шортлиста:
- cProfile, потому что входит в стандартную библиотеку
- scalene, потому что в теории умеет все сразу (CPU, RAM, GPU, и так далее).
@simple_it_channel
Темная тема в Python 3.12
Изменение, после которого вы наконец переедете с Ruby на Python: в документации Python 3.12 появится темная тема.
Включается сверху справа, и уже можно пользоваться, не дожидаясь осени, если заходить именно по этой ссылке.
Вот такой маленький весенний пост для любителей Python! 💐😊
@simple_it_channel
(случайно сломал комментарии к посту, можно писать их сюда)
Читать полностью…
Jupyter в браузере в один клик без сторонних сервисов
Иногда хочется открыть Jupyter-тетрадку как черновик для быстрого теста, но открывать ради этого терминал, запускать jupyter, создавать тетрадку, а потом удалять ее, или идти в сторонний сервис — это все лень и неудобно.
Решение — добавить в закладки любую из двух ссылок и получать тетрадки-черновики в один клик:
- https://jupyter.org/try-jupyter
- https://jupyterlite.readthedocs.io/en/latest/_static/lab/index.html
Там даже сразу доступны популярные data science библиотеки. Очень хорошо 👍
Кому интересны технические детали, то ссылки выше работают на JupyterLite. Он в свою очередь использует Pyodide — реализацию питона, которая работает прямо в вашем браузере, то есть нет никакого питона "на сервере" и cPython’ы с вашего компьютера тоже не используются.
@simple_it_channel
🌐 sendme — инструмент для peer-to-peer обмена файлами 🌐
Иногда хочется поделиться файлами с другими людьми напрямую с ноутбука или удаленной машины, не загружая их ни в какое облако, мессенджер или репозиторий. Для этого есть разные инструменты, но хочу рассказать именно про sendme, который построен на интересном фреймворке iroh.
TL;DR (sendme)
Если у вас есть Pixi (рекомендую), то больше ничего и не нужно, просто делаете так:
pixi exec sendme send <FILE OR DIRECTORY>
pixi exec sendme receive <TICKET>
Muon — сильная альтернатива AdamW для табличных DL моделей
Небольшой техрепорт от нашей tabular DL команды со сравнением оптимизаторов для современных табличных MLP, включая TabM:
https://arxiv.org/abs/2604.15297
В итоге рекомендуем попробовать для ваших tabular DL моделей, если еще не:
• Muon
• AdamW + EMA
Детали про Muon:
• Для успеха могут быть важны learning rate и weight decay. Скажем, у нас у Muon отдельный lr с более высокими характерными значениями, чем у AdamW.
• С Muon обучение будет дольше.
В нашу редакцию поступила обратная связь от топ-4 мирового рейтинга Kaggle
Читать полностью…
pylock.toml — новый стандарт локфайлов в Python
Вчера был одобрен эпический PEP 751, который вводит стандартный формат локфайлов в Python. Несколько лет дизайна, итераций и обсуждений, почти тысяча лайков на Reddit у этой новости, в общем большое событие.
Если вы знаете, что такое локфайлы, то новость на этом заканчивается. Называться будет pylock.toml, теперь ждем пока все инструменты постепенно на него переедут.
Если не знаете, то lockfile -- это просто текстовый файл определенного формата с полным описанием вашего Python окружения. Грубо говоря, у Python проектов будет ожидаться pylock.toml вместо requirement.txt. Детали:
- В `pylock.toml` будут записаны все установленные пакеты, включая непрямые зависимости, с их точными версиями, для всех ОС сразу, со всеми вариациями дополнительных зависимостей и прочей технической информацией.
- Это очень полезно, потому что теперь у пользователей и участников проекта будет устанавливаться в точности одинаковое Python окружение (и с гораздо большей вероятностью успеха). В общем pylock.toml сильно упрощает жизнь другим пользователям проекта, включая будущих вас :)
- Чтобы у вас в проекте появился pylock.toml, нужно будет пользоваться инструментами типа uv, а список прямых зависимостей писать в pyproject.toml вместо requirements.txt. На самом деле это рекомендуется делать уже сегодня. Просто пока uv порождает "нестандартный" uv.lock вместо "стандартного" pylock.toml, но это разработчики uv сами уже изменят в будущем.
🎉 Zed на Linux 🎉
Добрая летняя новость: текстовый редактор Zed стал доступен на Linux: https://zed.dev/download
На Windows все еще не доступен.
Я когда-то писал про Zed, стабильно использую его как открывашку для файлов и репозиториев для чтения и быстрых правок. Но remote development все еще нет.
@simple_it_channel
uv — очень быстрый pip на стероидах с большими абмициями
Пост будет особенно полезным, если раньше не сталкивались с pip-tools. В конце есть пример испольвания.
uv — это новый и полезный уже сейчас инструмент от компании Astral, которая раньше сделала Ruff. Долгосрочная цель авторов очень амбициозная -- сделать uv единым инструментом для работы с Python и заменить все отдельные инструменты: pip, pyenv, virtualenv, pip-tools, ruff, tox, pipx, и т.д. В итоге любой инженер, аналитик, исследователь или студент сможет легко и единообразно устанавливать Python окружения и разрабатывать Python проекты.
В своей первой итерации uv — это в ~2x-100x раз более быстрая замена трём инструментам:
(1) pip. То есть uv очень быстро устанавливает Python пакеты, что особенно актуально для сложных окружений и особенно когда они устанавливаются регулярно (например, в Continuous Integration). Но и в быту при установке условного Jupyter ускорение в 5-10 раз ощущается очень приятно.
(2) pip-tools. Напомню, что в проектах важно фиксировать не только прямые зависимости (скажем, Django==5.0.3), но и непрямые (те пакеты, которые Django приносит с собой). Это нужно, чтобы у всех пользователей и на всех машинах было идентичное окружение. pip-tools помогает решить ровно эту задачу: он автоматически генерирует и поддерживает в актуальном состоянии ваш requirements.txt файл с полным списком зависимостей. А uv делает то же самое, но гораздо быстрее.
(3) venv & virtualenv. На фоне предыдущих пунктов создание виртуальной среды это скорее мелочь, но даже эту мелочь uv делает ощутимо быстрее :)
Я использовал uv пару раз для простых личных сценариев. Софт свежий, и чтобы понять, подходит ли он вам, можно посмотреть текущие ограничения и баги. По моему опыту и инфополю думаю, что установка обычных пакетов на linux/macos машины уже нормально работает.
---------
После установки uv можно скопировать и запустить примеры ниже в таком же порядке (проверено на v0.1.24).
Создать и активировать среду:
mkdir hello-world && cd hello-world
uv venv
source .venv/bin/activate
uv pip install pandas
echo '[project]
name = "hello-world"
dependencies = ["scikit-learn==1.4.1.post1", "Django==5.0.3"]
' > pyproject.toml
uv pip compile pyproject.toml -o requirements.txt
uv pip sync requirements.txt
Ruff Formatter
(если не знаете про Ruff, писал о нем вот тут)
Теперь Ruff умеет форматировать код! Хайлайты из официального релиза:
- extremely fast Python formatter, written in Rust
- over 30x faster than Black
- >99.9% Black compatibility.
Официальный релиз: link
Расширение для VSCode: link
Добавлю от себя:
- По-прежнему не вижу опции валидации байткода после изменений, которые Ruff проделывает. Эта опция в black включена по умолчанию, она формально строго проверяет, что форматирование не изменило смысл кода. Хотелось бы видеть такую опцию для только что релизнутого инструмента, который собрался менять мой код. Думаю создам issue, и пока продолжу использовать black.
- Об этом нет в релизе, но я вот потестировал, и видимо ruff format не сортирует импорты, это остается отдельной функцией Ruff. Кстати, я немного устал от багов конкретно в сортировке импортов, и ближайшие полгода-год посижу на isort.
- И все равно, Ruff — это очень круто, давно использую его как линтер, и в будущем конечно полностью на него перееду.
🎉 Анонс статьи всё 🎉
Я обновил оригинальный пост, и теперь там есть ненапряжный технический обзор статьи, который можно прочитать за завтраком ☕️
Так что вот еще раз ссылка (клик) и всем спасибо за внимание! 🤗
TabR — новая нейросеть для табличных данных
Finally, анонс нашей статьи: "TabR: Unlocking the Power of Retrieval-Augmented Tabular Deep Learning"! Я там первый автор, но конечно это командная работа.
🙂 ПЛАН ПРЕЗЕНТАЦИИ 🙃
1. основные ссылки в этом посте ниже
2. ТЕХНИЧЕСКИЙ РАЗБОР СТАТЬИ — В КОММЕНТАРИЯХ К ЭТОМУ ПОСТУ (клик)
3. следующий пост — нетехнический комментарий об области в целом.
Ссылки:
- Статья
- Код
- Тред в Twitter с обзором модели и результатов
- Пост на Reddit
P.S. Картинка показывает прогресс нейросетей (DL models) на каких-то 43 задачах начиная с 2021 года. И тут есть прикольный plot twist, который касается всех моделей, кроме MLP: FT-Transformer и MLP-PLR взяты из наших же предыдущих статей :)
- FT-Transformer взят отсюда
- MLP-PLR взят отсюда
@simple_it_channel
Небольшие новости
Привет! Сорри за кучу уведомлений за последние пять минут, на сегодня всё!
Надеюсь, скоро на работе доделаем и выпустим новую статью про нейронки для табличных данных, где я первый автор. Об этом напишу отдельно, а пока две небольшие новости.
Написал о себе и о канале (pinned). Надеюсь, вам тут хорошо 🙂
Поделился промежуточными результатами из этой work-in-progress-статьи про сравнение Deep Learning и XGBoost (твит). В чем штука: мы взяли свои DL модели из наших предыдущих статей, и протестировали их на новых датасетах, о которых мы раньше не знали. Это очень важный тест, который проверяет, обобщаются ли наши результаты на новые задачи (спойлер: да).
@simple_it_channel
Zed — текстовый редактор нового поколения (+ бонус для vim юзеров)
TL;DR:
- Zed — самый интересный для меня проект в нише next generation text editor
- использую его для чтения и мелкого редактирования
- пока на начальных этапах развития, в частности macOS-only 😕
- ссылка
Почему люди пытаются сделать новый редактор, когда есть VSCode? Если отвечать одним словом: Скорость.
Все такие новые проекты, включая Zed — это мощнейший привет из эры Sublime, где редакторы с GUI открываются мгновенно, а буквы печаются без лагов. Это сложно продать на уровне цифр: речь скорее про ощущения, эстетику и приятные эмоции. Именно они, а не сама по себе скорость будут влиять на ваше вдохновение, настроение и работу.
Почему из всех таких проектов мне интересен именно Zed? Потому что авторы Zed:
- это крутые ребята, которые уже переворачивали индустрию текстовых редакторов 😎 Среди них (со)авторы Atom (родитель VSCode), tree-sitter (умный анализ кода вместо регулярных выражений) и даже Electron (на этой технологии живет вообще миллион всего живет, включая VSCode).
- c серьезным настроем: они собираются монетизировать проект. При всей моей симпатии к бесплатным open-source экспериментам, хочется появления полноценного продукта, очень жду.
В Zed уже можно видеть проявления их strong opinion на тему того, каким должен быть современный редактор:
- изначальная поддержка совместного редактирования 🌚🌝
- встроенный голосовой чат 🤯
- уже поддержан copilot 🤖
- etc. (вообще прикольно почитать их faq)
P.S. Про нишу next-gen vim. Я в ней мало что понимаю, но для ценителей поделюсь ссылкой на проект, который по моим наблюдениям получает больше всего внимания, вдруг будет интересно:
https://github.com/helix-editor/helix
P.P.S. Sublime F ((
@simple_it_channel
PyCon US 2023
На конференциях по языкам программирования порой можно найти действительно классные и полезные выступления. В этой заметке расскажу о некоторых видео с последнего PyCon (большая ежегодная конференция по питону). Вдруг вам тоже интересно заглянуть внутрь последних оптимизаций интерпретатора, узнать побольше о профилировании (будет отдельным постом!), наконец понять как устроены все эти ваши FastAPI, или даже побраузить все выступления и сохранить себе пару видео :)
🔥 Inside web framework: intro to the ASGI spec, middleware and apps
FINALLY!!! Прямо тот самый случай, когда давно хотелось получить базовое представление о теме, и вот выходит эксперт и все раскладывает по полочкам за 20 минут. Отличное видео, если тоже хотите узнать что же это за такие ASGI, middleware, starlette, и прочие такие слова, лежащие в основе web фрэймворков.
Inside CPython 3.11's new specializing, adaptive interpreter
How we are making CPython faster. Past, present and future
Два видео на тему того как питон становится быстрее. Если вы на курсах не обсуждали интепретаторы/компиляторы/ассемблер, то прямо рекомендую. Если обсуждали, то видео можно посмотреть ради конкретики, но магии там скорее нет. Вообще, когда узнаёшь, насколько недавно сделали некоторые простые оптимизации, вспоминаешь, что Python в итоге open source проект, и темпы его развития сильно зависят от времени и энтузиазма волонтеров. Огромное им спасибо, кстати ❤️
Algorithmic ideas, engineering tricks, and trivia behind CPython's new sorting algorithm
В питоне обновился алгоритм сортировки, и это просто красиво: разделить входной массив на изначально отсортированные отрезки и мержить соседние отрезки в оптимальном порядке до сходимости, конец.
A Per-Interpreter GIL: Concurrency and Parallelism with Subinterpreters
Давайте так, если вам слушать о вещах которые будут не раньше 3.13 (но точно будут, PEP приняты), то можно посмотреть, как многопоточность в питоне улучшается в плане скорости. Иначе можно спокойно отложить знакомство с темой на годик-другой.
<о профилировании>
про это будет милый маленький пост в понедельник
⭐️ Не забудьте поставить зведочку питону ⭐️
@simple_it_channel
Ставить ли звезды на GitHub?
Люди делятся на два типа: кто-то активно ставит звезды репозиториям, а кто-то бережет звезды на Особый Случай.
Я ставлю много звезд GitHub репозиториям самой разной тематики и популярности, и в этом посте я хочу поделиться субъективным мнением, почему ставить звезды — это хорошо.
⭐ Начать хочу с такой мысли: звезды — UI баг гитхаба. Они ассоциируются с "добавить в избранное", что подсознательно повышает планку для такого действия. Думаю, это было причиной, почему я сам долгое время не ставил звезды.
⭐ Потом я понял, что звезда на GitHub — это аналог кнопки "like", и что это простой и удобный способ выразить одобрение к проекту в широком смысле. За этим может быть разная конкретика: моя симпатия к проекту, моя поддержка авторов проекта, моя заинтересованность в дальнейшем развитии проекта и т.д.
⭐ Отдельно хочется выделить поддержку авторов. За многими бесплатными для нас проектами стоит труд и творческий порыв конкретных людей. И если вы одобряете проект, то почему бы не сказать им "спасибо" цифровой звездочкой? Они будут рады, и с достаточным числом звезд могут поменять подход к проекту с "прикол для себя" на более серьезный.
⭐ Так я пришел к тому, что теперь ставлю звезды без оглядки на популярность (от десятка звезд до десятков тысяч звезд) и область (ML & DL, языки программирования, низкоуровневые GPU библиотеки, Web, темы для персональных сайтов, ...). Вот недавно интересовался темой простых key-value хранилищ для Python, поставил звезду Tritcask. А еще давно поставил звезду PyTorch — важному для меня инструменту. А еще Zig , самый милый из новых ЯП :) И так так далее, и так далее, и вот уже >200 звезд.
⭐ Коллеги, делитесь этим постом, хорошие проекты заслуживают больше звезд!
P.S. Вы видели, сколько звезд у проектов из мира Web, и особенно Frontend? Ощущение, что десятки тысяч — это просто дефолт, ниже которого нельзя опускаться, люди просто не поймут. У React звезд больше, чем у ядра Linux. Круто.
@simple_it_channel
Flit & Ruff (полезные инструменты для Python)
(комментировать можно в следующем посте)
Пара полезностей из мира Python tooling, которые сам использую на практике.
Flit
Вот придумали вы типичную Python библиотеку, которая состоит только из .py файлов, и хотите загрузить ее на PyPI (публичный или рабочий), живя в модном мире с pyproject.toml и всеми PEP стандартами. Flit — максимально простое и приятное решение ровно (и только) для этого, это буквально Press X to Win, 10/10. Например, FastAPI долгое время жил на Flit (причем ушел с него по недоразумению, а не по реальной нужде).
Ruff
Это новый must have линтер, который на порядки (буквально) быстрее старичков типа flake8, isort и т.д. Ощущение, что на него переезжают буквально все, просто нереальный хайп, и абсолютно по делу. Поэтому добавлю менее очевидное:
- Расширение Ruff в VSCode по-умолчанию фиксит недостатки в вашем коде. Казалось бы, окей, прямо как black. Но вы знали, что black после своих изменений валидирует результат на уровне AST? Ruff так пока не делает (как минимум потому что меняет не только стиль вашего кода), и бывает всякое. Не знаю как тут правильно быть, лично я пока отключил эту функцию.
- Автор Ruff запустил стартап Astral, целиком посвященный Python tooling! Супер круто. Среди основателей — автор maturin (это когда ваша Python библиотека использует Rust модули, и надо это как-то билдить и опять же загружать на PyPI). В общем press F for flake8 etc., black приготовиться.
А расскажите, какие инструменты для Python вам приносят пользу?
@simple_it_channel
Branch prediction в Python (Bonus part)
(начало поста)
заходят как-то в бар CPython 3.9.16, Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz и Ubuntu 18.04.6 ...
Ставь 🔥 если сгорел с этого результата.
Подпишись если ты branch predictor.