Forwarded from Dealer.AI
https://github.com/huggingface/transformers/releases/tag/v4.55.0
Верим?
Upd. Пока видим, что обе момзельки MoE с 3.6B и 5.1B активными параметрами, и конечно новый ускорятор на FlashAttention3.
Architecture.
- Token-choice MoE with SwiGLU activations. Классика
- When calculating the MoE weights, a softmax is taken over selected experts (softmax-after-topk). Тоже ничего нового.
- Each attention layer uses RoPE with 128K context. Не удивили.
- Alternate attention layers: full-context, and sliding 128-token window. Сам бы так сделал.
- Attention layers use a learned attention sink per-head, where the denominator of the softmax has an additional additive value. Это интересное.
- It uses the same tokenizer as GPT-4o and other OpenAI API models. Ну ок че.
- Some new tokens have been incorporated to enable compatibility with the Responses API. Ожидаемо.
P. S. Спасибо дорогому подписчику
@azik1725
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Release v4.55.0: New openai GPT OSS model! · huggingface/transformers
Welcome GPT OSS, the new open-source model family from OpenAI!
For more detailed information about this model, we recommend reading the following blogpost: https://huggingface.co/blog/welcome-open...
For more detailed information about this model, we recommend reading the following blogpost: https://huggingface.co/blog/welcome-open...
Forwarded from Задачи DS - Собеседования, Соревнования, ШАД
Гид по специализациям в Data Science
Как выбрать подходящее направление?
Преобразуем данные в бизнес-инсайты, поддерживаем принятия решений
Стек:
построение отчетов и дашбордов (Tableau, Power BI)
проведение A/B тестов
анализ ключевых метрик (DAU, LTV, retention)
знание SQL и основ статистики
ML Researcher
Разрабатываем новые алгоритмы машинного обучения и совершенствовуем существующие подходы, ну и создаём архитектуры нейронок (трансформеры, GAN, RL)+публикация научных работ
Стек:
Python и фреймворки (PyTorch, TensorFlow)
принципы работы вычислительных систем (GPU/TPU)
высшмат (линейная алгебра, теория вероятностей)
умение формализовать исследовательские задачи
Data Engineer
Тут построение и поддержка инфраструктуры для хранения и обработки данных
Стек:
проектирование хранилищ данных (Data Lakes, DWH)
настройка ETL/ELT процессов
работа с распределенными системами (Spark, Kafka)
знание SQL и языков программирования (Python, Java, Scala)
ML Engineer
Переносим исследовательские модели в prod и на нас- их обеспечение стабильной работы в промышленной среде
Стек:
оптимизация моделей для production (квантование, дистилляция)
настройка CI/CD процессов для ML
работа с облачными платформами (AWS, GCP
Docker и Kubernetes
MLOps Engineer
Основная деятельность- обеспечить полный жизненный цикл ML-моделей в проде
Стек:
автоматизация процессов обучения и развертывания моделей
настройка мониторинга и алертинга
оптимизация использования вычислительных ресурсов
MLflow, Kubeflow
просуммируем, что имеем в ds: обычный ML — когда алгоритмы учатся на данных и делают прогнозы (как яндекс.Музыка угадывает, что вам хотелось бы послушать Пошлую Молли), статистический анализ — ищем скрытые закономерности и проверяем гипотезы, инженерия данных, прога — автоматизируем всё, что шевелится, и визуализация — превращаем циферкы в красивые графики
Для любителей фундаментальных исследований: ML Researcher
Для тех, кто хочет видеть практическое применение моделей: ML Enginee
Для специалистов по работе с данными: Data Engineer
Для аналитиков, ориентированных на бизнес: Data Analyst
Для инженеров, обеспечивающих надежность: MLOps Engineer
Полезные статьи по теме:
Как выбрать подходящее направление?
Прежде чем рассматривать конкретные роли, важно понять:Data Analyst
Вам интересна теоретическая или прикладная работа?
Предпочитаете ли вы работу с данными, моделями или бизнес-аналитикой?
Насколько для вас важна инженерная составляющая?
Преобразуем данные в бизнес-инсайты, поддерживаем принятия решений
Стек:
построение отчетов и дашбордов (Tableau, Power BI)
проведение A/B тестов
анализ ключевых метрик (DAU, LTV, retention)
знание SQL и основ статистики
ML Researcher
Разрабатываем новые алгоритмы машинного обучения и совершенствовуем существующие подходы, ну и создаём архитектуры нейронок (трансформеры, GAN, RL)+публикация научных работ
Стек:
Python и фреймворки (PyTorch, TensorFlow)
принципы работы вычислительных систем (GPU/TPU)
высшмат (линейная алгебра, теория вероятностей)
умение формализовать исследовательские задачи
Data Engineer
Тут построение и поддержка инфраструктуры для хранения и обработки данных
Стек:
проектирование хранилищ данных (Data Lakes, DWH)
настройка ETL/ELT процессов
работа с распределенными системами (Spark, Kafka)
знание SQL и языков программирования (Python, Java, Scala)
ML Engineer
Переносим исследовательские модели в prod и на нас- их обеспечение стабильной работы в промышленной среде
Стек:
оптимизация моделей для production (квантование, дистилляция)
настройка CI/CD процессов для ML
работа с облачными платформами (AWS, GCP
Docker и Kubernetes
MLOps Engineer
Основная деятельность- обеспечить полный жизненный цикл ML-моделей в проде
Стек:
автоматизация процессов обучения и развертывания моделей
настройка мониторинга и алертинга
оптимизация использования вычислительных ресурсов
MLflow, Kubeflow
просуммируем, что имеем в ds: обычный ML — когда алгоритмы учатся на данных и делают прогнозы (как яндекс.Музыка угадывает, что вам хотелось бы послушать Пошлую Молли), статистический анализ — ищем скрытые закономерности и проверяем гипотезы, инженерия данных, прога — автоматизируем всё, что шевелится, и визуализация — превращаем циферкы в красивые графики
Для любителей фундаментальных исследований: ML Researcher
Для тех, кто хочет видеть практическое применение моделей: ML Enginee
Для специалистов по работе с данными: Data Engineer
Для аналитиков, ориентированных на бизнес: Data Analyst
Для инженеров, обеспечивающих надежность: MLOps Engineer
Полезные статьи по теме:
یک@zadachi_ds
ב
س
ד
پنج
ו
Forwarded from Задачи DS - Собеседования, Соревнования, ШАД
Цикл прохождения: Middle WB MLops направления🍇
#wildberries
Вакансию нашёл в тгк канале при вузике(я еврейский мальчик из мгу)
В момент подачи на вакансию имелся годовой опыт работы с командами: 3 месяца стажки с альфа банке, 6 месяцев в Сбере джуном и месяц накручен
Написал по указаным в посте контактам. Эйчарка была страшненькой. Общался нехотя, перетерпел.. Назначили собес. Прошлись по общим вопросам, не углублялись
Всё длилось в районе 1.5 часика, потом пошёл играть в цивилизацию🤓
От момента подачи до оффера прошло 2 недели, в целом, оперативно
@zadachi_ds
#wildberries
Вакансию нашёл в тгк канале при вузике(я еврейский мальчик из мгу)
В момент подачи на вакансию имелся годовой опыт работы с командами: 3 месяца стажки с альфа банке, 6 месяцев в Сбере джуном и месяц накручен
Написал по указаным в посте контактам. Эйчарка была страшненькой. Общался нехотя, перетерпел.. Назначили собес. Прошлись по общим вопросам, не углублялись
что такое Docker и зачем? платформа для создания или запуска контейнеров - изолированных сред с приложением и зависимостями, обеспечивает консистентность окружения и переносимость
ограничения Docker?
меньшая изоляция чем у VM (общее ядро, риски безопасности), нельзя запустить приложение под другое ядро ОС без доп. усилий, сложности с GUI, данные по умолчанию непостоянны (нужны volumes)
что такое манифест?
файл (YAML/JSON), декларативно описывающий желаемое состояние объекта в кластере (ex., Deployment с числом реплик и образом)
как k8s взаимодействует с Docker?
k8s командует container runtime (Docker/containerd/CRI-O) через CRI, где и когда запускать или останавливать контейнеры на нодах
зачем Ingress?
для управления входящим внешним трафиком: маршрутизация на основе хоста/пути (L7) и TLS-терминация (реализуется Ingress Controller'ами типа Nginx, Traefik)
зачем балансировщики?
распределять нагрузку между репликами сервиса и предоставлять единую точку входа для клиентов (внутри кластера - Service, снаружи - Service типа LoadBalancer или Ingress)
провайдеры k8s кластеров?
управляемые облачные (GKE, EKS, AKS), он-премис (kubeadm, OpenShift), дистрибутивы (RKE)
как взаимодействуют ML модели и k8s?
модель упаковывается в Docker-контейнер с serving-кодом; деплоится в k8s (Deployment для реплик и отказоустойчивости, Service для доступа); обеспечивает масштабируемость, отказоустойчивость и управление версиями моделей
разница многопоточность vs многопроцессорность?
потоки легковесны, делят память, но ограничены GIL
процессы тяжелее, изолированы, обходят блокировку
Airflow: платформа для оркестрации, планирования и мониторинга рабочих процессов, описываемых как код (DAG), состоящих из задач с зависимостями
MLflow- управление ML lifecycle: Tracking (логирование экспериментов), Projects (упаковка кода), Models (формат + Registry для управления версиями) и Serving
как Airflow и MLflow работают вместе?
Airflow задаёт пайплайн (запуск обучения, деплой), MLflow- отслеживает эксперименты и управляет моделями; задачи Airflow взаимодействуют с MLflow Tracking/Registry
Всё длилось в районе 1.5 часика, потом пошёл играть в цивилизацию🤓
От момента подачи до оффера прошло 2 недели, в целом, оперативно
@zadachi_ds
Forwarded from Задачи DS - Собеседования, Соревнования, ШАД
Нейронки для всего
Уже развёрнутые веб-сервисы
@zadachi_ds
Уже развёрнутые веб-сервисы
выбираешь задачу -> загружаешь данные
->получаешь ответ
@zadachi_ds
Forwarded from Задачи DS - Собеседования, Соревнования, ШАД
На подходе прекрасные трустори о переходе от миддла к сеньору💅
@zadachi_ds
Как я готовился к собеседованию на позицию Senior ML Engineer
Как понять, что твой мидл готов стать сеньором? Гайд для тимлида (и не только)
В чем разница между мидлом и сеньором
Карьерный рост в Data Analytics: какие скиллы нужны для перехода на следующий грейд
@zadachi_ds
Forwarded from Задачи DS - Собеседования, Соревнования, ШАД
Изи стажка в OzonTech💙
#ozon
Недавно кончилась моя стажка в озоне, поэтому напишу кратко про сам отбор и впечатления...
Параллельно с учёбой на 3 курсе искал подработку, наткнулся на сайт с вакансиями, откликнулся на DS поиска и рекомендаций звучало хайпово.
Закинул резюме и оставил tg на сайте. Hr написала спустя месяц:^) я уж и забыл, что вообще подавался. В резюме были общие слова про место учёбы(финашка), ну и 2 курса по машинке, которые брал факультативно
Сначала был созвон с рекрутером(минут 20, тех вопросов не было)
Потом- тех собес; были теорвопросы по sql, простой quizz по видам ключей и joinов, терия ml и pytorch👇
1️⃣написать свёрточную сеть с одним свёрточным слоем и линейным
(параметры задавал тимлид в ходе интервью)
2️⃣дан кусок кода. нужно отдебажить
3️⃣написать класс логрегрессии
Работать было действительно круто, хоть и не без сложностей😶
Больше всего зацепило, что сразу попал в серьёзные проекты с реальной аудиторией в миллионы юзеров...приходилось думать над каждым мельчайшим нюансом, потому что любая ошибка могла повлиять на многих людей
Ещё была топ команда: все ребята были на одной волне, постоянно что-то предлагали и помогали разобраться в сложных моментах+был доступ к куче обучающих курсов(по сути как в Сбере), даже успели отправить на конференцию
зп: 80к гросс фултайм, считаю, для начала карьерного пути- это хорошо🤓
@zadachi_ds
#ozon
Недавно кончилась моя стажка в озоне, поэтому напишу кратко про сам отбор и впечатления...
Параллельно с учёбой на 3 курсе искал подработку, наткнулся на сайт с вакансиями, откликнулся на DS поиска и рекомендаций звучало хайпово.
Закинул резюме и оставил tg на сайте. Hr написала спустя месяц:^) я уж и забыл, что вообще подавался. В резюме были общие слова про место учёбы(финашка), ну и 2 курса по машинке, которые брал факультативно
Сначала был созвон с рекрутером(минут 20, тех вопросов не было)
Потом- тех собес; были теорвопросы по sql, простой quizz по видам ключей и joinов, терия ml и pytorch👇
1️⃣написать свёрточную сеть с одним свёрточным слоем и линейным
(параметры задавал тимлид в ходе интервью)
model = torch.nn.Sequential(
torch.nn.Conv2d(3, 16, 3),
torch.nn.ReLU(),
torch.nn.Flatten(),
torch.nn.Linear(16 * 30 * 30, 10)
)
2️⃣дан кусок кода. нужно отдебажить
for epoch in range(10):
y_pred = model(x)
loss = torch.nn.functional.mse_loss(y_pred, y)
loss.backward()
optimizer.step()
# тут надо вставить optimizer.zero_grad() перед backward
3️⃣написать класс логрегрессии
class LogisticRegression(nn.Module):
def __init__(self, input_dim):
super().__init__()
self.linear = nn.Linear(input_dim, 1)
def forward(self, x):
return torch.sigmoid(self.linear(x))
def fit(self, X, y, epochs=100, lr=0.01):
criterion = nn.BCELoss()
optimizer = torch.optim.SGD(self.parameters(), lr=lr)
for epoch in range(epochs):
optimizer.zero_grad()
outputs = self(X)
loss = criterion(outputs, y.unsqueeze(1))
loss.backward()
optimizer.step()
def predict(self, X, threshold=0.5):
with torch.no_grad():
return (self(X) >= threshold).float()
def predict_proba(self, X):
with torch.no_grad():
return self(X)
Работать было действительно круто, хоть и не без сложностей
Больше всего зацепило, что сразу попал в серьёзные проекты с реальной аудиторией в миллионы юзеров...приходилось думать над каждым мельчайшим нюансом, потому что любая ошибка могла повлиять на многих людей
Ещё была топ команда: все ребята были на одной волне, постоянно что-то предлагали и помогали разобраться в сложных моментах+был доступ к куче обучающих курсов(по сути как в Сбере), даже успели отправить на конференцию
зп: 80к гросс фултайм, считаю, для начала карьерного пути- это хорошо
@zadachi_ds
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Задачи DS - Собеседования, Соревнования, ШАД
Трансформеры — это база в 2025🤖
без них даже на джун-роль не возьмут, так что пробежимся по must-know
Кратко о сути:
текст сначала разбивается на токены (слова или их фрагменты), которые превращаются в эмбеддинги — плотные числовые векторы, фиксирующие базовое значение слова
главное чудо происходит в self-attention:
также необходимо позиционное кодирование (специальные сигналы), чтобы передать порядок слов
❔Почему же трансформеры сейчас максимально актуальны❔
👍 трансформеры хороши в рамках сложных задач с длинными зависимостями, большими данными и требованиями к генерации/глубокому анализу
(ex. большие языковые модели, машинный перевод, анализ текста/изображений/аудио, создание контента)
👎 но малоэффективны для коротких последовательностей(избыточны), систем с критичными ограничениями памяти или скорости вывода⏳, а также задач с малым объемом обучающих данных
@zadachi_ds_chat
без них даже на джун-роль не возьмут, так что пробежимся по must-know
Кратко о сути:
текст сначала разбивается на токены (слова или их фрагменты), которые превращаются в эмбеддинги — плотные числовые векторы, фиксирующие базовое значение слова
главное чудо происходит в self-attention:
тут каждое слово формирует три вектора: Запрос (Q) (что ищу?),multi-head attention использует несколько независимых наборов параметров (голов), чтобы параллельно анализировать разные типы связей (например, грамматические и семантические)
Ключ (K) (как найти?),
Значение (V) (что знаю?)🔜 Q текущего слова сравнивается (скалярное произведение) с K каждого слова в предложении, вычисляя их релевантность🔜 Эти оценки превращаются в веса внимания (softmax), показывающие, какое влияние оказывают другие слова на текущее🔜 Итоговое представление слова — динамическая сумма векторов V всех слов, взвешенная по важности
Так "ключ" (дверной) в контексте "замок" и "дверь" кардинально отличается от "ключ" (музыкальный) рядом с "ноты" и "скрипичный"
также необходимо позиционное кодирование (специальные сигналы), чтобы передать порядок слов
❔Почему же трансформеры сейчас максимально актуальны❔
Во-первых, вся последовательность обрабатывается одновременно; во-вторых, любые слова влияют друг на друга напрямую, независимо от расстояния, ну и наконец- важно увеличение данных и параметров стабильно повышает качество
(ex. большие языковые модели, машинный перевод, анализ текста/изображений/аудио, создание контента)
@zadachi_ds_chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Задачи DS - Собеседования, Соревнования, ШАД
Изи стажка в VKВидео✅️
#vk
В начало
Делюсь отзывом о стажировке от выпускника наших курсов. Учусь на 4 курсе бизнес-информатики в ВШЭ. Всё началось с моего друга, он уже работал в вк и дал контакт своего эйчара. Я отправил резюме, и через месяц мне пришла обратная связь на почту... кхе-кхе
и просьба связаться с hr. Списались в tg. Было сказано, мол будет алгоритмическая задачка и теория по ML, но я бы сузил до алгоритмическая задачка и рекомендашки
По сути вышло 3 этапа: созвон с эйчаром, тех-собес на 1.5 часа, финал с командой
Тех.собес
1.собеседующий рассказал, почему пошёл в вк (кстати, лично я кайфанул от прикольной фичи в офисе, такой как безлимитная кола(стоит автомат как в бургер кинге:), иногда засиживался на кофе-поинтах в ноуте из-за этого)
2.Алгоритмическая таска
Дан массив чисел и число k. Нужно вернуть k самых частых элементов
по решению: считаем частоту чисел через хеш-мапу, сортируем пары (число, частота) по убыванию частоты, берём первые k элементов, O(NlogN) асимптотика
3.Блок с рекомендашками
написать функцию, которая вычисляет Precision@K
пользователи часто добавляют айтемы в "смотреть позже", но не смотрят их. Как можно улучшить рекомендации?
можно ранжировать айтемы по вероятности клика(CTR, например), учитывая контекст: время, устройство и историю просмотров, после чего делать A/B-тесты и добавлять разнообразие(избегаем застревания в одной категории), повышая вовлечённость
написать формулы метрик ранжирования, которые помню(написал MAP, nDCG, MRR), обсудили ранговую корреляцию+ попросил рассказать основные подходы к построению рекомендательных систем
Финал
ребята рассказали о себе, я поделился своими пет-проектами; в целом, словили общий вайб
через 3 дня дали офер
По стажке
понравился опыт, лично я дорабатывал алгоритмы рекомендаций, крутил данные, проверял гипотезы и даже пару раз устроил небольшой баг в A/B-тестах (но быстро поправил!)
+ немного помогал внедрять фичи в бекенд
вообще, если попадёте, рекомендую ходить на митапы и задавать глупые(как вам кажется) вопросы, быстрее освоитесь:)
зп: 80к гросс, 3 месяца
@zadachi_ds_chat
#vk
В начало
Делюсь отзывом о стажировке от выпускника наших курсов. Учусь на 4 курсе бизнес-информатики в ВШЭ. Всё началось с моего друга, он уже работал в вк и дал контакт своего эйчара. Я отправил резюме, и через месяц мне пришла обратная связь на почту... кхе-кхе
Ваше резюме заинтересовало
и просьба связаться с hr. Списались в tg. Было сказано, мол будет алгоритмическая задачка и теория по ML, но я бы сузил до алгоритмическая задачка и рекомендашки
По сути вышло 3 этапа: созвон с эйчаром, тех-собес на 1.5 часа, финал с командой
Тех.собес
1.собеседующий рассказал, почему пошёл в вк (кстати, лично я кайфанул от прикольной фичи в офисе, такой как безлимитная кола(стоит автомат как в бургер кинге:), иногда засиживался на кофе-поинтах в ноуте из-за этого)
2.Алгоритмическая таска
Дан массив чисел и число k. Нужно вернуть k самых частых элементов
по решению: считаем частоту чисел через хеш-мапу, сортируем пары (число, частота) по убыванию частоты, берём первые k элементов, O(NlogN) асимптотика
3.Блок с рекомендашками
написать функцию, которая вычисляет Precision@K
def precision_at_k(recommended_items, relevant_items, K):
top_k = recommended_items[:K]
relevant_in_top_k = [item for item in top_k if item in relevant_items]
return len(relevant_in_top_k) / K if K > 0 else 0.0
пользователи часто добавляют айтемы в "смотреть позже", но не смотрят их. Как можно улучшить рекомендации?
можно ранжировать айтемы по вероятности клика(CTR, например), учитывая контекст: время, устройство и историю просмотров, после чего делать A/B-тесты и добавлять разнообразие(избегаем застревания в одной категории), повышая вовлечённость
написать формулы метрик ранжирования, которые помню(написал MAP, nDCG, MRR), обсудили ранговую корреляцию+ попросил рассказать основные подходы к построению рекомендательных систем
Финал
ребята рассказали о себе, я поделился своими пет-проектами; в целом, словили общий вайб
через 3 дня дали офер
По стажке
понравился опыт, лично я дорабатывал алгоритмы рекомендаций, крутил данные, проверял гипотезы и даже пару раз устроил небольшой баг в A/B-тестах (но быстро поправил!)
+ немного помогал внедрять фичи в бекенд
вообще, если попадёте, рекомендую ходить на митапы и задавать глупые(как вам кажется) вопросы, быстрее освоитесь:)
зп: 80к гросс, 3 месяца
@zadachi_ds_chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from что-то на DL-ском
Авторы вспомнили мутационные алгоритмы, которые я ненавидела в бакалавриате, когда мы их проходили, и утверждают, что это заменит RLHF
Если коротко АМЕРИКАНСКИЕ УЧЕННЫЕ придумали как заставить модель учиться на своих ошибках от артефактов CoT (ну а что он тупо существует, еще и жалуются ходят, что он не показывает настоящих размышлений модели)
Работает все следующих образом:
1) запускаем модель на минибатч задач по определенному классу
2) собираем с запуска всякие CoT, тул коллы (когда работаем с агентами), ошибки с компиляторов, когда это кодовые задачи и тд
3) другая LLM-ка смотрит на артефакты и выдает экспертное мнение чего не хватало в промпте, чтобы модель получше ПОДУМОЛА
За что лайк: вместо жадного выбора лучшего кандидата (который ведет к локальным оптимумам), GEPA строит Парето-фронт:
💛 Сохраняет всех кандидатов, которые лучше хотя бы на одной задаче
💛 Убирает полностью доминируемых
💛 Стохастически выбирает из оставшихся
Это дает exploration без раздувания пула кандидатов. GEPA также может скрещивать кандидатов. Если один хорошо эволюционировал модуль А, а другой — модуль Б, то берет лучшие части от каждого
В общем то что? Понятное дело, авторы делают ставку на интерпретируемость процесса эволюции, меньшее время подбора систем промптов таким способом в сравнении с RL обучением, но как это работает на самом деле не понятно, ни кода, ни модели, которая победила модель с GRPO, нифига на руках не имеется.
🖼 💅
📖 Папир
Если коротко АМЕРИКАНСКИЕ УЧЕННЫЕ придумали как заставить модель учиться на своих ошибках от артефактов CoT (ну а что он тупо существует, еще и жалуются ходят, что он не показывает настоящих размышлений модели)
Работает все следующих образом:
1) запускаем модель на минибатч задач по определенному классу
2) собираем с запуска всякие CoT, тул коллы (когда работаем с агентами), ошибки с компиляторов, когда это кодовые задачи и тд
3) другая LLM-ка смотрит на артефакты и выдает экспертное мнение чего не хватало в промпте, чтобы модель получше ПОДУМОЛА
За что лайк: вместо жадного выбора лучшего кандидата (который ведет к локальным оптимумам), GEPA строит Парето-фронт:
Это дает exploration без раздувания пула кандидатов. GEPA также может скрещивать кандидатов. Если один хорошо эволюционировал модуль А, а другой — модуль Б, то берет лучшие части от каждого
В общем то что? Понятное дело, авторы делают ставку на интерпретируемость процесса эволюции, меньшее время подбора систем промптов таким способом в сравнении с RL обучением, но как это работает на самом деле не понятно, ни кода, ни модели, которая победила модель с GRPO, нифига на руках не имеется.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
что-то на DL-ском
Под руководством одного из отцов основателей DL-я🫡 вышла статья, которая по сути является некоторым survey с дополнительным обоснованием через когнитивную психологию
Итак, Chain-of-Thought Is Not Explainability или как модели красиво врут о своих размышлениях…
Итак, Chain-of-Thought Is Not Explainability или как модели красиво врут о своих размышлениях…
Forwarded from Refat Talks: Tech & AI
This media is not supported in your browser
VIEW IN TELEGRAM
🤩 Как новенький LangExtract от Google может помочь в AI работе с доками, RAG и не только
Неделю назад Google тихо выпустил библиотеку, которая решает боль production LLM систем: как гарантировать, что извлеченные данные действительно есть в источнике, а не выдуманы моделью. Ты задаешь примеры что хочешь извлечь из текста (например, даты и суммы из контракта), LangExtract находит все такие элементы и показывает где именно каждый находится в документе, гарантируя что ничего не выдумано. Мне как раз надо было что-то подобное, я полез изучать, потом залез в исходники и залип.
Ключевая инновация - Source Grounding
Каждое извлечение привязано к точным координатам в тексте. Парсите контракт на 50 страниц? Система не просто скажет "срок оплаты 30 дней", но и покажет exact char positions где это написано. Под капотом - умный fuzzy matching алгоритм, который находит источник даже если LLM слегка перефразировал. То есть да, это как NER только без обучения, и как structured outputs, но с точным и надежным определением координат цитаты.
А еще на основе моих тестов эта штука поразительно хорошо и быстро работает с длинными документами.
Ботанский кусок (разверните кому интересно):
Use кейсы для вдохновления:
- Контракты на 100+ страниц - находит все суммы и сроки с точной ссылкой на цитату, можно легко интегрировать в UI "подсветку" фактов
- Медкарты с записями - извлекаем дозировки лекарств с гарантией и визуальным указанием источника
- Data Science стал еще доступнее: на вход тысячи не структурированный документов, на выход - CSV с нужными колонками и точными координатами откуда взял
- Извлекаете из корпоративной wiki, email, Slack: люди, проекты, технологии, их связи. Строим графы знаний - Profit!
Главное: LangExtract не просто надежно извлекает, но еще и доказывает откуда взял каждый факт.
Двигаемся еще ближе от "LLM как магический черный ящик" к "LLM как надежный production инструмент".
Блогпост | Репа
🔥➕🔁
Неделю назад Google тихо выпустил библиотеку, которая решает боль production LLM систем: как гарантировать, что извлеченные данные действительно есть в источнике, а не выдуманы моделью. Ты задаешь примеры что хочешь извлечь из текста (например, даты и суммы из контракта), LangExtract находит все такие элементы и показывает где именно каждый находится в документе, гарантируя что ничего не выдумано. Мне как раз надо было что-то подобное, я полез изучать, потом залез в исходники и залип.
Ключевая инновация - Source Grounding
Каждое извлечение привязано к точным координатам в тексте. Парсите контракт на 50 страниц? Система не просто скажет "срок оплаты 30 дней", но и покажет exact char positions где это написано. Под капотом - умный fuzzy matching алгоритм, который находит источник даже если LLM слегка перефразировал. То есть да, это как NER только без обучения, и как structured outputs, но с точным и надежным определением координат цитаты.
А еще на основе моих тестов эта штука поразительно хорошо и быстро работает с длинными документами.
Ботанский кусок (разверните кому интересно):
Покопался в исходниках, рассказываю суть.
По сути LangExtract = Few-shot Information Extraction + Structured Outputs + Automatic Source Grounding.
В отличие от простого использования structured outputs, автоматически находит точное местоположение типа {"startpos": 41, "endpos": 57}.
Общий принцип:
Документ → [Chunking] → [LLM + Schema] → [alignment phase] → Результат с позициями
Трехуровневый alignment (exact → case-insensitive → fuzzy) покрывает все основные кейсы, результаты потом валидируются.
Поддерживает extraction_passes - это механизм множественных независимых проходов извлечения по документу для повышения recall (полноты). LLM могут "пропускать" некоторые сущности при первом проходе, особенно в длинных текстах, поэтому повторные проходы помогают найти больше информации.
На входе использует example-driven подход - вместо написания промптов вы предоставляете несколько примеров того, что хотите извлечь. Из этих примеров автоматически генерируется JSON schema для structured output и создается few-shot промпт. Поддержка разных LLM провайдеров (Gemini, OpenAI, Ollama) с оптимизациями под каждый.
А с длинными доками хорошо работает за счет трех элегантных решений:
- Intelligent chunking с сохранением границ предложений (не тупое разбиение по токенам)
- Multi-pass extraction - несколько независимых проходов, каждый может найти что-то новое, результаты консолидируются
- Массивная параллелизация - десятки чанков обрабатываются одновременно
Есть встроенная HTML-визуализация с подсветкой найденных элементов прямо в исходном тексте (показана на видео).
Некоторые альтернативы: Instructor/Marvin/Outlines.
Use кейсы для вдохновления:
- Контракты на 100+ страниц - находит все суммы и сроки с точной ссылкой на цитату, можно легко интегрировать в UI "подсветку" фактов
- Медкарты с записями - извлекаем дозировки лекарств с гарантией и визуальным указанием источника
- Data Science стал еще доступнее: на вход тысячи не структурированный документов, на выход - CSV с нужными колонками и точными координатами откуда взял
- Извлекаете из корпоративной wiki, email, Slack: люди, проекты, технологии, их связи. Строим графы знаний - Profit!
Главное: LangExtract не просто надежно извлекает, но еще и доказывает откуда взял каждый факт.
Двигаемся еще ближе от "LLM как магический черный ящик" к "LLM как надежный production инструмент".
Блогпост | Репа
🔥➕🔁
Forwarded from Записки MLEшника
Спустя долгое время отсутствия приношу пост 👀
Наверняка вы когда-нибудь сталкивались с тем, что питонячий код/скрипт зависал во время выполнения. В такие моменты очень хочется знать, собственно, в каком месте это происходит...
Так вот это довольно легко сделать (по крайней мере на Linux) с помощью дебагера gdb
Делается так:
0. Сохраняем локально файл libpython.py. Это нужно, чтобы в gdb стек и код вокруг отображался "по-питонячему" (иначе это будет малопонятный C++).
- Для этого открываем CPython на гитхабе
- Переключаемся с main ветки на tag с версией питона, которым запущен зависший код
- Скачиваем файл libpython.py (например `wget https://raw.githubusercontent.com/python/cpython/refs/tags/v3.13.5/Tools/gdb/libpython.py`)
1. Подключаемся к зависшему питонячему процессу
sudo gdb -p 68653
2. Подключаем файл
source libpython.py
3. Выбираем нужный поток, если их несколько
info threads - показать все
thread 1 - выбрать первый
4. Смотрим стек
py-bt
5. Смотрим код вокруг
py-list
6. Смотрим переменные
py-locals
7. Двигаемся по стеку выше/ниже
py-up
py-down
Все команды можно посмотреть как раз в файле libpython.py, который мы скачивали на шаге 0
Один-два раз это упражнение делаешь - код болеть не будет! 💪
Наверняка вы когда-нибудь сталкивались с тем, что питонячий код/скрипт зависал во время выполнения. В такие моменты очень хочется знать, собственно, в каком месте это происходит...
Так вот это довольно легко сделать (по крайней мере на Linux) с помощью дебагера gdb
Делается так:
0. Сохраняем локально файл libpython.py. Это нужно, чтобы в gdb стек и код вокруг отображался "по-питонячему" (иначе это будет малопонятный C++).
- Для этого открываем CPython на гитхабе
- Переключаемся с main ветки на tag с версией питона, которым запущен зависший код
- Скачиваем файл libpython.py (например `wget https://raw.githubusercontent.com/python/cpython/refs/tags/v3.13.5/Tools/gdb/libpython.py`)
1. Подключаемся к зависшему питонячему процессу
sudo gdb -p 68653
2. Подключаем файл
source libpython.py
3. Выбираем нужный поток, если их несколько
info threads - показать все
thread 1 - выбрать первый
4. Смотрим стек
py-bt
5. Смотрим код вокруг
py-list
6. Смотрим переменные
py-locals
7. Двигаемся по стеку выше/ниже
py-up
py-down
Все команды можно посмотреть как раз в файле libpython.py, который мы скачивали на шаге 0
Один-два раз это упражнение делаешь - код болеть не будет! 💪