Python Portal
50.6K subscribers
2.81K photos
480 videos
55 files
1.27K links
Всё самое интересное из мира Python

Сотрудничество, реклама: @devmangx

Работаем с @Spiral_Yuri

РКН: https://clck.ru/3GMMF6
Download Telegram
Проверка уникальности работает через =, а NULL = NULL не даёт true. По умолчанию NULL не считается уникальным значением.

Postgres не может доказать равенство двух NULL, поэтому пропускает обе строки.

Простой пример, где это ломается, — составной ключ:

-- UNIQUE (user_id, org_id, deleted_at)

INSERT INTO memberships VALUES (1, 10, NULL);
INSERT INTO memberships VALUES (1, 10, NULL);

-- обе строки будут вставлены


В итоге можно получить две активные записи membership для одного и того же пользователя, потому что ограничение уникальности вообще не срабатывает.

NULLS NOT DISTINCT

Начиная с Postgres 15, уникальные ограничения и индексы могут считать NULL равными:

UNIQUE NULLS NOT DISTINCT (user_id, org_id, deleted_at)


Второй INSERT уже завершится ошибкой.

Но это также запретит две строки с одинаковым значением deleted_at, а не только две активные строки.

Частичный уникальный индекс

Если уникальность нужно обеспечить только для активных строк, используйте partial unique index:

CREATE UNIQUE INDEX ON memberships (user_id, org_id)
WHERE deleted_at IS NULL;


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍61
Media is too big
VIEW IN TELEGRAM
GPT-6 Astra дали роботизированную руку, кисть и камеру, а затем попросили нарисовать мост Золотые Ворота в реальном мире.

Модель сама разобралась, как управлять роботом, и с каждой новой попыткой рисовала всё лучше.

Самое впечатляющее здесь даже не картина. Astra училась на собственных попытках и улучшала результат уже в физическом мире.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
29🤯3🔥2
«Understanding Linear Algebra» — бесплатный учебник, который связывает теоретические основы линейной алгебры с практическими применениями и информатикой.

Он охватывает широкий круг тем: системы уравнений, векторы и матрицы, линейные комбинации, матричные преобразования, базисы и системы координат, определители, подпространства, собственные значения и собственные векторы, динамические системы, цепи Маркова, ортогональность, метод наименьших квадратов, сингулярное разложение и многое другое.

Очень полезный материал для тех, кто изучает линейную алгебру. Стоит сохранить как справочник.

https://scholarworks.gvsu.edu/cgi/viewcontent.cgi?article=1026&context=books

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥9
Профессор кафедры машиностроения Вашингтонского университета Стив Брантон выложил на YouTube полный курс по теории управления для магистрантов и аспирантов. Бесплатно.

Курс называется Control Bootcamp.

Линейные системы, устойчивость и собственные значения, управляемость и наблюдаемость, размещение полюсов, фильтр Калмана, LQR / LQG, робастное управление, MPC — всё разбирается последовательно и с примерами в Matlab.

Брантон — Boeing Professor of AI & Data-Driven Engineering в Вашингтонском университете. Он получил степень бакалавра по математике в Caltech с дополнительной специализацией по управлению и динамическим системам, а затем докторскую степень по механической и аэрокосмической инженерии в Princeton.

Плейлист: https://youtube.com/playlist?list=PLMrJAkhIeNNR20Mz-VpzgfQs5zrYi085m

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥3
Репозиторий содержит Jupyter-ноутбуки к книге O’Reilly «Transformers: The Definitive Guide».

Внутри — код для задач компьютерного зрения, временных рядов, обработки аудио и обучения с подкреплением.

https://github.com/Nicolepcx/transformers-the-definitive-guide

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥101
Python-библиотека для получения цен и расписания рейсов из Google Flights.

https://github.com/AWeirdDev/flights

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Hugging Face завершила серию Training Agents — шесть практических воркшопов про оценку и обучение ИИ-агентов.

За полгода команда разобрала весь путь: от бенчмарков и SFT на трассах агентов до дистилляции, GRPO и обучения внутри реальных сред.

В финальной части они собрали среду на OpenEnv, подключили её к TRL и обучили реального агента для программирования OpenCode через Harbor в песочницах Hugging Face.

Все шесть записей уже доступны бесплатно, весь код открыт. Серия набрала более 300 тысяч просмотров.

Плейлист:
https://youtube.com/playlist?list=PLo2EIpI_JMQvQZm-kVlz4wY1vWF0LBcf5

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Если полностью разберётесь в этой статье, то будете понимать инференс лучше 90% людей.

