В CPython ускорили reference counting
В CPython основа управления памятью это reference counting: у каждого объекта есть счётчик ссылок, и при каждом “взял/отпустил” он инкрементится/декрементится. В цикле, который крутится очень много раз, это превращается в ощутимый оверхед и лишние записи в память (да, даже чтение переменной = запись из-за refcount).
С Python 3.14 добавили новую байткод-инструкцию: LOAD_FAST_BORROW.
Что меняется:
- раньше LOAD_FAST грузил локалку и поднимал refcount
- теперь LOAD_FAST_BORROW грузит локалку без инкремента
- есть ещё “склеенные” опкоды типа LOAD_FAST_BORROW_LOAD_FAST_BORROW (две загрузки за один opcode)
Зачем это нужно:
- меньше дергаем refcount в hot-path
- меньше мусора в CPU cache
- быстрее на циклах, где ты постоянно читаешь одни и те же локальные переменные
Но оптимизация включается не всегда. CPython применяет её только когда может доказать безопасность через статический анализ времени жизни (по CFG):
- значение используется “локально” и быстро потребляется
- не утекает в heap/генераторы/кадры
- источник не перезаписывается так, чтобы сломать “borrow”
Это похоже на упрощённые Rust lifetimes/borrowing, только на уровне байткода.
👉 @PythonPortal
В CPython основа управления памятью это reference counting: у каждого объекта есть счётчик ссылок, и при каждом “взял/отпустил” он инкрементится/декрементится. В цикле, который крутится очень много раз, это превращается в ощутимый оверхед и лишние записи в память (да, даже чтение переменной = запись из-за refcount).
С Python 3.14 добавили новую байткод-инструкцию: LOAD_FAST_BORROW.
Что меняется:
- раньше LOAD_FAST грузил локалку и поднимал refcount
- теперь LOAD_FAST_BORROW грузит локалку без инкремента
- есть ещё “склеенные” опкоды типа LOAD_FAST_BORROW_LOAD_FAST_BORROW (две загрузки за один opcode)
Зачем это нужно:
- меньше дергаем refcount в hot-path
- меньше мусора в CPU cache
- быстрее на циклах, где ты постоянно читаешь одни и те же локальные переменные
Но оптимизация включается не всегда. CPython применяет её только когда может доказать безопасность через статический анализ времени жизни (по CFG):
- значение используется “локально” и быстро потребляется
- не утекает в heap/генераторы/кадры
- источник не перезаписывается так, чтобы сломать “borrow”
Это похоже на упрощённые Rust lifetimes/borrowing, только на уровне байткода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤9
Что если бы ты мог увидеть всё дерево зависимостей одной командой?
Отлаживать конфликты версий можно только когда понимаешь, какие пакеты от чего зависят. Но вручную разбирать эти связи в куче вложенных зависимостей это уныло и долго.
uv tree делает это автоматически: выводит полный граф зависимостей, чтобы ты мог отследить любой пакет и понять, откуда он подтянулся.
Ключевые возможности:
✅ Полная визуализация зависимостей
✅ Помечает зависимости, для которых есть доступные обновления
✅ Показывает, какие пакеты зависят от конкретной библиотеки
✅ Фильтрует дерево, чтобы показать только зависимости выбранного пакета
Установка
👉 @PythonPortal
Отлаживать конфликты версий можно только когда понимаешь, какие пакеты от чего зависят. Но вручную разбирать эти связи в куче вложенных зависимостей это уныло и долго.
uv tree делает это автоматически: выводит полный граф зависимостей, чтобы ты мог отследить любой пакет и понять, откуда он подтянулся.
Ключевые возможности:
Установка
uv: pip install uvPlease open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥2
Коллекция книг по машинному обучению и искусственному интеллекту в формате PDF: забираем
👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁117❤12
Лучшие репозитории GitHub для изучения ИИ с нуля в 2026 году:
1. Андрей Карпаты
https://github.com/karpathy/nn-zero-to-hero
2. Hugging Face Transformers
https://github.com/huggingface/transformers
3. FastAI/fastb
https://github.com/fastai/fastbook
4. Made-With-ML
https://github.com/GokuMohandas/Made-With-ML
5. ML System Design
https://github.com/chiphuyen/machine-learning-systems-design
6. Awesome Generative AI guide(
https://github.com/aishwaryanr/awesome-generative-ai-guide
7. Dive into Deep Learning
https://github.com/d2l-ai/d2l-en
👉 @PythonPortal
1. Андрей Карпаты
https://github.com/karpathy/nn-zero-to-hero
2. Hugging Face Transformers
https://github.com/huggingface/transformers
3. FastAI/fastb
https://github.com/fastai/fastbook
4. Made-With-ML
https://github.com/GokuMohandas/Made-With-ML
5. ML System Design
https://github.com/chiphuyen/machine-learning-systems-design
6. Awesome Generative AI guide(
https://github.com/aishwaryanr/awesome-generative-ai-guide
7. Dive into Deep Learning
https://github.com/d2l-ai/d2l-en
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3
Топ-5 алгоритмов rate limiting, которые стоит знать:
➡️ Token Bucket
Ведро пополняется токенами с фиксированной скоростью. Каждый запрос съедает 1 токен.
Если токенов нет (ведро пустое) -> запрос троттлится.
Отлично, когда надо разрешить короткие всплески, но держать среднюю скорость запросов.
➡️ Fixed Window Counter
Делит время на фиксированные окна (например, по минуте).
Считает запросы в текущем окне. Если счётчик превысил лимит -> блок.
Просто внедрить, но есть проблема со всплесками на границах окон.
➡️ Leaky Bucket
Представь очередь, которая “протекает” с постоянной скоростью.
Если новые запросы переполняют очередь -> они дропаются.
На выходе получается ровный, предсказуемый поток запросов.
➡️ Sliding Window Log
Хранит timestamp для каждого запроса.
На каждый новый запрос выкидывает старые timestamp’ы за пределами окна и считает оставшиеся.
Очень точно, но дороговато по памяти на больших объёмах.
➡️ Sliding Window Counter
Гибрид Fixed Window и Log.
Делит окно на мелкие бакеты и считает скорость через взвешенную сумму.
Хороший баланс точности и расхода памяти.
Какой из них вы чаще всего используете в проде?
👉 @PythonPortal
Ведро пополняется токенами с фиксированной скоростью. Каждый запрос съедает 1 токен.
Если токенов нет (ведро пустое) -> запрос троттлится.
Отлично, когда надо разрешить короткие всплески, но держать среднюю скорость запросов.
Делит время на фиксированные окна (например, по минуте).
Считает запросы в текущем окне. Если счётчик превысил лимит -> блок.
Просто внедрить, но есть проблема со всплесками на границах окон.
Представь очередь, которая “протекает” с постоянной скоростью.
Если новые запросы переполняют очередь -> они дропаются.
На выходе получается ровный, предсказуемый поток запросов.
Хранит timestamp для каждого запроса.
На каждый новый запрос выкидывает старые timestamp’ы за пределами окна и считает оставшиеся.
Очень точно, но дороговато по памяти на больших объёмах.
Гибрид Fixed Window и Log.
Делит окно на мелкие бакеты и считает скорость через взвешенную сумму.
Хороший баланс точности и расхода памяти.
Какой из них вы чаще всего используете в проде?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣76👍6🔥2❤1👀1
Расширенный алгоритм Евклида.
1) Что такое расширенный алгоритм Евклида
Для двух целых чисел a и b и их НОД, то есть gcd(a, b), выполняется линейное уравнение с двумя переменными:
a·x + b·y = gcd(a, b) (1)
Расширенный алгоритм Евклида это способ найти одну пару целочисленных решений (x, y), которая удовлетворяет (1).
2) Алгоритм расширенного алгоритма Евклида
Перед тем как перейти к сути, вспомним обычный алгоритм Евклида.
Для двух целых a и b следующими шагами получаем:
gcd(a, b) = rₙ (2)
Сама цепочка делений с остатком:
a = b·q₀ + r₀
b = r₀·q₁ + r₁
r₀ = r₁·q₂ + r₂
...
rₙ₋₂ = rₙ₋₁·qₙ + rₙ
rₙ₋₁ = rₙ·qₙ₊₁
Теперь посмотрим на первую строку:
a = b·q₀ + r₀
r₀ = a − b·q₀
То есть r₀ можно выразить как линейную комбинацию a и b.
Подставим это во вторую строку:
b = r₀·q₁ + r₁
b = (a − b·q₀)·q₁ + r₁
b = a·q₁ − b·q₀·q₁ + r₁
r₁ = −a·q₁ + b·(q₀·q₁ + 1)
Получается, r₁ тоже выражается через a и b.
Если повторять эту операцию, то каждый rᵢ (0 ≤ i ≤ n) можно представить как сумму кратных a и b.
Значит, в конце:
rₙ = k·a + l·b
А из (2) получаем:
k·a + b·l = gcd(a, b) (3)
Это та же форма, что и (1). Сравнивая (1) и (3), получаем:
(x, y) = (k, l)
и эти k и l будут одной из пар целочисленных решений.
3) Реализация расширенного алгоритма Евклида
Опираясь на вышеописанное, реализуем расширенный алгоритм Евклида:
Очень просто, правда?
Ну всё. Пока.🛌
👉 @PythonPortal
1) Что такое расширенный алгоритм Евклида
Для двух целых чисел a и b и их НОД, то есть gcd(a, b), выполняется линейное уравнение с двумя переменными:
a·x + b·y = gcd(a, b) (1)
Расширенный алгоритм Евклида это способ найти одну пару целочисленных решений (x, y), которая удовлетворяет (1).
2) Алгоритм расширенного алгоритма Евклида
Перед тем как перейти к сути, вспомним обычный алгоритм Евклида.
Для двух целых a и b следующими шагами получаем:
gcd(a, b) = rₙ (2)
Сама цепочка делений с остатком:
a = b·q₀ + r₀
b = r₀·q₁ + r₁
r₀ = r₁·q₂ + r₂
...
rₙ₋₂ = rₙ₋₁·qₙ + rₙ
rₙ₋₁ = rₙ·qₙ₊₁
Теперь посмотрим на первую строку:
a = b·q₀ + r₀
r₀ = a − b·q₀
То есть r₀ можно выразить как линейную комбинацию a и b.
Подставим это во вторую строку:
b = r₀·q₁ + r₁
b = (a − b·q₀)·q₁ + r₁
b = a·q₁ − b·q₀·q₁ + r₁
r₁ = −a·q₁ + b·(q₀·q₁ + 1)
Получается, r₁ тоже выражается через a и b.
Если повторять эту операцию, то каждый rᵢ (0 ≤ i ≤ n) можно представить как сумму кратных a и b.
Значит, в конце:
rₙ = k·a + l·b
А из (2) получаем:
k·a + b·l = gcd(a, b) (3)
Это та же форма, что и (1). Сравнивая (1) и (3), получаем:
(x, y) = (k, l)
и эти k и l будут одной из пар целочисленных решений.
3) Реализация расширенного алгоритма Евклида
Опираясь на вышеописанное, реализуем расширенный алгоритм Евклида:
# extended_eucledean.py
def extended_eucledean(a, b):
if b == 0:
return (1, 0)
else:
xd, yd = extended_euclid(b, a % b)
return (yd, xd - a // b * yd)
Очень просто, правда?
Ну всё. Пока.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🤯9❤8👍2🤣1
Теперь можно парсить почти любой документ одной моделью на 1.7B параметров.
Она называется dots-ocr. Одна система, которая умеет работать с текстом, таблицами, формулами, изображениями и PDF на 100+ языках.
Без отдельного OCR-пайплайна. Без моделей под конкретные задачи.
100% исходный код👏
👉 @PythonPortal
Она называется dots-ocr. Одна система, которая умеет работать с текстом, таблицами, формулами, изображениями и PDF на 100+ языках.
Без отдельного OCR-пайплайна. Без моделей под конкретные задачи.
100% исходный код
Please open Telegram to view this post
VIEW IN TELEGRAM
❤27👍9
Клонируй любой голос по 5-секундному аудиоклипу.
VoxCPM это open-source проект, который делает TTS принципиально иначе.
большинство TTS-систем сначала переводят речь в дискретные токены. это становится бутылочным горлышком и ограничивает, насколько “живым” может быть звук.
VoxCPM вообще пропускает токенизацию. он моделирует аудио в непрерывном пространстве через end-to-end diffusion autoregressive архитектуру.
в итоге получается речь, которая реально звучит по-человечески.
вот что в нем особенного:
> контекстно-зависимая генерация: читает текст и сам подбирает нужную просодию, эмоцию и темп. ручной тюнинг не нужен.
> zero-shot клонирование голоса: даешь короткий аудиоклип, и он ловит не только тембр, но и акцент, ритм и эмоциональный окрас.
модель обучали на 1.8 млн часов билингвальных данных (английский и китайский)
* поддерживает streaming synthesis
* работает и с full fine-tuning, и с LoRA
* простой Python API:
VoxCPM1.5 гоняет на 44.1kHz sampling rate и имеет 800M параметров. поэтому звук заметно более четкий и натуральный.
лицензия Apache-2.0
👉 @PythonPortal
VoxCPM это open-source проект, который делает TTS принципиально иначе.
большинство TTS-систем сначала переводят речь в дискретные токены. это становится бутылочным горлышком и ограничивает, насколько “живым” может быть звук.
VoxCPM вообще пропускает токенизацию. он моделирует аудио в непрерывном пространстве через end-to-end diffusion autoregressive архитектуру.
в итоге получается речь, которая реально звучит по-человечески.
вот что в нем особенного:
> контекстно-зависимая генерация: читает текст и сам подбирает нужную просодию, эмоцию и темп. ручной тюнинг не нужен.
> zero-shot клонирование голоса: даешь короткий аудиоклип, и он ловит не только тембр, но и акцент, ритм и эмоциональный окрас.
модель обучали на 1.8 млн часов билингвальных данных (английский и китайский)
* поддерживает streaming synthesis
* работает и с full fine-tuning, и с LoRA
* простой Python API:
pip install voxcpmVoxCPM1.5 гоняет на 44.1kHz sampling rate и имеет 800M параметров. поэтому звук заметно более четкий и натуральный.
лицензия Apache-2.0
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11💊6👍3😢1
This media is not supported in your browser
VIEW IN TELEGRAM
Задеплой любую ML-модель как MCP-сервер.
LitServe: самый простой способ выкатывать агентов, RAG и вообще любые ML-модели. Теперь есть поддержка MCP.
Полностью open-source.
👉 @PythonPortal
LitServe: самый простой способ выкатывать агентов, RAG и вообще любые ML-модели. Теперь есть поддержка MCP.
Полностью open-source.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍6
Держи сотни гигабайт свежих уроков, и каждую неделю мы подкидываем ещё!
• 1612 ГБ — DevOps
• 1402 ГБ — Python
• 1300 ГБ — C, C++
• 1815 ГБ — Frontend
• 1515 ГБ — Backend
• 898 ГБ — ИБ, Хакинг
• 996 ГБ — Kotlin, Swift
• 212 ГБ — JavaScript
• 315 ГБ — Flutter
• 820 ГБ — Go, PHP
• 419 ГБ — Java, Rust
• 648 ГБ — GameDev
• 517 ГБ — Windows, Linux
• 998 ГБ — Дизайн (UX/UI)
• 617 ГБ — Нейросети (ML/RL)
• 546 ГБ — БД (SQL & NoSQL)
• 687 ГБ — Аналитика данных
• 115 ГБ — QA-тестирование
Подписывайся и не плати за то, что можно получить бесплатно
Please open Telegram to view this post
VIEW IN TELEGRAM
💊6😁5
Библиотека алгоритмов по робототехнике, которую должен знать каждый инженер📚
PythonRobotics это open-source коллекция Python-кода и учебник по алгоритмам робототехники, сделанные Atsushi Sakai.
На GitHub у проекта 27.2k звёзд и 7k форков, так что добавить в закладки вообще без вариантов
Там покрыто всё: от локализации (EKF, particle filters, histogram filters) до SLAM (FastSLAM, ICP matching), планирования пути (A*, RRT*, Dijkstra, D*, potential fields, state lattice), трекинга траектории (Stanley, LQR, MPC), навигации манипуляторов, воздушной навигации и даже планирования для двуногих роботов.
Что в нём особенного? Он сделан так, чтобы его было легко читать и понимать: минимум зависимостей и практичные, широко используемые алгоритмы.
Каждый алгоритм идёт с визуальными анимациями, математическими объяснениями и рабочим кодом.
Документация по сути это полноценный учебник по алгоритмам робототехники, бесплатно доступный онлайн.
Требования простые: Python 3.13+, NumPy, SciPy, Matplotlib и cvxpy.
И всё.
Это учебный ресурс с 2,201 коммитом, вкладом от 138 разработчиков и активной поддержкой. Одни только анимации (они лежат в отдельном репозитории) уже стоят того, чтобы их изучать.
Если ты учишь робототехнику, собираешь автономные системы или преподаёшь алгоритмы, это тот самый ресурс. Лицензия MIT, так что можно свободно использовать и в исследованиях, и в коммерческих проектах.
Ссылка:
P.S. Вот как выглядит хороший open-source: образовательный, практичный, отлично задокументированный и комьюнити-драйвовый. Добавь в закладки.🔖
👉 @PythonPortal
PythonRobotics это open-source коллекция Python-кода и учебник по алгоритмам робототехники, сделанные Atsushi Sakai.
На GitHub у проекта 27.2k звёзд и 7k форков, так что добавить в закладки вообще без вариантов
Там покрыто всё: от локализации (EKF, particle filters, histogram filters) до SLAM (FastSLAM, ICP matching), планирования пути (A*, RRT*, Dijkstra, D*, potential fields, state lattice), трекинга траектории (Stanley, LQR, MPC), навигации манипуляторов, воздушной навигации и даже планирования для двуногих роботов.
Что в нём особенного? Он сделан так, чтобы его было легко читать и понимать: минимум зависимостей и практичные, широко используемые алгоритмы.
Каждый алгоритм идёт с визуальными анимациями, математическими объяснениями и рабочим кодом.
Документация по сути это полноценный учебник по алгоритмам робототехники, бесплатно доступный онлайн.
Требования простые: Python 3.13+, NumPy, SciPy, Matplotlib и cvxpy.
И всё.
Это учебный ресурс с 2,201 коммитом, вкладом от 138 разработчиков и активной поддержкой. Одни только анимации (они лежат в отдельном репозитории) уже стоят того, чтобы их изучать.
Если ты учишь робототехнику, собираешь автономные системы или преподаёшь алгоритмы, это тот самый ресурс. Лицензия MIT, так что можно свободно использовать и в исследованиях, и в коммерческих проектах.
Ссылка:
https://github.com/AtsushiSakai/PythonRobotics
P.S. Вот как выглядит хороший open-source: образовательный, практичный, отлично задокументированный и комьюнити-драйвовый. Добавь в закладки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3