Это, пожалуй, одна из лучших технических книг о том, как большие языковые модели обучают в огромных масштабах:
> память GPU и профилирование
> разбиение вычислений на блоки, объединение ядер и FlashAttention
> параллелизм по данным, тензорам, конвейеру и контексту
Я уже прочитал бесплатную онлайн-версию, но всё равно пришлось купить бумажную копию для своей библиотеки.
Бесплатно прочитать её можно и на Hugging Face:
https://huggingface.co/spaces/nanotron/ultrascale-playbook
✈️ Python Ninja
> память GPU и профилирование
> разбиение вычислений на блоки, объединение ядер и FlashAttention
> параллелизм по данным, тензорам, конвейеру и контексту
Я уже прочитал бесплатную онлайн-версию, но всё равно пришлось купить бумажную копию для своей библиотеки.
Бесплатно прочитать её можно и на Hugging Face:
https://huggingface.co/spaces/nanotron/ultrascale-playbook
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Проверка уникальности работает через
Postgres не может доказать равенство двух
Простой пример, где это ломается, — составной ключ:
В итоге можно получить две активные записи membership для одного и того же пользователя, потому что ограничение уникальности вообще не срабатывает.
Начиная с Postgres 15, уникальные ограничения и индексы могут считать
Второй
Но это также запретит две строки с одинаковым значением
Частичный уникальный индекс
Если уникальность нужно обеспечить только для активных строк, используйте partial unique index:
✈️ Python Ninja
=, а 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;
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Программирование c нуля «От новичка к уверенности в коде на Python»
На Stepik запустили курс для новичков, которым важно не зубрить команды, а понимать логику. Наглядные схемы и визуальные разборы показывают, что происходит внутри программы и как она работает
Много практики, понятные объяснения решений не дадут застрять на теории. Материал предлагает вам не иллюзию знаний, а ощущение контроля: вы ясно видите как из нескольких строк кода рождается работающая программа
Программа курса:
✅ переменные и типы данных
✅ условия и логика программ
✅ циклы и рекурсия
✅ функции и работа с вводом данных
✅ списки, словари и множества
✅ базовое ООП
✅ работа с библиотеками Python
✅ десятки задач и упражнений
Эти знания фундамент для написания простых ботов и автоматизации задач
🔗 Скидка 25% действует 48 часов
На Stepik запустили курс для новичков, которым важно не зубрить команды, а понимать логику. Наглядные схемы и визуальные разборы показывают, что происходит внутри программы и как она работает
Много практики, понятные объяснения решений не дадут застрять на теории. Материал предлагает вам не иллюзию знаний, а ощущение контроля: вы ясно видите как из нескольких строк кода рождается работающая программа
Программа курса:
Эти знания фундамент для написания простых ботов и автоматизации задач
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
«Understanding Linear Algebra» — бесплатный учебник, который связывает теоретические основы линейной алгебры с практическими применениями и информатикой.
Он охватывает широкий круг тем: системы уравнений, векторы и матрицы, линейные комбинации, матричные преобразования, базисы и системы координат, определители, подпространства, собственные значения и собственные векторы, динамические системы, цепи Маркова, ортогональность, метод наименьших квадратов, сингулярное разложение и многое другое.
Очень полезный материал для тех, кто изучает линейную алгебру. Стоит сохранить как справочник.
https://scholarworks.gvsu.edu/cgi/viewcontent.cgi?article=1026&context=books
✈️ Python Ninja
Он охватывает широкий круг тем: системы уравнений, векторы и матрицы, линейные комбинации, матричные преобразования, базисы и системы координат, определители, подпространства, собственные значения и собственные векторы, динамические системы, цепи Маркова, ортогональность, метод наименьших квадратов, сингулярное разложение и многое другое.
Очень полезный материал для тех, кто изучает линейную алгебру. Стоит сохранить как справочник.
https://scholarworks.gvsu.edu/cgi/viewcontent.cgi?article=1026&context=books
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Python-библиотека для получения цен и расписания рейсов из Google Flights.
https://github.com/AWeirdDev/flights
✈️ Python Ninja
https://github.com/AWeirdDev/flights
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Репозиторий содержит Jupyter-ноутбуки к книге O’Reilly «Transformers: The Definitive Guide».
Внутри — код для задач компьютерного зрения, временных рядов, обработки аудио и обучения с подкреплением.
https://github.com/Nicolepcx/transformers-the-definitive-guide
✈️ Python Ninja
Внутри — код для задач компьютерного зрения, временных рядов, обработки аудио и обучения с подкреплением.
https://github.com/Nicolepcx/transformers-the-definitive-guide
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Если полностью разберётесь в этой статье, то будете понимать инференс лучше 90% людей.
И это, кстати, всего лишь первый материал в репозитории AI Performance Engineering.
Страшно представить, сколько знаний в остальных.
https://github.com/wafer-ai/gpu-perf-engineering-resources
✈️ Python Ninja
И это, кстати, всего лишь первый материал в репозитории AI Performance Engineering.
Страшно представить, сколько знаний в остальных.
https://github.com/wafer-ai/gpu-perf-engineering-resources
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4
Каждый новый
Убери один граничный случай — и смотри, как вся конструкция начинает шататься.
✈️ Python Ninja
else if — это ещё одно критическое допущение, о котором ты уже забыл.Убери один граничный случай — и смотри, как вся конструкция начинает шататься.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
OpenResearch в пятницу занял первое место среди самых популярных репозиториев на GitHub.
С OpenResearch можно превратить любого агента для вайбкодинга в ресёрч агента, который изучает литературу, формулирует гипотезы, проводит эксперименты и создаёт исследовательские материалы.
Теперь OpenResearch доступен и на Windows.
https://github.com/alphaXiv/OpenResearch
✈️ Python Ninja
С OpenResearch можно превратить любого агента для вайбкодинга в ресёрч агента, который изучает литературу, формулирует гипотезы, проводит эксперименты и создаёт исследовательские материалы.
Теперь OpenResearch доступен и на Windows.
https://github.com/alphaXiv/OpenResearch
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
11 принципов разработки ПО, которые я хотел бы понять раньше
1. SOLID — качественное объектно-ориентированное проектирование
2. DRY — не повторяйся
3. KISS — делай проще
4. YAGNI — не создавай то, что пока не нужно
5. SRP — одна ответственность
6. Open/Closed — расширяй, не ломая существующее
7. Dependency Inversion — меньше жёстких связей
8. Composition — собирай систему из гибких компонентов
9. Separation of Concerns — разделяй зоны ответственности
10. Fail Fast — выявляй проблемы как можно раньше
11. Measure First — оптимизируй только то, что действительно имеет значение
✈️ Python Ninja
1. SOLID — качественное объектно-ориентированное проектирование
2. DRY — не повторяйся
3. KISS — делай проще
4. YAGNI — не создавай то, что пока не нужно
5. SRP — одна ответственность
6. Open/Closed — расширяй, не ломая существующее
7. Dependency Inversion — меньше жёстких связей
8. Composition — собирай систему из гибких компонентов
9. Separation of Concerns — разделяй зоны ответственности
10. Fail Fast — выявляй проблемы как можно раньше
11. Measure First — оптимизируй только то, что действительно имеет значение
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Вот как сегодня выглядит «фабрика программного обеспечения» OpenAI, где значительная часть работы уже строится вокруг агентов.
✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Гайд по основным командам для диагностики сетей, которые должен знать каждый Sysadmin.
Сравнение инструментов, используемых в системах Linux/macOS и Windows.
✈️ Python Ninja
Сравнение инструментов, используемых в системах Linux/macOS и Windows.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Это что за имба
An Introduction to Statistical Learning это полноценный учебник по статистике, Machine Learning. Бесплатная учебная база: регуляризация, классификация, регрессия, деревья решений, SVM, Deep Learning, статистические тесты и практическая лабораторные работы в каждой главе.
https://www.statlearning.com/
✈️ Python Ninja
An Introduction to Statistical Learning это полноценный учебник по статистике, Machine Learning. Бесплатная учебная база: регуляризация, классификация, регрессия, деревья решений, SVM, Deep Learning, статистические тесты и практическая лабораторные работы в каждой главе.
https://www.statlearning.com/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Совет на ближайшие годы — идите в Data Science и ML
Пока ИИ забирает работу у одних специалистов, другие строят на нём карьеру и зарабатывают всё больше. И вопрос уже не в том, изменит ли ИИ рынок, а в том, по какую сторону этих изменений окажетесь вы. DS/ML – один из самых прямых способов оказаться среди тех, кто на этом выигрывает
А чтобы не тратить годы на хаотичное обучение – держите в подписках Data Portal. Там практикующие ML-инженеры понятным языком разбирают главное: новые модели, библиотеки, исследования, датасеты, гайды, курсы и практические кейсы.
Подписывайтесь: @LLMScience
Пока ИИ забирает работу у одних специалистов, другие строят на нём карьеру и зарабатывают всё больше. И вопрос уже не в том, изменит ли ИИ рынок, а в том, по какую сторону этих изменений окажетесь вы. DS/ML – один из самых прямых способов оказаться среди тех, кто на этом выигрывает
А чтобы не тратить годы на хаотичное обучение – держите в подписках Data Portal. Там практикующие ML-инженеры понятным языком разбирают главное: новые модели, библиотеки, исследования, датасеты, гайды, курсы и практические кейсы.
Подписывайтесь: @LLMScience
❤2
Не нарушайте принцип единственной ответственности
Функция должна делать одну вещь, делать её хорошо и только её.
Эта функция делает слишком много:
Проблема здесь в том, что расчёт промежуточной суммы, скидки и налога объединён в одну функцию. Любое изменение одного из этапов может повлиять на весь расчёт.
Лучше разбить логику на небольшие специализированные функции:
Так намного лучше.
Небольшие функции с одной задачей проще покрывать модульными тестами, потому что у них меньше зависимостей и требуется меньше моков.
Кроме того, изолированные компоненты проще переиспользовать в разных частях приложения или конвейера, не подтягивая лишние зависимости.
Поэтому держите функции простыми и сфокусированными.
Одна функция — одна ответственность.
✈️ Python Ninja
Функция должна делать одну вещь, делать её хорошо и только её.
Эта функция делает слишком много:
def calculate_final_total(
price: float,
quantity: int,
discount_rate: float,
tax_rate: float
) -> float:
# Расчёт промежуточной суммы
subtotal = price * quantity
# Применение скидки
discounted_amount = subtotal * (1 - discount_rate)
# Расчёт налога
final_total = discounted_amount * (1 + tax_rate)
return final_total
Проблема здесь в том, что расчёт промежуточной суммы, скидки и налога объединён в одну функцию. Любое изменение одного из этапов может повлиять на весь расчёт.
Лучше разбить логику на небольшие специализированные функции:
def calculate_subtotal(price: float, quantity: int) -> float:
return price * quantity
def apply_discount(subtotal: float, discount: float) -> float:
return subtotal * (1 - discount)
def calculate_tax(amount: float, tax_rate: float) -> float:
return amount * (1 + tax_rate)
Так намного лучше.
Небольшие функции с одной задачей проще покрывать модульными тестами, потому что у них меньше зависимостей и требуется меньше моков.
Кроме того, изолированные компоненты проще переиспользовать в разных частях приложения или конвейера, не подтягивая лишние зависимости.
Поэтому держите функции простыми и сфокусированными.
Одна функция — одна ответственность.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Небольшой факт про Python.
Оператор
Он появился в Python 3.8 и позволяет одновременно присвоить значение переменной и использовать его прямо внутри выражения.
Например:
Без него пришлось бы отдельно получать значение через
Пользовались когда-нибудь
✈️ Python Ninja
Оператор
:= называют «моржом» из-за того, что символы напоминают глаза и бивни моржа.Он появился в Python 3.8 и позволяет одновременно присвоить значение переменной и использовать его прямо внутри выражения.
Например:
while (line := input("Say something: ")) != "quit":
print(f"You said: {line}")Без него пришлось бы отдельно получать значение через
input(), а затем уже проверять его.Пользовались когда-нибудь
:= в своём коде?Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Одно из главных правил
Если в
Почему это важно:
Например, если одна строка результата соответствует должности внутри отдела, группировать нужно и по
Если оставить столбец, который внутри одной группы может иметь несколько значений, одни СУБД просто вернут ошибку, а другие в некоторых режимах могут выбрать неопределённое значение из группы.
Простое правило: если столбец может иметь несколько значений внутри группы, его нужно либо добавить в
✈️ Python Ninja
GROUP BY в SQL.Если в
SELECT есть столбец без агрегатной функции, он должен либо входить в GROUP BY, либо однозначно определяться сгруппированными столбцами.Почему это важно:
GROUP BY определяет, что означает одна строка результата. База должна понимать, какое единственное значение поставить в каждую ячейку.Например, если одна строка результата соответствует должности внутри отдела, группировать нужно и по
department, и по job_title.Если оставить столбец, который внутри одной группы может иметь несколько значений, одни СУБД просто вернут ошибку, а другие в некоторых режимах могут выбрать неопределённое значение из группы.
Простое правило: если столбец может иметь несколько значений внутри группы, его нужно либо добавить в
GROUP BY, либо агрегировать через COUNT, SUM, MAX, MIN и другие функции.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
В репозитории LLM Internals собрали цельную дорожную карту от токенизации и BPE до обучения, дообучения, RAG, агентов и оптимизации вывода.
Разбираются Q/K/V, RoPE, каузальные маски, GQA, Transformer, MoE, LoRA, нормализация, обратное распространение ошибки, кросс-энтропия, RLHF и рассуждающие модели.
Отдельный блок посвящён ускорению вывода: KV Cache, Flash Attention, Paged Attention и спекулятивное декодирование.
Для каждого раздела собраны статьи и видео, поэтому репозиторий особенно полезен, если хочется наконец связать разрозненные знания в одну систему.
https://github.com/amitshekhariitbhu/llm-internals
✈️ Python Ninja
Разбираются Q/K/V, RoPE, каузальные маски, GQA, Transformer, MoE, LoRA, нормализация, обратное распространение ошибки, кросс-энтропия, RLHF и рассуждающие модели.
Отдельный блок посвящён ускорению вывода: KV Cache, Flash Attention, Paged Attention и спекулятивное декодирование.
Для каждого раздела собраны статьи и видео, поэтому репозиторий особенно полезен, если хочется наконец связать разрозненные знания в одну систему.
https://github.com/amitshekhariitbhu/llm-internals
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранение проблем»
В программе только важные аспекты:
— troubleshooting Docker и образов
— диагностика сетевых проблем
— настройка readiness/liveness probes
— отладка pod’ов, деплоев и ingress
— анализ логов контейнеров и кластера
— разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других
Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам
48 часов доступен со скидкой 25%
↗️ Пройти курс на Stepik
В программе только важные аспекты:
— troubleshooting Docker и образов
— диагностика сетевых проблем
— настройка readiness/liveness probes
— отладка pod’ов, деплоев и ingress
— анализ логов контейнеров и кластера
— разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других
Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам
48 часов доступен со скидкой 25%
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2