И это, кстати, всего лишь первый материал в репозитории AI Performance Engineering.

Страшно представить, сколько знаний в остальных.

https://github.com/wafer-ai/gpu-perf-engineering-resources

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Разработчик, который до этого ни разу не проектировал печатные платы, взял Claude Fable 5 и на пару часов оставил его самостоятельно работать в KiCad. 🔍

Затем он заказал пять плат за €130, даже не проверив проект самостоятельно. И они заработали.

В основе платы — микроконтроллер RP2350, небольшой дисплей на электронных чернилах, четыре кнопки и несколько дополнительных выводов. Он подключил первую плату к ноутбуку, и тот сразу её распознал.

Проблемы нашлись только с двумя компонентами: SPI-флеш-памятью и транзистором в схеме управления дисплеем. Причём обнаружилось это уже при отправке файлов производителю. После нескольких раундов правок всё исправили.

Раньше он уже пытался сделать тот же проект с помощью более старых моделей, но тогда компоненты оказывались неправильно ориентированы, а нормальной разводки платы практически не было.

Он пишет, что результатом доволен, хотя особого чувства, что он сам чего-то добился, у него нет. И при этом он всё равно хочет нормально научиться проектировать печатные платы самостоятельно.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116🤝3🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
Представьте, что роботы смогут делать ещё через 10 лет...

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥223
This media is not supported in your browser
VIEW IN TELEGRAM
Как большая языковая модель работает на аппаратном уровне?

Если вы привыкли к программированию вокруг CPU, большая языковая модель может казаться чем-то почти магическим. Всё потому, что в ней сочетаются глубокая нейронная сеть, архитектура Transformer и GPU — процессор с огромным параллелизмом, на котором она работает. Кроме того, хотя большую языковую модель можно описать несколькими сотнями строк Python, под ними скрываются крупные и сложные слои программного обеспечения, которые одному человеку трудно понять целиком.

Автор проекта решил разобраться в этом вопросе и с нуля реализовал Qwen3-0.6B — от Transformer до симулятора набора инструкций — с помощью Claude Code в качестве проекта на выходные.

Он реализовал саму модель, набор инструкций GPU, компилятор и симулятор GPU, чтобы каждый слой системы был достаточно небольшим и его можно было понять целиком.

Сейчас он также работает над RTL-описанием GPU, чтобы запустить систему на FPGA, а в будущем, возможно, даже изготовить настоящий чип — просто ради интереса.

Что интересно, пользоваться проектом можно примерно как Claude или Codex, но он работает на CPU, поэтому его можно полностью отлаживать и трассировать.

Если вам было трудно связать между собой большие языковые модели и GPU, на которых они работают, репозиторий здесь:

https://github.com/penberg/titania

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3
image_2026-09-14_08-40-46.png
1.1 MB
Большинство слышит «дообучение» и сразу думает, что мы обновляем миллиарды весов большой языковой модели.

Но часто это не так.

Современные методы дообучения позволяют адаптировать модель, почти не трогая её исходные предобученные веса.

Если вы переходите из Data Science в AI Engineering, стоит знать эти 5 подходов.

1. LoRA — учим обновление, а не сами веса

Замораживаем W.

Обучаем две небольшие матрицы:

ΔW = BA

То есть:

W' = W + BA

Фактически мы учим небольшую поправку к модели.

2. LoRA-FA — замораживаем ещё больше

Замораживаем W и A.

Обучаем только B.

Идея та же, но обучаемых параметров ещё меньше.

3. VeRA — не обучаем даже сами матрицы

Фиксируем случайные A и B.

Обучаем только небольшие векторы масштабирования, которые управляют вкладом этих матриц.

Очень высокая параметрическая эффективность.

4. Delta-LoRA — позволяем базовой модели тоже меняться

В отличие от обычной LoRA, здесь W тоже может обновляться, но эти изменения направляются низкоранговой адаптацией.

5. LoRA+ — та же LoRA, но с другой оптимизацией

A и B обучаются с разными скоростями обучения.

Обычно:

ηB > ηA

Главная идея здесь в том, что дообучение не обязательно означает переобучение всей модели.

LoRA → 2 матрицы
LoRA-FA → 1 матрица
VeRA → векторы масштабирования
LoRA+ → 2 матрицы с разными скоростями обучения
Delta-LoRA → низкоранговые обновления + изменяющиеся базовые веса

Пять подходов к одному и тому же вопросу:

какой минимум нам на самом деле нужно обучать?

Именно это и есть параметрически эффективное дообучение — концепция, которую стоит понимать специалистам по Data Science при переходе в AI Engineering.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3🔥2