Forwarded from Всеволод Викулин | AI разбор
Продолжаем серию о создании надежных LLM-продуктов. Сегодня наконец говорим про метрики качества.
Тема 7. Оцениваем качество LLM
Зачем нам нужно оценивать качество? Не для того, чтобы запустить самый модный алгоритм Reinforcement Learning. Не для того, чтобы запихнуть ошибки в промпт, слезно просив LLM больше так не делать. И даже не для слайдов в презентации.
Хорошие метрики качества == быстрые итерации. В ИИ-разработке, как и в обычной продуктовой разработке, успех зависит от того, как быстро вы умеете итерироваться. В разработке есть тестирование. А у нас есть метрики качества.
Понятно, что вас скорее всего волнуют пользовательские онлайн метрики. Желательно, деньги. Ну или retention пользователей. К сожалению, их долго мерить. Для быстрых итераций нам нужны оффлайн метрики качества, которые как-то аппроксимируют ваш целевой онлайн. Мы верим, что улучшая оффлайн метрики, в итоге наши пользователи будут нам благодарны.
Почему LLM сложно оценивать?
В ИИ есть 3 класса задач. В них по-разному делаются метрики качества.
1) Задачи, в которых есть точный ответ.
Тогда все ваши метрики качества это сравнение ответа модели с эталоном. Например, классификация, где вы сравниваете с правильным классом. Сравнивать можно не обязательно точным совпадением с эталоном. Можно, например, текстовыми метриками (BLEU, WER) или пускай сравнивает отдельная модель, например BERT (bert_score). В этом классе обычно проблем нет.
2) Задачи, в которых ответ можно проверить.
Ну тогда возьмите и проверьте :) Это, в первую очередь, код, который можно прогнать на тестах. Это математика, в которой можно проверить формальное доказательство. В этом классе раньше были проблемы, сейчас современный RL тут всех унижает. Посмотрите сколько компаний выигрывают одну и ту же олимпиаду по математике. Я уже сбился со счета.
3) Задачи, в которых правильный ответ хрен пойми какой.
С этим обычно самые трудности (интересно, блин, почему?)
Делаем RAG-ассистента, человек задает вопрос, мы что-то ответили. Ответить можно миллионом способов, верифицировать нельзя. Здесь обычно делают так:
а) Вырабатывают продуктовые критерии "а что такое хороший ответ"? Наш RAG-ответ должен быть релевантный, достоверный, актуальный.... Записывают эти критерии в виде инструкции.
б) Учат кого-то размечать ответы по этим критерии. Кого можно учить?
Размечаем людьми
Кто-то называет их ИИ-тренерами или асессорами. Популярно объясняете им ваши продуктовые критерии. Это объяснение может быть немного длинным: посмотрите пример 180-страничной инструкции оценки качества поиска Гугла. Дальше показываете им (запрос, ответ) и пускай пробуют разметить.
Важно: контроль качественной разметки это сложная операционная задача. Кто-то может халтурить, читерить, забывать правила. Вам нужно будет отвечать на их вопросы, проводить экзамены, находить плохих разметчиков. И так постоянно.
LLM-as-a-judge
У нас нет денег/времени работать с людьми. Делаем LLM, которая оценивает ответы другой LLM. Критиковать чужой труд всегда проще :)
Обычно делается в несколько этапов
1) Собираем датасет правильных оценок. Это когда у разных ответов LLM проставлены метки: релевантный ли там ответ, достоверный ли ответ и тд. Здесь важно получить не очень большой, (можно 100 примеров) но чистый набор данных.
2) Записываем все наши продуктовые критерии в виде промпта. Он может быть очень длинным, нестрашно.
3) Итеративно меняем модель, промпт, метод генерации и тд, чтобы сделать максимальную точность на датасете 1) Обычно используют максимально большие рассуждающие модели.
Для несложных разметок завести LLM-as-a-judge обычно получается. Для чего-то супер сложного/экспертного, лучше обращаться за помощью к людям.
Литература для обязательного изучения
- Подробный гайд методи оценки качества в LLM
- Наглядная статья с примерами кода для LLM-as-a-judge
- Туториал, как делать LLM-as-a-judge
Правильные метрики — залог вашей счастливой и активной LLM-разработки. Отнеситесь очень внимательно. А если в чем-то сомневаетесь — пишите в комментарии или в личные сообщения @seva_batareika
#llm_system_design
Тема 7. Оцениваем качество LLM
Зачем нам нужно оценивать качество? Не для того, чтобы запустить самый модный алгоритм Reinforcement Learning. Не для того, чтобы запихнуть ошибки в промпт, слезно просив LLM больше так не делать. И даже не для слайдов в презентации.
Хорошие метрики качества == быстрые итерации. В ИИ-разработке, как и в обычной продуктовой разработке, успех зависит от того, как быстро вы умеете итерироваться. В разработке есть тестирование. А у нас есть метрики качества.
Понятно, что вас скорее всего волнуют пользовательские онлайн метрики. Желательно, деньги. Ну или retention пользователей. К сожалению, их долго мерить. Для быстрых итераций нам нужны оффлайн метрики качества, которые как-то аппроксимируют ваш целевой онлайн. Мы верим, что улучшая оффлайн метрики, в итоге наши пользователи будут нам благодарны.
Почему LLM сложно оценивать?
В ИИ есть 3 класса задач. В них по-разному делаются метрики качества.
1) Задачи, в которых есть точный ответ.
Тогда все ваши метрики качества это сравнение ответа модели с эталоном. Например, классификация, где вы сравниваете с правильным классом. Сравнивать можно не обязательно точным совпадением с эталоном. Можно, например, текстовыми метриками (BLEU, WER) или пускай сравнивает отдельная модель, например BERT (bert_score). В этом классе обычно проблем нет.
2) Задачи, в которых ответ можно проверить.
Ну тогда возьмите и проверьте :) Это, в первую очередь, код, который можно прогнать на тестах. Это математика, в которой можно проверить формальное доказательство. В этом классе раньше были проблемы, сейчас современный RL тут всех унижает. Посмотрите сколько компаний выигрывают одну и ту же олимпиаду по математике. Я уже сбился со счета.
3) Задачи, в которых правильный ответ хрен пойми какой.
С этим обычно самые трудности (интересно, блин, почему?)
Делаем RAG-ассистента, человек задает вопрос, мы что-то ответили. Ответить можно миллионом способов, верифицировать нельзя. Здесь обычно делают так:
а) Вырабатывают продуктовые критерии "а что такое хороший ответ"? Наш RAG-ответ должен быть релевантный, достоверный, актуальный.... Записывают эти критерии в виде инструкции.
б) Учат кого-то размечать ответы по этим критерии. Кого можно учить?
Размечаем людьми
Кто-то называет их ИИ-тренерами или асессорами. Популярно объясняете им ваши продуктовые критерии. Это объяснение может быть немного длинным: посмотрите пример 180-страничной инструкции оценки качества поиска Гугла. Дальше показываете им (запрос, ответ) и пускай пробуют разметить.
Важно: контроль качественной разметки это сложная операционная задача. Кто-то может халтурить, читерить, забывать правила. Вам нужно будет отвечать на их вопросы, проводить экзамены, находить плохих разметчиков. И так постоянно.
LLM-as-a-judge
У нас нет денег/времени работать с людьми. Делаем LLM, которая оценивает ответы другой LLM. Критиковать чужой труд всегда проще :)
Обычно делается в несколько этапов
1) Собираем датасет правильных оценок. Это когда у разных ответов LLM проставлены метки: релевантный ли там ответ, достоверный ли ответ и тд. Здесь важно получить не очень большой, (можно 100 примеров) но чистый набор данных.
2) Записываем все наши продуктовые критерии в виде промпта. Он может быть очень длинным, нестрашно.
3) Итеративно меняем модель, промпт, метод генерации и тд, чтобы сделать максимальную точность на датасете 1) Обычно используют максимально большие рассуждающие модели.
Для несложных разметок завести LLM-as-a-judge обычно получается. Для чего-то супер сложного/экспертного, лучше обращаться за помощью к людям.
Литература для обязательного изучения
- Подробный гайд методи оценки качества в LLM
- Наглядная статья с примерами кода для LLM-as-a-judge
- Туториал, как делать LLM-as-a-judge
Правильные метрики — залог вашей счастливой и активной LLM-разработки. Отнеситесь очень внимательно. А если в чем-то сомневаетесь — пишите в комментарии или в личные сообщения @seva_batareika
#llm_system_design
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 или как модели красиво врут о своих размышлениях…