Please open Telegram to view this post
VIEW IN TELEGRAM
😁63❤5👍2
Смотри топовые научные статьи по ИИ, машинному обучению, робототехнике, квантовой физике и другим направлениям на kurate.org.
Сотни препринтов с arXiv ежедневно ранжируются по научному импакту через парные сравнения, где судьями выступают модели — Claude, GPT и Gemini.
👉 @PythonPortal
Сотни препринтов с arXiv ежедневно ранжируются по научному импакту через парные сравнения, где судьями выступают модели — Claude, GPT и Gemini.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Бывшие сотрудники Google опубликовали карту всех внутренних инструментов Google и их open-source аналогов.
15 200 звёзд. 1 100 форков. 99 контрибьюторов.
→ Borg = Kubernetes
→ Spanner = CockroachDB
→ Colossus = HDFS
→ Dremel = DuckDB / Presto
→ Chubby = Zookeeper
→ Stubby = gRPC
→ Zanzibar = SpiceDB
→ Blaze = Bazel
→ MapReduce = Spark
всё, чем инженеры Google пользуются каждый день.
у всего этого есть open-source аналоги.
ничто из этого не требует работы в Google.
https://github.com/jhuangtw/xg2xg
👉 @PythonPortal
15 200 звёзд. 1 100 форков. 99 контрибьюторов.
→ Borg = Kubernetes
→ Spanner = CockroachDB
→ Colossus = HDFS
→ Dremel = DuckDB / Presto
→ Chubby = Zookeeper
→ Stubby = gRPC
→ Zanzibar = SpiceDB
→ Blaze = Bazel
→ MapReduce = Spark
всё, чем инженеры Google пользуются каждый день.
у всего этого есть open-source аналоги.
ничто из этого не требует работы в Google.
https://github.com/jhuangtw/xg2xg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍3
ПРО-СОВЕТ
Используешь локальные большие языковые модели? Дай им веб-стек.
Моя конфигурация:
- SearXNG: поиск и отбор источников-кандидатов
- Firecrawl: извлечение и обход по известным адресам
- Camofox: резерв через браузер, когда джаваскрипт или интерактив мешают
Поиск → Извлечение → Взаимодействие
Попроси своего агента настроить это и подключить к локальным моделям
> увидишь, как они резко становятся полезнее
Пожалуйста🐌
👉 @PythonPortal
Используешь локальные большие языковые модели? Дай им веб-стек.
Моя конфигурация:
- SearXNG: поиск и отбор источников-кандидатов
- Firecrawl: извлечение и обход по известным адресам
- Camofox: резерв через браузер, когда джаваскрипт или интерактив мешают
Поиск → Извлечение → Взаимодействие
Попроси своего агента настроить это и подключить к локальным моделям
> увидишь, как они резко становятся полезнее
Пожалуйста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
Братья! Google обновил Код-Вики.
Google фактически убрал одно из самых неприятных узких мест разработки — чтение чужого кода '
Новый Код-Вики автоматически подключается к любому репозиторию на ГитХабе и превращает его в постоянно актуальную, структурированную и интерактивную вики.
Три ключевые функции:
- автоматически сканирует репозиторий; документация обновляется в реальном времени при любых изменениях кода — больше не нужно переживать за устаревшие описания
- чат на базе Джемини работает по всей вики как по единой базе знаний, отвечает на вопросы и даёт ссылки с переходом прямо на конкретные строки кода
- автоматически строит архитектурные диаграммы, диаграммы классов и последовательностей; одним кликом можно перейти от объяснения к исходному коду
Новички быстрее входят в проект с первого дня, старые кодовые базы без сопровождения становятся понятными, и это работает как для больших, так и для маленьких репозиториев.
Google прямо говорит: «Чтение существующего кода — один из самых дорогих и проблемных этапов разработки».
Теперь этот этап фактически пытаются убрать как класс.
Публичные репозитории доступны для предварительного просмотра: http://codewiki.google
👉 @PythonPortal
Google фактически убрал одно из самых неприятных узких мест разработки — чтение чужого кода '
Новый Код-Вики автоматически подключается к любому репозиторию на ГитХабе и превращает его в постоянно актуальную, структурированную и интерактивную вики.
Три ключевые функции:
- автоматически сканирует репозиторий; документация обновляется в реальном времени при любых изменениях кода — больше не нужно переживать за устаревшие описания
- чат на базе Джемини работает по всей вики как по единой базе знаний, отвечает на вопросы и даёт ссылки с переходом прямо на конкретные строки кода
- автоматически строит архитектурные диаграммы, диаграммы классов и последовательностей; одним кликом можно перейти от объяснения к исходному коду
Новички быстрее входят в проект с первого дня, старые кодовые базы без сопровождения становятся понятными, и это работает как для больших, так и для маленьких репозиториев.
Google прямо говорит: «Чтение существующего кода — один из самых дорогих и проблемных этапов разработки».
Теперь этот этап фактически пытаются убрать как класс.
Публичные репозитории доступны для предварительного просмотра: http://codewiki.google
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥7👍5
Выпустили аналог Claude Code от DeepSeek.
Открытый исходный код, написан на Rust.
✓ использует API-ключ или локальные модели
✓ МСР, навыки, инструменты, память и т.д.
$ npm install -g deepseek-tui
→ https://github.com/Hmbown/DeepSeek-TUI
👉 @PythonPortal
Открытый исходный код, написан на Rust.
✓ использует API-ключ или локальные модели
✓ МСР, навыки, инструменты, память и т.д.
$ npm install -g deepseek-tui
→ https://github.com/Hmbown/DeepSeek-TUI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤6
В плейлисте 26 лекций по глубокому обучению
Один из лучших бесплатных материалов в открытом доступе.
Можно пройти путь от базового уровня до уверенного понимания примерно за 5 часов.
👉 @PythonPortal
Один из лучших бесплатных материалов в открытом доступе.
Можно пройти путь от базового уровня до уверенного понимания примерно за 5 часов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21👍6
Python: простые вещи, которые улучшают код
Если писать так:
это может работать, но ломается на наследниках
Правильнее использовать
Такой вариант сработает и для
Итог:
👉 @PythonPortal
Если писать так:
if type(x) == str:
print("Это строка")
это может работать, но ломается на наследниках
str.Правильнее использовать
isinstance(). Он учитывает наследование и лучше согласуется с полиморфизмом.if isinstance(x, str):
print("Это строка")
Такой вариант сработает и для
str, и для его подклассов.Итог:
type(x) == str годится только для простых случаев, но хрупкий. isinstance(x, str) — более устойчивый и корректный вариант почти всегда.Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍4😁2🤣1
Наконец-то кто-то пропатчил Chromium на уровне исходников!
Не JS-инъекции, не твики флагов, а полноценная модификация отпечатков прямо в C++ исходниках с последующей сборкой бинарника.
Результат?
Cloudflare Turnstile: всё пройдено
reCAPTCHA v3: score 0.9 (уровень человека)
FingerprintJS / BrowserScan: всё зелёное
Пройдено 30/30 детект-сайтов
Drop-in замена для Playwright / Puppeteer — меняете импорт в 3 строки кода и получаете моментальный unban!
или
Больше никакого страха перед anti-bot защитой, братья!
👉 @PythonPortal
Не JS-инъекции, не твики флагов, а полноценная модификация отпечатков прямо в C++ исходниках с последующей сборкой бинарника.
Результат?
Cloudflare Turnstile: всё пройдено
reCAPTCHA v3: score 0.9 (уровень человека)
FingerprintJS / BrowserScan: всё зелёное
Пройдено 30/30 детект-сайтов
Drop-in замена для Playwright / Puppeteer — меняете импорт в 3 строки кода и получаете моментальный unban!
pip install cloakbrowserили
npm install cloakbrowserБольше никакого страха перед anti-bot защитой, братья!
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝17🔥6❤2
Напоминание: в Python 3.14 завезли несколько действительно сильных обновлений 🐍
Если ещё не обновлялись, вот что появилось:
- Free-threaded Python теперь официально поддерживается — без GIL;
- deferred evaluation аннотаций — forward references теперь работают нормально из коробки;
- template string literals (t-strings) для более безопасной обработки строк;
- встроенный модуль сжатия Zstandard;
- подсветка синтаксиса прямо в REPL;
- multiple interpreters в стандартной библиотеке.
Кроме этого, tail-call interpreter даёт прирост производительности без изменений в коде:
- примерно 3–5% на Linux;
- около 7–8% на ARM Mac.
👉 @PythonPortal
Если ещё не обновлялись, вот что появилось:
- Free-threaded Python теперь официально поддерживается — без GIL;
- deferred evaluation аннотаций — forward references теперь работают нормально из коробки;
- template string literals (t-strings) для более безопасной обработки строк;
- встроенный модуль сжатия Zstandard;
- подсветка синтаксиса прямо в REPL;
- multiple interpreters в стандартной библиотеке.
Кроме этого, tail-call interpreter даёт прирост производительности без изменений в коде:
- примерно 3–5% на Linux;
- около 7–8% на ARM Mac.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Это, вероятно, самый честный разбор production-архитектуры AI-систем, который сейчас есть в интернете.
9-слойная AI production architecture:
👉 @PythonPortal
9-слойная AI production architecture:
services/ — RAG-пайплайн, семантический кеш, память, query rewriter, роутер. Не один файл. Пять.agents/ — document grader, decomposer, adaptive router. Самокоррекция заложена в архитектуру.prompts/ — версионируемые, типизированные, зарегистрированные. Никакого хардкода.security/ — input, content и output-фильтрация. Три уровня защиты, а не один.evaluation/ — golden dataset, офлайн-eval, онлайн-мониторинг. Большинство этот слой полностью пропускает и деплоит вслепую.observability/ — трассировка по каждому этапу, привязка фидбека к трейсам, стоимость каждого запроса..claude/ — контекст агента, чтобы AI-кодинг-ассистент понимал кодовую базу до того, как начнёт менять файлы.Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Класс UserList из модуля collections в Python используется для создания пользовательских объектов, работающих как список, но с кастомным поведением. Он выступает базовым классом, от которого можно наследоваться, если нужно реализовать собственные структуры данных со специализированными методами и логикой.
Допустим, вы хотите создать список с кастомным методом append(), разрешив добавлять только чётные числа. Код ниже показывает, как это можно реализовать через UserList.
В этом примере метод append() переопределён так, чтобы разрешать добавление только чётных чисел. Если передать нечётное число, выводится сообщение о том, что нечётные значения запрещены. Метод sort() также переопределён и всегда сортирует список в обратном порядке.
Когда экземпляр obj вызывается с аргументом 3, который является нечётным числом, выводится сообщение
"Non-even numbers not allowed", а сам список остаётся без изменений.Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍2
DeepSeek выпустили фундаментальную переработку архитектуры трансформера.
Она решает проблему «кризиса идентичности», которая ломает очень большие модели ИИ.
Последние десять лет почти все крупные модели ИИ опирались на остаточные связи. Это быстрые обходные пути, которые позволяют сигналу перескакивать через слои и сохранять стабильность обучения.
Без них глубокие сети начинают терять информацию по пути и становятся плохо обучаемыми.
Но есть проблема: при росте глубины и размера моделей такие простые «пропуски» перестают работать.
Информация размывается. Градиенты нестабильны. Математика начинает ломаться.
DeepSeek (включая исследователей, среди которых Вэньфэн Лян) опубликовали работу с введением mHC: манивольд-ограниченные гипер-связи.
Это полная переработка того, как данные проходят внутри модели.
Вместо одного «обходного пути» они расширили его до нескольких параллельных потоков. Эти связи называют гипер-связями.
Но на этом не остановились.
Когда появляется несколько потоков, система обычно уходит в хаос. Модель теряет «отображение идентичности» — перестаёт корректно передавать информацию без искажений.
Ключевой шаг DeepSeek — принудить эти связи жить на заданном математическом многообразии.
Проецируя связи на многогранник Бёркгофа с помощью алгоритма Синхорна–Кноппа, они заставили модель оставаться устойчивой.
Сохраняется богатство маршрутов передачи данных, но сигнал не теряется и не «взрывается».
Результаты:
Стабильность: удалось обучить модель на 27 млрд параметров, которую раньше нельзя было стабилизировать с обычными гипер-связями.
Производительность: значительное улучшение на бенчмарках кодирования, математики и рассуждений (BBH и DROP).
Эффективность: несмотря на усложнение, кастомное ядро добавляет примерно 6,7% накладных расходов на обучение.
Последние годы индустрия пыталась делать модели умнее через увеличение масштаба.
DeepSeek показали, что реальный прирост даёт исправление «инфраструктуры» внутри модели.
Будущее масштабирования — не только в увеличении числа слоёв.
Оно в более качественных связях между ними.
👉 @PythonPortal
Она решает проблему «кризиса идентичности», которая ломает очень большие модели ИИ.
Последние десять лет почти все крупные модели ИИ опирались на остаточные связи. Это быстрые обходные пути, которые позволяют сигналу перескакивать через слои и сохранять стабильность обучения.
Без них глубокие сети начинают терять информацию по пути и становятся плохо обучаемыми.
Но есть проблема: при росте глубины и размера моделей такие простые «пропуски» перестают работать.
Информация размывается. Градиенты нестабильны. Математика начинает ломаться.
DeepSeek (включая исследователей, среди которых Вэньфэн Лян) опубликовали работу с введением mHC: манивольд-ограниченные гипер-связи.
Это полная переработка того, как данные проходят внутри модели.
Вместо одного «обходного пути» они расширили его до нескольких параллельных потоков. Эти связи называют гипер-связями.
Но на этом не остановились.
Когда появляется несколько потоков, система обычно уходит в хаос. Модель теряет «отображение идентичности» — перестаёт корректно передавать информацию без искажений.
Ключевой шаг DeepSeek — принудить эти связи жить на заданном математическом многообразии.
Проецируя связи на многогранник Бёркгофа с помощью алгоритма Синхорна–Кноппа, они заставили модель оставаться устойчивой.
Сохраняется богатство маршрутов передачи данных, но сигнал не теряется и не «взрывается».
Результаты:
Стабильность: удалось обучить модель на 27 млрд параметров, которую раньше нельзя было стабилизировать с обычными гипер-связями.
Производительность: значительное улучшение на бенчмарках кодирования, математики и рассуждений (BBH и DROP).
Эффективность: несмотря на усложнение, кастомное ядро добавляет примерно 6,7% накладных расходов на обучение.
Последние годы индустрия пыталась делать модели умнее через увеличение масштаба.
DeepSeek показали, что реальный прирост даёт исправление «инфраструктуры» внутри модели.
Будущее масштабирования — не только в увеличении числа слоёв.
Оно в более качественных связях между ними.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍6❤4🤔3
Динамическое программирование — одна из моих любимых тем в компьютерных науках.
А потом приходит осознание, что почти вся инфраструктура систем под капотом опирается на ту же самую идею.
Базовая концепция очень красивая:
мы разбиваем экспоненциальное пространство поиска на пересекающиеся подзадачи, сохраняем оптимальную подструктуру, мемоизируем промежуточные состояния и восстанавливаем глобально оптимальное решение при заданных ограничениях.
И этот уровень абстракции встречается буквально везде.
Например, в базах данных оптимизаторы запросов по стоимости — это по сути огромные движки динамического программирования.
SQL-запрос с большим количеством JOIN между таблицами создаёт колоссальное комбинаторное пространство вариантов выполнения.
Оптимизатору нужно выбрать порядок JOIN, пути доступа, индексы, hash join / merge join / nested loop, predicate pushdown, partition pruning, стратегию параллелизма.
Наивный перебор растёт факториально.
Поэтому оптимизаторы используют динамическое программирование для вычисления:
«какой самый дешёвый способ выполнить подмножество S отношений?»
Классическая оптимизация в стиле Selinger хранит самый дешёвый план для каждого подмножества и постепенно строит более крупные планы из меньших оптимальных под-планов.
Что-то вроде:
DP[S] = минимальная стоимость плана для JOIN отношений из подмножества S
Дальше переходы выглядят так:
комбинируем оптимальные левый/правый под-планы + оцениваем cardinality + считаем стоимость IO / CPU / сети.
Вся магия в том, что система перестаёт повторно вычислять эквивалентные состояния, но при этом всё ещё приближается к глобальному оптимуму.
И это далеко не только про базы данных.
Динамическое программирование тихо лежит в основе:
алгоритмов кратчайших путей, декодирования Витерби, выравнивания последовательностей в биоинформатике, оптимизаций компилятора, edit distance, эвристик TCP congestion control, политик кэширования, планировщиков ресурсов, tiling для GPU-ядра, register allocation, вероятностного вывода, value iteration в reinforcement learning.
Даже современное мышление в распределённых системах часто напоминает динамическое программирование:
минимизация задержек и стоимости через ограниченные переходы состояний.
Больше всего мне нравится, как DP меняет само мышление.
Ты перестаёшь брутфорсить задачу и начинаешь задавать другие вопросы:
— какое состояние действительно важно?
— какой информации достаточно, чтобы восстановить будущее?
— где находятся пересекающиеся вычисления?
— может ли локальная оптимальность собираться в глобальную?
— какие измерения определяют пространство поиска?
Тот самый дофаминовый момент, когда решение оптимизируется с O(nlogn) до O(n) или с O(n²) до O(n), — именно ради этого хочется писать алгоритмы каждый день.
И этот майндсет полезен далеко за пределами алгоритмических собеседований.
Одна из самых элегантных идей в CS:
превращать невозможные пространства поиска в вычислимо решаемые задачи через сжатие состояния и переиспользование оптимальных результатов.
👉 @PythonPortal
А потом приходит осознание, что почти вся инфраструктура систем под капотом опирается на ту же самую идею.
Базовая концепция очень красивая:
мы разбиваем экспоненциальное пространство поиска на пересекающиеся подзадачи, сохраняем оптимальную подструктуру, мемоизируем промежуточные состояния и восстанавливаем глобально оптимальное решение при заданных ограничениях.
И этот уровень абстракции встречается буквально везде.
Например, в базах данных оптимизаторы запросов по стоимости — это по сути огромные движки динамического программирования.
SQL-запрос с большим количеством JOIN между таблицами создаёт колоссальное комбинаторное пространство вариантов выполнения.
Оптимизатору нужно выбрать порядок JOIN, пути доступа, индексы, hash join / merge join / nested loop, predicate pushdown, partition pruning, стратегию параллелизма.
Наивный перебор растёт факториально.
Поэтому оптимизаторы используют динамическое программирование для вычисления:
«какой самый дешёвый способ выполнить подмножество S отношений?»
Классическая оптимизация в стиле Selinger хранит самый дешёвый план для каждого подмножества и постепенно строит более крупные планы из меньших оптимальных под-планов.
Что-то вроде:
DP[S] = минимальная стоимость плана для JOIN отношений из подмножества S
Дальше переходы выглядят так:
комбинируем оптимальные левый/правый под-планы + оцениваем cardinality + считаем стоимость IO / CPU / сети.
Вся магия в том, что система перестаёт повторно вычислять эквивалентные состояния, но при этом всё ещё приближается к глобальному оптимуму.
И это далеко не только про базы данных.
Динамическое программирование тихо лежит в основе:
алгоритмов кратчайших путей, декодирования Витерби, выравнивания последовательностей в биоинформатике, оптимизаций компилятора, edit distance, эвристик TCP congestion control, политик кэширования, планировщиков ресурсов, tiling для GPU-ядра, register allocation, вероятностного вывода, value iteration в reinforcement learning.
Даже современное мышление в распределённых системах часто напоминает динамическое программирование:
минимизация задержек и стоимости через ограниченные переходы состояний.
Больше всего мне нравится, как DP меняет само мышление.
Ты перестаёшь брутфорсить задачу и начинаешь задавать другие вопросы:
— какое состояние действительно важно?
— какой информации достаточно, чтобы восстановить будущее?
— где находятся пересекающиеся вычисления?
— может ли локальная оптимальность собираться в глобальную?
— какие измерения определяют пространство поиска?
Тот самый дофаминовый момент, когда решение оптимизируется с O(nlogn) до O(n) или с O(n²) до O(n), — именно ради этого хочется писать алгоритмы каждый день.
И этот майндсет полезен далеко за пределами алгоритмических собеседований.
Одна из самых элегантных идей в CS:
превращать невозможные пространства поиска в вычислимо решаемые задачи через сжатие состояния и переиспользование оптимальных результатов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🤯2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24🤣9