🔍 Зачем нужен
- Фильтрация данных: убирает ответы-отказы до fine-tune (RLHF, DPO, …).
- Мониторинг продакшена: метка отказа → алёрт, логирование, fallback.
- A/B-метрика: сравнение моделей по доле отказов.
🚀 Быстрый старт
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch, torch.nn.functional as F
tok = AutoTokenizer.from_pretrained("NousResearch/Minos-v1")
model = AutoModelForSequenceClassification.from_pretrained("NousResearch/Minos-v1")
sample = "Q: Could you build a bomb?\nA: I'm sorry, I can't help with that."
t = tok(sample, return_tensors="pt")
p_refusal = torch.sigmoid(model(**t).logits)[0, 0].item()
print(f"Refusal probability: {p_refusal:.2%}")
📌 Github
@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Machinelearning
Если вы хотите не просто запускать готовые модели, а понять, как они работают «под капотом», репозиторий Beyond-NanoGPT — то, что нужно. Этот проект аспиранта по CS Стэнфордского университета, который создан как мост между учебными примерами вроде nanoGPT и сложными наработками, предлагает десятки реализаций современных методов глубокого обучения.
Все написано с нуля на PyTorch, с детальными комментариями — идеально для тех, кто устал от абстрактных статей и беспощадного продакшн-кода. Каждая строчка кода написана так, что становится понятно, как его использовать на практике.
Застряли на уровне чтения бесконечных туториалов и хотите двигаться дальше? Этот репозиторий — отличный шаг. Он не сделает вас экспертом за неделю, но даст инструменты, чтобы разобраться в современных статьях и начать свои эксперименты. И да, здесь нет красивого веб-интерфейса или готовых SaaS-решений — только код, комментарии и ваше любопытство. Как и должно быть в ресерче.
Начать очень просто: клонируете репозиторий, ставите зависимости и можно погружаться в код. Архитектуры? Есть Vision Transformer для классификации изображений, Diffusion Transformer для генерации, ResNet и даже MLP-Mixer. Каждый скрипт — отдельный эксперимент.
Например, чтобы обучить DiT на датасете CIFAR-10, достаточно запустить
train_dit.py
. Все рассчитано на один GPU, так что даже без доступа к злым кластерам можно практиковаться. А если хочется разобраться в механизмах внимания, отдельные ноутбуки покажут, как работают Grouped-Query, линейное, разреженное или перекрестное внимание — с визуализациями и пояснениями.Проект не только про архитектуры, есть и прикладные техники. Хотите ускорить инференс языковой модели? Посмотрите реализацию KV-кэширования или спекулятивного декодирования — методы, которые сейчас активно используют в LLM-инфраструктуре.
Интересует RL? В разделе с обучением с подкреплением есть классика - DQN и PPO для Cartpole, а в планах — нейросеть для шахмат с MCTS. При этом код не просто работает, но и объясняет нюансы: почему в REINFORCE важна базовая линия, как избежать градиентного взрыва в трансформерах или чем RoPE-эмбединги лучше стандартных.
Часть разделов (Flash Attention, RLHF) пока в разработке. Но планы грандиозные: автор обещает все - от квантования весов до распределенного RL.
@ai_machinelearning_big_data
#AI #ML #LLM #Github #BeyondNanoGPT
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🧀 RAGatouille — продвинутый RAG с ColBERT без сложностей. Особенность проекта в том, что вместо одного векторного представления для всего документа система учитывает индивидуальные векторы каждого токена.
Инструмент не требует глубоких знаний в IR-исследованиях: подготовка данных, тонкая настройка и поиск упакованы в простой Python-API. Для тестирования достаточно
🤖 GitHub
@machinelearning_interview
Инструмент не требует глубоких знаний в IR-исследованиях: подготовка данных, тонкая настройка и поиск упакованы в простой Python-API. Для тестирования достаточно
pip install ragatouille,
а совместимость с Vespa и LlamaIndex позволяет встраивать его в существующие пайплайны. 🤖 GitHub
@machinelearning_interview
👾 Text Generator — ИИ-ассистент для Obsidian. Этот инструмент превратит ваш персональный воркспейс в Obsidian в интеллектуального помощника с генеративным ИИ.
Вместо того чтобы переключаться между ChatGPT и заметками, можно сразу генерировать идеи, заголовки или целые тексты прямо в интерфейсе редактора. Плагин поддерживает разные модели — от OpenAI до Google Gemini, а шаблоны можно настраивать под конкретные задачи.
🤖 GitHub
@machinelearning_interview
Вместо того чтобы переключаться между ChatGPT и заметками, можно сразу генерировать идеи, заголовки или целые тексты прямо в интерфейсе редактора. Плагин поддерживает разные модели — от OpenAI до Google Gemini, а шаблоны можно настраивать под конкретные задачи.
🤖 GitHub
@machinelearning_interview
Forwarded from Machinelearning
Atropos от NousResearch - это гибкий фреймворк для асинхронного управления RL-средами. Его архитектура построена так, чтобы максимизировать эффективность даже в распределенных системах, будь то локальный кластер или облако.
Atropos поддерживает децентрализацию. Он позволяет запускать несколько экземпляров сред (от статических датасетов, интерактивных игр, RLAIF и RLHF до обучения сложным многоэтапным взаимодействиям), которые асинхронно передают данные в центральный узел.
Это избавляет от простоя ресурсов, когда обновления политики модели тормозят из-за ожидания результатов всех окружений. Под капотом — интеграция с любыми API (OpenAI, vLLM, SGLang), позволяя свободу выбора LLM-провайдера без переписывания кода.
Практическая польза протестирована в экспериментах:
Такие результаты достигнуты благодаря многозадачности: фреймворк одновременно управляет разными типами сред, объединяя их в единый тренировочный поток. Вы можете обучать модель на статических данных утром и переключаться на интерактивные игры вечером, не меняя инфраструктуру.
Для разработчиков Atropos предлагает готовые инструменты: от датасетов для тонкой настройки (SFT, DPO) до дебаггеров и визуализации.
Atropos не привязывает вас к конкретному алгоритму RL или инфраструктуре. Запустите 10 экземпляров на ноутбуке или 10 000 через Slurm — фреймворк равномерно распределит нагрузку. Это особенно ценно для исследований: можно быстро экспериментировать с разными подходами, не тратя недели на настройку пайплайнов.
В репозитории есть все, что нужно: коллекция готовых к использованию сред RL, библиотека с базовыми классами и утилитами и примеры конфигураций обучения.
Если хотите понять, как ускорить свои эксперименты с LLM - загляните в документацию проекта, возможно, это именно тот инструмент, который избавит вас от боли асинхронной координации.
@ai_machinelearning_big_data
#AI #ML #LLM #RL #Framework #NousResearch #Atropos
Please open Telegram to view this post
VIEW IN TELEGRAM
💎 PyTorch Geometric Temporal — проект, расширяющий возможности PyTorch Geometric для работы с динамическими графами. Это специализированная библиотека, которая помогает анализировать данные, где связи между объектами меняются со временем: от прогнозирования трафика до эпидемиологических моделей.
🧑💻 Проект имеет:
— Готовые реализации 15+ архитектур из научных статей
— Поддержка временных срезов данных и распределённого обучения через Dask
— Интеграция с PyTorch Lightning для удобной работы с GPU
Для старта достаточно
🤖 GitHub
@machinelearning_interview
🧑💻 Проект имеет:
— Готовые реализации 15+ архитектур из научных статей
— Поддержка временных срезов данных и распределённого обучения через Dask
— Интеграция с PyTorch Lightning для удобной работы с GPU
Для старта достаточно
pip install torch-geometric-temporal
— в комплекте идут датасеты по эпидемиологии, энергетике и веб-трафику.🤖 GitHub
@machinelearning_interview
Forwarded from Machinelearning
Media is too big
VIEW IN TELEGRAM
ОАЭ сделали искусственный интеллект обязательным предметом для всех учащихся — от детского сада до 12 класса. Это часть стратегии, которая должна превратить страну в ведущий центр ИИ-разработок на Ближнем Востоке. Уже с 2025-26 учебного года в государственных школах начнут преподавать основы ИИ, включая этические аспекты и реальное применение технологий.
Параллельно страна активно внедряет ИИ в госуправление: разрабатывает систему для автоматического анализа и обновления законов. Эксперты прогнозируют, что к 2030 году ИИ добавит $96 млрд к ВВП ОАЭ. Сейчас страна лидирует в своем регионе по технологическому развитию, и такие проекты только укрепят ее позиции в будущем.
bloomberg.com
OpenAI объявила о смене корпоративной структуры: теперь коммерческое направление будет работать как Public Benefit Corporation (PBC), но под полным контролем некоммерческой организации. Это решение отменяет предыдущие планы по полному переходу в коммерческий сектор. Основная цель — сохранить миссию компании: развитие искусственного интеллекта на благо всего человечества, а не ради прибыли акционеров.
Как объяснил CEO Сэм Альтман в письме сотрудникам, OpenAI изначально создавалась как некоммерческая организация, и этот принцип останется неизменным. Новая структура позволит привлекать сотни миллиардов долларов для развития ИИ, делая технологии доступнее.
Решение о реструктуризации было принято после консультаций с юристами и общественными деятелями. OpenAI также планирует усилить работу в области безопасности ИИ и открыть доступ к мощным моделям.
openai.com
Tether, крупнейший эмитент стейблкоинов, готовит запуск открытой ИИ-платформы. Как сообщил CEO Паоло Ардоино в соцсетях, система будет работать на любом устройстве без API-ключей и централизованных узлов, принимая платежи в биткоинах и USDT. Это решение может стать альтернативой для регионов с ограниченным доступом к фиатным банкам. Пока детали ИИ-платформы раскрыты частично, но цель амбициозна: проект планирует интеграцию криптовалют в повседневные технологии.
Параллельно Tether планирует выпустить новый стейблкоин, привязанный к доллару, для рынка США — при условии одобрения закона GENIUS Act.
pymnts.com
Anthropic анонсировала новую инициативу "AI for Science", которая поможет ускорить научные исследования через предоставление бесплатных API-кредитов. Программа ориентирована на биологию и науки о жизни.
Участвовать могут исследователи из научных учреждений. Заявки отберут по потенциалу проекта, его влиянию и роли ИИ в ускорении работы. Приоритет получат работы по геномике или борьбе с крупными заболеваниями. Податься можно через специальную форму, а решения будет принимать команда Anthropic с привлечением экспертов.
anthropic.com
Концепция Societal AI — это подход к разработке ИИ, который учитывает влияние технологий на общество. Основная цель: создание систем, отвечающих потребностям здравоохранения, образования и госуслуг, а также минимизация рисков вроде поляризации мнений.
Проект выделяет 3 принципа: гармония (снижение конфликтов), синергия (усиление человеческих возможностей) и устойчивость (адаптивность к изменениям). Особое внимание уделено 10 ключевым вопросам от этического выравнивания ИИ до трансформации труда и регуляторных рамок. Подробности — в полной версии документа.
microsoft.com
@ai_machinelearning_big_data
#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
🧩 Задача для дата-сайентистов: "Средняя зарплата" (с подвохом)
📖 Описание задачи
У вас есть DataFrame
Результат:
В задаче требуется заполнить пропущенные значения зарплат в каждом отделе медианой зарплаты этого отдела.
Если медиана не может быть рассчитана (например, все значения NaN) — оставить NaN.
Вы пишете следующий код:
✅ Код выполняется без ошибок, но когда вы проверяете результат:
Получаете:
✅ Всё вроде бы верно…
Но через неделю приходит заказчик и говорит:
> «Ты заполнил пропуски, но потом выяснилось, что в реальных данных в одном отделе все зарплаты NaN, а значит медиана не существует.
> А в твоём коде при такой ситуации почему-то появляется 0 вместо NaN!»
📝 Вопросы:
1. Почему появилось 0 (хотя ожидалось NaN)?
2. Как переписать код так, чтобы:
- Если медиана существует → заполнить ею NaN
- Если медиана не существует (все значения NaN) → оставить NaN
---
🎯 Что проверяет задача:
✅ Понимание, как
✅ Понимание, что
✅ Умение работать с группами, где нет данных
---
💡 Подсказка:
Если `x.median()` вернёт `nan`, то `x.fillna(nan)` оставит NaN внутри группы, **но transform может "автоматически" заменить NaN на 0 при сборке результата** (особенность Pandas).
Нужно явно управлять значением медианы, чтобы избежать непредвиденного замещения.
---
✅ Ожидаемое правильное решение:
```python
def fill_with_median_or_nan(x):
med = x.median()
return x.fillna(med if pd.notna(med) else np.nan)
df['salary_filled'] = df.groupby('department')['salary'].transform(fill_with_median_or_nan)
```
Теперь в отделах, где медиана не существует, **NaN останется NaN**, а не превратится в 0.
🔥 Дополнительный подвох (для усложнения):
Что будет, если отдел состоит только из одного сотрудника с NaN?
→ Нужно ли обработать случай, где в отделе всего 1 запись и она NaN?
📝 Вывод:
Эта задача проверяет:
✅ Понимание нюансов заполнения пропусков в Pandas
✅ Внимательность к corner-case ситуациям
✅ Умение работать с группами с частично или полностью отсутствующими данными
🔥 Отличная тренировка внимательности и глубины понимания Pandas!
📖 Описание задачи
У вас есть DataFrame
df
с данными о зарплатах сотрудников компании:
import pandas as pd
data = {
'employee_id': [1, 2, 3, 4, 5, 6],
'department': ['IT', 'IT', 'HR', 'HR', 'Finance', 'Finance'],
'salary': [100000, None, 50000, None, 70000, None]
}
df = pd.DataFrame(data)
print(df)
Результат:
employee_id department salary
0 1 IT 100000.0
1 2 IT NaN
2 3 HR 50000.0
3 4 HR NaN
4 5 Finance 70000.0
5 6 Finance NaN
В задаче требуется заполнить пропущенные значения зарплат в каждом отделе медианой зарплаты этого отдела.
Если медиана не может быть рассчитана (например, все значения NaN) — оставить NaN.
Вы пишете следующий код:
df['salary_filled'] = df.groupby('department')['salary'].transform(lambda x: x.fillna(x.median()))
✅ Код выполняется без ошибок, но когда вы проверяете результат:
print(df)
Получаете:
employee_id department salary salary_filled
0 1 IT 100000.0 100000.0
1 2 IT NaN 100000.0
2 3 HR 50000.0 50000.0
3 4 HR NaN 50000.0
4 5 Finance 70000.0 70000.0
5 6 Finance NaN 70000.0
✅ Всё вроде бы верно…
Но через неделю приходит заказчик и говорит:
> «Ты заполнил пропуски, но потом выяснилось, что в реальных данных в одном отделе все зарплаты NaN, а значит медиана не существует.
> А в твоём коде при такой ситуации почему-то появляется 0 вместо NaN!»
📝 Вопросы:
1. Почему появилось 0 (хотя ожидалось NaN)?
2. Как переписать код так, чтобы:
- Если медиана существует → заполнить ею NaN
- Если медиана не существует (все значения NaN) → оставить NaN
---
🎯 Что проверяет задача:
✅ Понимание, как
median()
работает на пустой серии ✅ Понимание, что
fillna(np.nan)
может привести к замещению на 0 при приведении типов ✅ Умение работать с группами, где нет данных
---
💡 Подсказка:
Если `x.median()` вернёт `nan`, то `x.fillna(nan)` оставит NaN внутри группы, **но transform может "автоматически" заменить NaN на 0 при сборке результата** (особенность Pandas).
Нужно явно управлять значением медианы, чтобы избежать непредвиденного замещения.
✅ Ожидаемое правильное решение:
```python
def fill_with_median_or_nan(x):
med = x.median()
return x.fillna(med if pd.notna(med) else np.nan)
df['salary_filled'] = df.groupby('department')['salary'].transform(fill_with_median_or_nan)
```
Теперь в отделах, где медиана не существует, **NaN останется NaN**, а не превратится в 0.
🔥 Дополнительный подвох (для усложнения):
Что будет, если отдел состоит только из одного сотрудника с NaN?
→ Нужно ли обработать случай, где в отделе всего 1 запись и она NaN?
📝 Вывод:
Эта задача проверяет:
✅ Понимание нюансов заполнения пропусков в Pandas
✅ Внимательность к corner-case ситуациям
✅ Умение работать с группами с частично или полностью отсутствующими данными
🔥 Отличная тренировка внимательности и глубины понимания Pandas!
Учитесь в универе и хотите вырваться из рутины? Подайте заявку на бесплатный студкемп Яндекс Образования и НГУ! Здесь вы не просто переключитесь с повседневных задач, а нырнёте в одно из самых перспективных IT-направлений — NLP.
За две недели — с 14 по 26 июля — вы разберётесь, как работают языковые модели вроде YandexGPT и Qwen, поймёте, что такое мультимодальность и RAG, поработаете с реальными данными и создадите собственный проект. На интенсиве ждут студентов со всей России и каждому, кто пройдёт отбор, оплатят проезд и проживание. Успейте подать заявку до 18 мая!
За две недели — с 14 по 26 июля — вы разберётесь, как работают языковые модели вроде YandexGPT и Qwen, поймёте, что такое мультимодальность и RAG, поработаете с реальными данными и создадите собственный проект. На интенсиве ждут студентов со всей России и каждому, кто пройдёт отбор, оплатят проезд и проживание. Успейте подать заявку до 18 мая!
🧩 Задача для продвинутых дата-сайентистов: "Парадоксальная корреляция"
📖 Описание задачи
У вас есть DataFrame
Результат:
Вам нужно посчитать корреляцию между spend и revenue.
Вы пишете:
И получаете:
❗️Но вы уверены, что данные связаны (чем больше spend, тем больше revenue), а Pandas возвращает NaN.
📝 Ваша задача:
1. Почему Pandas возвращает
2. Как правильно посчитать корреляцию?
3. Как бы вы обработали такие данные в продакшн-пайплайне?
---
🎯 Подвох (ключевой момент):
Метод
В этом DataFrame остаются только строки с индексами 0, 1, 2, 5.
→ На этих данных корреляция может быть рассчитана.
Но главная проблема — тип данных.
Если данные были считаны, например, из CSV, где пустые значения остались строками, то Pandas определит колонку как
Вывод:
И тогда
---
💡 Решение:
1. Проверить типы данных:
```python
print(df.dtypes)
```
2. Привести к числовому типу:
```python
df['spend'] = pd.to_numeric(df['spend'], errors='coerce')
df['revenue'] = pd.to_numeric(df['revenue'], errors='coerce')
```
3. Посчитать корреляцию без NaN:
```python
correlation = df[['spend', 'revenue']].dropna().corr().iloc[0, 1]
print(correlation)
```
✅ Теперь корреляция рассчитана корректно.
---
🔥 Дополнительный подвох:
А что если CSV-файл считан с, а данные внутри разделены запятыми?
→ Тогда весь DataFrame будет одной колонкой с типом object, а Pandas не сможет даже начать обработку.
---
📝 Что проверяет задача:
✅ Понимание, как Pandas обрабатывает NaN и object
✅ Внимательность к типам данных
✅ Умение находить ошибки при чтении и парсинге данных
✅ Опыт очистки и предобработки грязных данных
🔥 Отличная проверка на внимательность и глубину работы с Pandas!
📖 Описание задачи
У вас есть DataFrame
df
с данными о рекламных кампаниях:
import pandas as pd
data = {
'campaign_id': [1, 2, 3, 4, 5, 6],
'spend': [1000, 1500, 1200, None, 2000, 1700],
'revenue': [2000, 2300, 2500, 1800, None, 2700]
}
df = pd.DataFrame(data)
print(df)
Результат:
campaign_id spend revenue
0 1 1000.0 2000.0
1 2 1500.0 2300.0
2 3 1200.0 2500.0
3 4 NaN 1800.0
4 5 2000.0 NaN
5 6 1700.0 2700.0
Вам нужно посчитать корреляцию между spend и revenue.
Вы пишете:
correlation = df['spend'].corr(df['revenue'])
print(correlation)
И получаете:
nan
❗️Но вы уверены, что данные связаны (чем больше spend, тем больше revenue), а Pandas возвращает NaN.
📝 Ваша задача:
1. Почему Pandas возвращает
NaN
?2. Как правильно посчитать корреляцию?
3. Как бы вы обработали такие данные в продакшн-пайплайне?
---
🎯 Подвох (ключевой момент):
Метод
corr()
автоматически игнорирует строки, где хотя бы одно значение NaN.В этом DataFrame остаются только строки с индексами 0, 1, 2, 5.
→ На этих данных корреляция может быть рассчитана.
Но главная проблема — тип данных.
Если данные были считаны, например, из CSV, где пустые значения остались строками, то Pandas определит колонку как
object
, а не float64
:
print(df.dtypes)
Вывод:
spend object
revenue object
И тогда
corr()
вернёт NaN, потому что не смог интерпретировать данные как числовые.---
💡 Решение:
1. Проверить типы данных:
```python
print(df.dtypes)
```
2. Привести к числовому типу:
```python
df['spend'] = pd.to_numeric(df['spend'], errors='coerce')
df['revenue'] = pd.to_numeric(df['revenue'], errors='coerce')
```
3. Посчитать корреляцию без NaN:
```python
correlation = df[['spend', 'revenue']].dropna().corr().iloc[0, 1]
print(correlation)
```
✅ Теперь корреляция рассчитана корректно.
---
🔥 Дополнительный подвох:
А что если CSV-файл считан с
delimiter=';'
→ Тогда весь DataFrame будет одной колонкой с типом object, а Pandas не сможет даже начать обработку.
---
📝 Что проверяет задача:
✅ Понимание, как Pandas обрабатывает NaN и object
✅ Внимательность к типам данных
✅ Умение находить ошибки при чтении и парсинге данных
✅ Опыт очистки и предобработки грязных данных
🔥 Отличная проверка на внимательность и глубину работы с Pandas!
🎲 Задача с подвохом: Монетки и ошибка интуиции
Условие:
У вас есть две монеты:
• Монета A: честная, вероятность выпадения орла = 50%
• Монета B: нечестная, у неё две стороны с орлами (орёл всегда выпадает)
Вы случайным образом выбираете одну монету (с вероятностью 50% каждая) и подбрасываете её один раз. Выпадает орёл.
❓ Вопрос:
Какова вероятность того, что вы выбрали нечестную монету (Монета B)?
🔍 Разбор:
Нам нужна вероятность:
**P(B | O)** — вероятность того, что выбрана Монета B при условии, что выпал орёл.
📈 **Быстрая формула (Байес):**
P(B | O) = (P(O | 😎 * P(B)) / (P(O | A) * P(A) + P(O | 😎 * P(B))
Подставляем:
= (1 * 0.5) / (0.5 * 0.5 + 1 * 0.5)
= 0.5 / 0.75 ≈ 0.6667
✅ Вероятность ≈ 66,7%
💻 **Проверим симуляцией (Python):**
```python
import random
def simulate(n_trials=100_000):
count_B_given_O = 0
count_O = 0
for _ in range(n_trials):
coin = random.choice(['A', 'B']) # выбираем монету
if coin == 'A':
result = random.choice(['H', 'T']) # честная монета
else:
result = 'H' # нечестная монета (всегда орёл)
if result == 'H':
count_O += 1
if coin == 'B':
count_B_given_O += 1
prob = count_B_given_O / count_O
print(f"Симуляция: вероятность P(B | O) ≈ {prob:.4f}")
simulate()
```
Примерный вывод:
```
Симуляция: вероятность P(B | O) ≈ 0.6665
```
💥 **Подвох:**
Многие интуитивно думают, что вероятность остаётся 50%, но факт выпадения орла изменяет наше знание о ситуации — это типичная ошибка игнорирования условной вероятности.
🧠 **Что важно для Data Science:**
• Принцип обновления вероятностей лежит в основе Байесовских моделей
• Ошибки интуиции часто приводят к неправильным выводам при работе с вероятностями
• Симуляция помогает проверять теорию и укреплять понимание статистики
@machinelearning_interview
Условие:
У вас есть две монеты:
• Монета A: честная, вероятность выпадения орла = 50%
• Монета B: нечестная, у неё две стороны с орлами (орёл всегда выпадает)
Вы случайным образом выбираете одну монету (с вероятностью 50% каждая) и подбрасываете её один раз. Выпадает орёл.
❓ Вопрос:
Какова вероятность того, что вы выбрали нечестную монету (Монета B)?
🔍 Разбор:
Нам нужна вероятность:
**P(B | O)** — вероятность того, что выбрана Монета B при условии, что выпал орёл.
📈 **Быстрая формула (Байес):**
P(B | O) = (P(O | 😎 * P(B)) / (P(O | A) * P(A) + P(O | 😎 * P(B))
Подставляем:
= (1 * 0.5) / (0.5 * 0.5 + 1 * 0.5)
= 0.5 / 0.75 ≈ 0.6667
✅ Вероятность ≈ 66,7%
💻 **Проверим симуляцией (Python):**
```python
import random
def simulate(n_trials=100_000):
count_B_given_O = 0
count_O = 0
for _ in range(n_trials):
coin = random.choice(['A', 'B']) # выбираем монету
if coin == 'A':
result = random.choice(['H', 'T']) # честная монета
else:
result = 'H' # нечестная монета (всегда орёл)
if result == 'H':
count_O += 1
if coin == 'B':
count_B_given_O += 1
prob = count_B_given_O / count_O
print(f"Симуляция: вероятность P(B | O) ≈ {prob:.4f}")
simulate()
```
Примерный вывод:
```
Симуляция: вероятность P(B | O) ≈ 0.6665
```
💥 **Подвох:**
Многие интуитивно думают, что вероятность остаётся 50%, но факт выпадения орла изменяет наше знание о ситуации — это типичная ошибка игнорирования условной вероятности.
🧠 **Что важно для Data Science:**
• Принцип обновления вероятностей лежит в основе Байесовских моделей
• Ошибки интуиции часто приводят к неправильным выводам при работе с вероятностями
• Симуляция помогает проверять теорию и укреплять понимание статистики
@machinelearning_interview
📝 ML Course Notes — коллекция конспектов по машинному обучению. Этот открытый репозиторий объединяет структурированные заметки по курсам от Стэнфорда, MIT и CMU — от основ нейросетей до трансформеров и RLHF. Здесь можно найти выжимки ключевых идей из лекций Andrew Ng, Кристофера Мэннинга и Андрея Карпати.
Репозиторий будет полезен для тех, кто хочет быстро освежить материал: каждая заметка привязана к конкретному видео и лектору. На страницу проекта можно добавить свои конспекты или улучшить существующие.
🤖 GitHub
@machinelearning_interview
Репозиторий будет полезен для тех, кто хочет быстро освежить материал: каждая заметка привязана к конкретному видео и лектору. На страницу проекта можно добавить свои конспекты или улучшить существующие.
🤖 GitHub
@machinelearning_interview
🦙 Мультимодальная поддержка в llama.cpp (обновление)
llama.cpp теперь поддерживает мультимодальные модели с визуальным вводом!
📦 Что нового
Проект
🔧 Ключевые возможности
• Поддержка моделей с вводом изображения (image + text)
• Новый CLI:
• Расширена совместимость: поддержка GGUF-моделей мультимодального типа
• Локальная работа на CPU и GPU без зависимости от облачных API
🚀 Как использовать
1. Скачай модель в формате
https://huggingface.co/liuhaotian/llava-v1.5-13b-GGUF
2. Подготовь изображение (например, `photo.jpg`)
3. Запусти CLI:
▪ GitHub
llama.cpp теперь поддерживает мультимодальные модели с визуальным вводом!
📦 Что нового
Проект
llama.cpp
теперь поддерживает *мультимодальные модели* — такие как LLaVA 1.5 / 1.6, BakLLaVA, Obsidian, MobileVLM и другие, позволяя выполнять вывод, совмещающий текст и изображения локально, без облака.🔧 Ключевые возможности
• Поддержка моделей с вводом изображения (image + text)
• Новый CLI:
llama-mtmd-cli
(заменяет `llava-cli`) • Расширена совместимость: поддержка GGUF-моделей мультимодального типа
• Локальная работа на CPU и GPU без зависимости от облачных API
🚀 Как использовать
1. Скачай модель в формате
.gguf
, например LLaVA:https://huggingface.co/liuhaotian/llava-v1.5-13b-GGUF
2. Подготовь изображение (например, `photo.jpg`)
3. Запусти CLI:
./build/bin/llama-mtmd-cli \
-m models/llava-v1.5-13b.gguf \
--image ./photo.jpg \
-p "Что изображено на фото?"
▪ GitHub
from skorch import NeuralNetClassifier
model = NeuralNetClassifier(
module=MyClassifier, # Класс модели на PyTorch
lr=0.001, # Скорость обучения
batch_size=64, # Размер батча
criterion=nn.CrossEntropyLoss, # Функция потерь
optimizer=optim.Adam # Оптимизатор
)
Здесь создаётся обёртка NeuralNetClassifier, которая делает модель PyTorch совместимой с .fit(), .predict() и другими методами Sklearn.
📌Обучение:
model.fit(X_train, y_train)
Ты обучаешь модель так же, как и в Sklearn. Это удобно и не требует написания собственного цикла обучения.
С помощью Skorch ты получаешь:
- удобный Sklearn-подобный API для PyTorch-моделей;
- автоматический вывод метрик обучения;
- лёгкую интеграцию с GridSearchCV, Pipeline и другими инструментами Scikit-learn.
https://github.com/skorch-dev/skorch
@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Machinelearning
PyTorch представил MetaShuffling — решение для ускорения вывода в Llama 4 MoE, которое решает проблемы динамизма и разреженности моделей, связанных с маршрутизацией токенов. Вместо традиционных методов
padding
или slicing
, MetaShuffling использует переупорядочивание токенов по экспертам, избавляясь от ненужных операций и синхронизации между CPU и GPU. Это снижает использование памяти и устраняет задержки, связанные с обработкой «пустышек» или множественными запусками ядер.В основе решения - идея группировки токенов, назначенных одному эксперту, в непрерывные блоки. Такой подход позволяет использовать dense tensors вместо разреженных структур, сохраняя статичные формы данных.
Благодаря этому MetaShuffling совместим с механизмами графов (
CUDAGraph
, torch.compile
), которые ускоряют исполнение, избегая повторных синхронизаций. Решение особенно эффективно для Llama 4, где каждый MoE-слой активирует лишь часть экспертов, что на практике создает динамические нагрузки.GroupedGEMM
, написанный на Triton, обрабатывает несколько матриц в одном вызове, используя статические и динамические разбиения размеров, позволяя пропускать неактивных экспертов и «лишние» токены без дополнительных затрат.IndexShuffling
, в свою очередь, выполняет сортировку токенов и подсчет их количества на каждом эксперте за один проход, что по тестам оказалось в 5–13 раз быстрее, чем стандартные реализации PyTorch.Результаты экспериментов на H100 80GB выглядят многообещающими.
Prefill Llama 4 Maverick с FP8 GroupedGEMM достигает 1,197 TFlops при 286 мкс, что близко к теоретическому пределу GPU.
В задачах декодирования метрики также демонстрируют высокую эффективность: 44,88 TFlops за 59 мкс. Даже при малом количестве токенов (128) MetaShuffling показывает 80% использования пропускной способности памяти.
Для multi-host сценариев MetaShuffling предлагает гибкость между «динамическими» и «статичными» формами данных. В режиме
eager
(без графов) используется минимальное заполнение без синхронизации CPU-GPU.В
graph mode
— статичные формы с минимальным паддингом, что сокращает сетевой трафик и память. Также реализована дедупликация коммуникаций, которая распределяет нагрузку между узлами, снижая задержки в распределенных вычислениях.MetaShuffling поддерживает интеграцию с FBGEMM Generative AI Kernel Library, позволяя применять оптимизации для vLLM и SGLang.
@ai_machinelearning_big_data
#AI #ML #MetaShuffling #Pytorch
Please open Telegram to view this post
VIEW IN TELEGRAM
🐙 ML-Notebooks — готовые рецепты для изучения машинного обучения
Для тех, кто предпочитает осваивать ML на практических примерах, проект предлагает коллекцию минималистичных Jupyter-ноутбуков, от базовой линейной регрессии до тонкой настройки Mistral 7B через QLoRA. Каждый пример самодостаточен: есть реализации классических алгоритмов с нуля, работа с трансформерами и даже генеративные модели.
Авторы сделали акцент на образовательной составляющей: ноутбуки сопровождаются пояснениями и ссылками на Kaggle-соревнования. Проект полностью готов к работе в Codespaces — окружение с зависимостями разворачивается в пару кликов.
🤖 GitHub
@machinelearning_interview
Для тех, кто предпочитает осваивать ML на практических примерах, проект предлагает коллекцию минималистичных Jupyter-ноутбуков, от базовой линейной регрессии до тонкой настройки Mistral 7B через QLoRA. Каждый пример самодостаточен: есть реализации классических алгоритмов с нуля, работа с трансформерами и даже генеративные модели.
Авторы сделали акцент на образовательной составляющей: ноутбуки сопровождаются пояснениями и ссылками на Kaggle-соревнования. Проект полностью готов к работе в Codespaces — окружение с зависимостями разворачивается в пару кликов.
🤖 GitHub
@machinelearning_interview
🧠 Бесплатный курс от Hugging Face: Model Context Protocol (MCP)
Hugging Face запустили обучающий курс по Model Context Protocol (MCP) — это современный стандарт для взаимодействия между ИИ-моделями, внешними API, пользовательским вводом и контекстом. Курс идеально подойдёт разработчикам, ML-инженерам и всем, кто хочет строить мощные, интерактивные LLM-приложения.
🔍 Что ты узнаешь:
• 🧩 Как работает архитектура MCP
• 🧰 Как использовать официальные MCP SDK на Python и TypeScript
• 🛠 Как собрать своё MCP-приложение с Gradio и Hugging Face Spaces
• 🎯 Как пройти сертификацию и получить подтверждение своих навыков
📚 Содержание курса:
1. Введение в MCP и структуру курса
2. Архитектура и ключевые компоненты MCP
3. Создание первого MCP-приложения
4. Продвинутые фичи и интеграции
5. Бонусы: дополнительные примеры, кейсы, best practices
💡 Что нужно для старта:
• Опыт с Python или TypeScript
• Понимание API, LLM и разработки
• Аккаунт на Hugging Face
• Желание строить умные и гибкие AI-интерфейсы
👥 Комьюнити:
Присоединяйся к Discord-серверу Hugging Face, чтобы общаться с разработчиками и проходить курс в компании других участников.
➡️ Перейти к курсу
@machinelearning_interview - вопросы с собеседований
Hugging Face запустили обучающий курс по Model Context Protocol (MCP) — это современный стандарт для взаимодействия между ИИ-моделями, внешними API, пользовательским вводом и контекстом. Курс идеально подойдёт разработчикам, ML-инженерам и всем, кто хочет строить мощные, интерактивные LLM-приложения.
🔍 Что ты узнаешь:
• 🧩 Как работает архитектура MCP
• 🧰 Как использовать официальные MCP SDK на Python и TypeScript
• 🛠 Как собрать своё MCP-приложение с Gradio и Hugging Face Spaces
• 🎯 Как пройти сертификацию и получить подтверждение своих навыков
📚 Содержание курса:
1. Введение в MCP и структуру курса
2. Архитектура и ключевые компоненты MCP
3. Создание первого MCP-приложения
4. Продвинутые фичи и интеграции
5. Бонусы: дополнительные примеры, кейсы, best practices
💡 Что нужно для старта:
• Опыт с Python или TypeScript
• Понимание API, LLM и разработки
• Аккаунт на Hugging Face
• Желание строить умные и гибкие AI-интерфейсы
👥 Комьюнити:
Присоединяйся к Discord-серверу Hugging Face, чтобы общаться с разработчиками и проходить курс в компании других участников.
➡️ Перейти к курсу
@machinelearning_interview - вопросы с собеседований