This media is not supported in your browser
VIEW IN TELEGRAM
Визуализация того, что находится внутри моделей ИИ. Это представляет слои взаимосвязанных нейронных сетей. И да, со временем формируются паттерны, и они могут образовывать своего рода сигнатуру того, как модель мыслит.
Этот паттерн можно рассматривать как процесс мышления.
👉 @PythonPortal
Этот паттерн можно рассматривать как процесс мышления.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯60❤16👍11🔥6🤝1
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
❤26👍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
👍26🤯7❤5💊2
Как они вообще бесплатные! Это серия книг с главами, которые разбирают архитектурные решения в самых популярных open source проектах, на которых держится куча современного софта.
Жаль, что я не наткнулся на это, когда только начинал.🎧
👉 @PythonPortal
Жаль, что я не наткнулся на это, когда только начинал.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍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
🔥37😁8👍2🤔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
👀6❤2👍1