Microsoft выкатили open-source инструмент для запуска AI-моделей локально
Без облака, подписок и авторизации.
Все на 100% приватно.
И при этом он без проблем встраивается в приложения через OpenAI-совместимый API.
Просто вбиваешь в терминале:
→ winget install Microsoft(dot)FoundryLocal (Windows)
→ brew install microsoft/foundrylocal/foundrylocal (macOS)
Вот официальный веб-сайт со всей документацией и доступными моделями: https://foundrylocal.ai
И репозиторий GitHub: https://github.com/microsoft/foundry-local
👉 @PythonPortal
Без облака, подписок и авторизации.
Все на 100% приватно.
И при этом он без проблем встраивается в приложения через OpenAI-совместимый API.
Просто вбиваешь в терминале:
→ winget install Microsoft(dot)FoundryLocal (Windows)
→ brew install microsoft/foundrylocal/foundrylocal (macOS)
Вот официальный веб-сайт со всей документацией и доступными моделями: https://foundrylocal.ai
И репозиторий GitHub: https://github.com/microsoft/foundry-local
Please open Telegram to view this post
VIEW IN TELEGRAM
❤27👍10🔥3😁2
В сегодняшнем выпуске программистских хорроров…
В документации Python к функции random.seed() сказано:
Но если задать seed как 3 и как -3, на деле вы получаете один и тот же объект ГПСЧ, который выдаёт полностью одинаковые последовательности. (TIL). В nanochat я использовал знак числа как, как мне тогда казалось, хитрый способ получить разные RNG-последовательности для разбиения train/test. В итоге словил неприятный баг, потому что train внезапно стал равен test.
Я нашёл соответствующий участок кода в CPython в файле cpython/Modules/_randommodule.c. В комментарии на строке 321 написано:
А дальше идёт строка:
То есть seed явно прогоняется через abs(), знак просто отбрасывается.
Но и сам этот комментарий тоже некорректный и вводящий в заблуждение. Под капотом Python использует алгоритм Mersenne Twister MT19937, у которого в общем случае состояние из 19937 ненулевых бит. Python берёт ваш int (или другой объект) и «размазывает» эту информацию по этим битам состояния. В принципе, старший бит знака вполне мог бы участвовать в формировании состояния. В самом алгоритме нет ничего такого, что «требует беззнаковое число».
Просто было принято решение не учитывать знак, и, на мой взгляд, это ошибка. Простейший вариант мог бы быть, например, таким: n → 2*abs(n) + int(n < 0).
В итоге мы упираемся в контракт модуля random в Python, который в документации тоже расписан не до конца. Явно гарантируется только одно:
одинаковый seed ⇒ одинаковая последовательность.
Но нигде не обещается обратное, что разные seed обязательно дают разные последовательности. Формально Python вообще не гарантирует, что, например, seed(5) и seed(6) породят разные потоки RNG. Хотя в большинстве прикладных сценариев это молчаливо предполагается. И да, мы видим на практике, что seed(5) и seed(-5) — это полностью идентичные потоки. Так что использовать знак seed для разделения поведения train/test в машинном обучении точно не стоит.
Один из самых забавных и коварных «подводных камней» в программировании, с которыми я сталкивался за последнее время
👉 @PythonPortal
В документации Python к функции random.seed() сказано:
“Если a — это int, то он используется напрямую.”
Но если задать seed как 3 и как -3, на деле вы получаете один и тот же объект ГПСЧ, который выдаёт полностью одинаковые последовательности. (TIL). В nanochat я использовал знак числа как, как мне тогда казалось, хитрый способ получить разные RNG-последовательности для разбиения train/test. В итоге словил неприятный баг, потому что train внезапно стал равен test.
Я нашёл соответствующий участок кода в CPython в файле cpython/Modules/_randommodule.c. В комментарии на строке 321 написано:
“Этот алгоритм полагается на то, что число беззнаковое. Поэтому: если аргумент — это PyLong, используем его абсолютное значение.”
А дальше идёт строка:
n = PyNumber_Absolute(arg);
То есть seed явно прогоняется через abs(), знак просто отбрасывается.
Но и сам этот комментарий тоже некорректный и вводящий в заблуждение. Под капотом Python использует алгоритм Mersenne Twister MT19937, у которого в общем случае состояние из 19937 ненулевых бит. Python берёт ваш int (или другой объект) и «размазывает» эту информацию по этим битам состояния. В принципе, старший бит знака вполне мог бы участвовать в формировании состояния. В самом алгоритме нет ничего такого, что «требует беззнаковое число».
Просто было принято решение не учитывать знак, и, на мой взгляд, это ошибка. Простейший вариант мог бы быть, например, таким: n → 2*abs(n) + int(n < 0).
В итоге мы упираемся в контракт модуля random в Python, который в документации тоже расписан не до конца. Явно гарантируется только одно:
одинаковый seed ⇒ одинаковая последовательность.
Но нигде не обещается обратное, что разные seed обязательно дают разные последовательности. Формально Python вообще не гарантирует, что, например, seed(5) и seed(6) породят разные потоки RNG. Хотя в большинстве прикладных сценариев это молчаливо предполагается. И да, мы видим на практике, что seed(5) и seed(-5) — это полностью идентичные потоки. Так что использовать знак seed для разделения поведения train/test в машинном обучении точно не стоит.
Один из самых забавных и коварных «подводных камней» в программировании, с которыми я сталкивался за последнее время
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🤯7❤5💊2
Как они вообще бесплатные! Это серия книг с главами, которые разбирают архитектурные решения в самых популярных open source проектах, на которых держится куча современного софта.
Жаль, что я не наткнулся на это, когда только начинал.🎧
👉 @PythonPortal
Жаль, что я не наткнулся на это, когда только начинал.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍7🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Можно просто собрать дрон в three.js, заставить его летать над тайлами карты, повесить на него камеру и гнать видеопоток на Python-сервер с моделью компьютерного зрения для детекции.
👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41😁9👍3❤1🤔1
Серия блог-постов, которые помогут полностью разобраться с асинхронностью в Python. 👏
• как работает асинхронность в Python на практике - корутины, event loop, задачи, смешивание sync и async
• как грамотно тестировать async-код - подходы, паттерны и подводные камни
• основы упаковки и распространения Python-проектов - что нужно знать, чтобы собирать и публиковать пакет
👉 @PythonPortal
• как работает асинхронность в Python на практике - корутины, event loop, задачи, смешивание sync и async
• как грамотно тестировать async-код - подходы, паттерны и подводные камни
• основы упаковки и распространения Python-проектов - что нужно знать, чтобы собирать и публиковать пакет
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👀6👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Python-библиотека для легковесной симуляции роботов, рассчитанная на задачи навигации, управления и обучения с подкреплением. 🎧
Большинство симуляторов для робототехники мощные, но довольно тяжёлые. Иногда хочется просто минимальную среду, где можно погонять навигацию, контроль или RL без полноценного физического движка.
IR-Sim как раз закрывает этот кейс, если вы работаете с робот-навигацией или AI.
Почему стоит обратить внимание:
• Быстрая установка и простая конфигурация
• Сценарии задаются обычным YAML
• Визуализация в реальном времени через Matplotlib
• Встроенная проверка коллизий
• Подходит для AI и RL пайплайнов
Что можно быстро прототипировать:
– Многороботное избегание столкновений
– Навигацию на основе лидаров
– Динамические сцены с движущимися препятствиями
– Тестирование высокоуровневого поведения до перехода в тяжёлый симулятор
Проект с открытым кодом под MIT, активно развивается и уже используется в ряде научных работ по навигации и планированию.
GitHub: https://github.com/hanruihua/ir-sim
Документация: https://ir-sim.readthedocs.io/en
Если вы студент, исследователь или просто изучаете алгоритмы навигации, IR-Sim даёт удобную песочницу, где можно быстро проверять идеи без установки громоздких зависимостей.
👉 @PythonPortal
Большинство симуляторов для робототехники мощные, но довольно тяжёлые. Иногда хочется просто минимальную среду, где можно погонять навигацию, контроль или RL без полноценного физического движка.
IR-Sim как раз закрывает этот кейс, если вы работаете с робот-навигацией или AI.
Почему стоит обратить внимание:
• Быстрая установка и простая конфигурация
• Сценарии задаются обычным YAML
• Визуализация в реальном времени через Matplotlib
• Встроенная проверка коллизий
• Подходит для AI и RL пайплайнов
Что можно быстро прототипировать:
– Многороботное избегание столкновений
– Навигацию на основе лидаров
– Динамические сцены с движущимися препятствиями
– Тестирование высокоуровневого поведения до перехода в тяжёлый симулятор
Проект с открытым кодом под MIT, активно развивается и уже используется в ряде научных работ по навигации и планированию.
GitHub: https://github.com/hanruihua/ir-sim
Документация: https://ir-sim.readthedocs.io/en
Если вы студент, исследователь или просто изучаете алгоритмы навигации, IR-Sim даёт удобную песочницу, где можно быстро проверять идеи без установки громоздких зависимостей.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26🔥11🤯5👍1
человек, придумавший сложнейшую вычислительную архитектуру → проигрывает примитивному алгоритму автозамены, который считает его фамилию опечаткой и превращает Babbage в cabbage.
👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁39👍5❤2😢2🤝1
Изоляция рунета ближе, чем ты думаешь
Роскомнадзору дали карт-бланш на блокировки, а «белые списки» сайтов тестируют уже в десятках регионов. И гайки будут закручиваться только сильнее.
Чтобы в одночасье не лишиться доступа к свободному Интернету, просто сохрани Only Hack.
Тут профессиональный хакер делится фишками, с которыми доступ к глобальной сети у тебя будет даже в случае ядерного апокалипсиса.
Не жди момента «Х». Перестрахуйся подпиской.
Loading …
██████████████] 99%
Роскомнадзору дали карт-бланш на блокировки, а «белые списки» сайтов тестируют уже в десятках регионов. И гайки будут закручиваться только сильнее.
Чтобы в одночасье не лишиться доступа к свободному Интернету, просто сохрани Only Hack.
Тут профессиональный хакер делится фишками, с которыми доступ к глобальной сети у тебя будет даже в случае ядерного апокалипсиса.
Не жди момента «Х». Перестрахуйся подпиской.
🤣23😁6👍2💊2🔥1🌚1
Невероятно короткая книжка, но с глубоким разбором внутренних механизмов Python, которые мы используем каждый день. ❤️
Каждая глава содержит объяснение конкретной фичи языка вроде работы с *args/**kwargs, мутабельных аргументов, генераторов, декораторов, менеджеров контекста, enumerate/zip, исключений, dunder-методов и прочих хитрых конструкций.
👉 @PythonPortal
Каждая глава содержит объяснение конкретной фичи языка вроде работы с *args/**kwargs, мутабельных аргументов, генераторов, декораторов, менеджеров контекста, enumerate/zip, исключений, dunder-методов и прочих хитрых конструкций.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥8👍5
Нашли годный ресурс для тех, кто присматривается к квантовой разработке.
На GitHub подняли подробный гайд по входу в квантовую разработку и алготрейдинг.
Подборки курсов по Python для finance, материалы по построению стратегий, риск-моделям, анализу временных рядов, примеры кода для трейдинг-ботов и инфраструктуры вокруг всего этого.
В репе даже есть подборка магистерских видеокурсов, которые авторы оценивают примерно в 200k долларов, плюс списки хедж-фондов и HFT-компаний, которые активно нанимают.🥂
👉 @PythonPortal
На GitHub подняли подробный гайд по входу в квантовую разработку и алготрейдинг.
Подборки курсов по Python для finance, материалы по построению стратегий, риск-моделям, анализу временных рядов, примеры кода для трейдинг-ботов и инфраструктуры вокруг всего этого.
В репе даже есть подборка магистерских видеокурсов, которые авторы оценивают примерно в 200k долларов, плюс списки хедж-фондов и HFT-компаний, которые активно нанимают.
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤9👍2🔥2
Изучай GPU-программирование с нуля
Начни с Numba, чтобы получить низкоуровневый контроль, потом переходи на Triton и пиши высокопроизводительные ядра в языке, похожем на Python. Практический Jupyter-ноутбук, чтобы быстро стартануть.😊
👉 @PythonPortal
Начни с Numba, чтобы получить низкоуровневый контроль, потом переходи на Triton и пиши высокопроизводительные ядра в языке, похожем на Python. Практический Jupyter-ноутбук, чтобы быстро стартануть.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Самое сложное в создании AI-агентов - это не сам AI. Это UI.
Объясняю:
Бэкенд для агентов, по сути, уже решенная задача.
Выбираешь фреймворк - LangGraph, CrewAI, Mastra - и собираешь что угодно.
Но как только пытаешься прикрутить это к фронтенд-приложению, начинаются проблемы:
↳ стриминг в реальном времени
↳ синхронизация состояния между UI и агентом
↳ разбор сообщений, вызовы инструментов и событий статуса
↳ логика реконнекта, когда пользователь обновляет страницу посреди диалога
У многих команд недели уходят на самописные WebSocket-хендлеры и обвязку, чтобы просто завести базу.
CopilotKit только что выкатили useAgent(), чтобы закрыть эту проблему
Один этот хук дает живое подключение к любому агенту:
Из коробки получаешь стриминг, синхрон состояния, пользовательский ввод автоматически упаковывается в события AG-UI, и есть "ручное подтверждение человеком".
Работает с любым бэкендом, который реализует протокол AG-UI.
Поддержка тредов встроена, так что разговоры сохраняются и автоматически продолжаются. Реконнект стрима тоже просто работает.
Для понимания, AG-UI - это протокол, который соединяет агентов с UI-приложениями. Можно думать так:
MCP: агенты - инструменты
A2A: агенты - агенты
AG-UI: агенты - пользователи
Если ты строишь интерактивных агентов уровня Cursor или Lovable, это тот фреймворк, который объединяет весь твой агентный стек
Полностью open-source. Ссылка на GitHub🕺
👉 @PythonPortal
Объясняю:
Бэкенд для агентов, по сути, уже решенная задача.
Выбираешь фреймворк - LangGraph, CrewAI, Mastra - и собираешь что угодно.
Но как только пытаешься прикрутить это к фронтенд-приложению, начинаются проблемы:
↳ стриминг в реальном времени
↳ синхронизация состояния между UI и агентом
↳ разбор сообщений, вызовы инструментов и событий статуса
↳ логика реконнекта, когда пользователь обновляет страницу посреди диалога
У многих команд недели уходят на самописные WebSocket-хендлеры и обвязку, чтобы просто завести базу.
CopilotKit только что выкатили useAgent(), чтобы закрыть эту проблему
Один этот хук дает живое подключение к любому агенту:
const { agent } = useAgent({ agentId: "my-agent" });Из коробки получаешь стриминг, синхрон состояния, пользовательский ввод автоматически упаковывается в события AG-UI, и есть "ручное подтверждение человеком".
Работает с любым бэкендом, который реализует протокол AG-UI.
Поддержка тредов встроена, так что разговоры сохраняются и автоматически продолжаются. Реконнект стрима тоже просто работает.
Для понимания, AG-UI - это протокол, который соединяет агентов с UI-приложениями. Можно думать так:
MCP: агенты - инструменты
A2A: агенты - агенты
AG-UI: агенты - пользователи
Если ты строишь интерактивных агентов уровня Cursor или Lovable, это тот фреймворк, который объединяет весь твой агентный стек
Полностью open-source. Ссылка на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤5🔥3
Продолжаю мою серию про странные вещи, которые можно арендовать в облаке.
Можно «прошивать» живые человеческие клетки мозга в микрофлюидной системе жизнеобеспечения в Швейцарии и обучать её играть в игры.
Всего примерно $500 в месяц.
Одна из более крутых «реальных» статей, где использовали этот облачный сетап: группа из University of Bristol.
Они обучили систему классификации букв Брайля... Без работы в лаборатории с реальными пробами.
Шумновато, но интересно посмотреть:
https://arxiv.org/abs/2508.20850
👉 @PythonPortal
Можно «прошивать» живые человеческие клетки мозга в микрофлюидной системе жизнеобеспечения в Швейцарии и обучать её играть в игры.
Всего примерно $500 в месяц.
Одна из более крутых «реальных» статей, где использовали этот облачный сетап: группа из University of Bristol.
Они обучили систему классификации букв Брайля... Без работы в лаборатории с реальными пробами.
Шумновато, но интересно посмотреть:
https://arxiv.org/abs/2508.20850
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1🏆1🤝1