Forwarded from ML for Value / Ваня Максимов (Ivan Maksimov)
3 всадника рекомендательного апокалипсиса
Сделать персональные рекомендации легко, но почти все системы настигают 3 проблемы
1. Оффлайн метрики, а не онлайн
Можно бесконечно долго оптимизировать ML-метрики типа recall@k, а в результате получить, например рекомендации очень релевантных пакетов или выдачу из одних утюгов
Далеко не всегда оффлайн метрики хорошо коррелируют с деньгами (онлайн): нужно очень хорошо постараться, чтобы найти связь
2. Каннибализация
Доля заказов из рекомендаций 60% - какие мы молодцы!
Нет)) Мы могли просто каннибализировать тот же поиск.
Могло стать даже хуже: каннибализировали поиск, где конверсия выше
На практике эффект ~1 к 10. То есть доля заказов из рек 60% - реальный прирост заказов vs без рек = 6%
Возможно для кликов/заказов из рек надо совершать меньше действий (скролл vs подумать над запросом, написать его, выставить фильтры). Но если юзер знает, что ищет (айфон 14 pro max), то он и без рек его найдет - поэтому в реках важно diversity, surprise
Вообще хорошо бы подумать, как сделать реки НЕ похожими на результаты поиска. YouTube например, убирает из данных для модели последний поисковой запрос даже!
3. Конверсия, а не деньги
Все мы любим оптимизировать конверсию: это понятно и не так сложно. Но реальный мир суров: можно вырастить конверсию и уронить средний чек - в итоге упадет выручка. А можно, например, рекомендовать супер релевантные товары, которые поедут из Южной Америки - и потерять деньги на логистике. В общем, деньги имеют значение 💰
Сделать персональные рекомендации легко, но почти все системы настигают 3 проблемы
1. Оффлайн метрики, а не онлайн
Можно бесконечно долго оптимизировать ML-метрики типа recall@k, а в результате получить, например рекомендации очень релевантных пакетов или выдачу из одних утюгов
Далеко не всегда оффлайн метрики хорошо коррелируют с деньгами (онлайн): нужно очень хорошо постараться, чтобы найти связь
2. Каннибализация
Доля заказов из рекомендаций 60% - какие мы молодцы!
Нет)) Мы могли просто каннибализировать тот же поиск.
Могло стать даже хуже: каннибализировали поиск, где конверсия выше
На практике эффект ~1 к 10. То есть доля заказов из рек 60% - реальный прирост заказов vs без рек = 6%
Возможно для кликов/заказов из рек надо совершать меньше действий (скролл vs подумать над запросом, написать его, выставить фильтры). Но если юзер знает, что ищет (айфон 14 pro max), то он и без рек его найдет - поэтому в реках важно diversity, surprise
Вообще хорошо бы подумать, как сделать реки НЕ похожими на результаты поиска. YouTube например, убирает из данных для модели последний поисковой запрос даже!
3. Конверсия, а не деньги
Все мы любим оптимизировать конверсию: это понятно и не так сложно. Но реальный мир суров: можно вырастить конверсию и уронить средний чек - в итоге упадет выручка. А можно, например, рекомендовать супер релевантные товары, которые поедут из Южной Америки - и потерять деньги на логистике. В общем, деньги имеют значение 💰
🔥20❤3
ML for Value / Ваня Максимов
3 всадника рекомендательного апокалипсиса Сделать персональные рекомендации легко, но почти все системы настигают 3 проблемы 1. Оффлайн метрики, а не онлайн Можно бесконечно долго оптимизировать ML-метрики типа recall@k, а в результате получить, например…
очень полезно это перевернуть и для retrieval имхо
👍6
Найди правильный SPIN к своему электрону LLM.
Новый метод self-play fine-tuning напомнил мне, как учили когда-то в AlphaZero. Кстати, тоже в режиме self-play.
Концептуально, метод заключается в итеративном обучении модели LLM с использованием ее предыдущей лучшей версии. Начинается обучение, конечно же , с простого SFT, тк нужна опорная модель. Далее уже генерации предыдущей модели, совместно и на кейсах аннотированных с человеком (RLHF) используются для улучшения политики поведения наследника LLM. Задача модели не только тюниться на таких примерах, но и различать генерации предка от реальных аннотаций - привет GAN и ELECTRA like подходы.
А именно, LLM генерирует свои собственные обучающие данные из своих предыдущих итераций и детектирует ответы, полученные по промтам из RLHF vs ответы из самогенерации.
Для оценки качества, авторы приводят замеры на: HuggingFace Open LLM, MT-Bench и наборе данных Big-Bench. Также проводят паралель с методом DPO и показывают up метрик по сравнению с ним. В основе экспов лежит модель zephyr-7b. Сравниваются с ней же в разных сетапах sft с spin/dpo и без. Абляции в статье приложены.
SPIN мне очень напоминает также curiculum learning - тк итеративно мы усложняем разницу между LLM генерациями предка и RLHF based генерациями на основе людских предпочтений, тк self-генерация с каждым шагом становится все более естественной, а модель сильной.
Также авторы выделяют меньшую зависимость от масштабирования объема данных и внешних источников для обучения, тк модель строит обучение итеративно на опорном датасете и self-generating.
Итого выложили статью, код, данные и модели.
Го пробовать!
Новый метод self-play fine-tuning напомнил мне, как учили когда-то в AlphaZero. Кстати, тоже в режиме self-play.
Концептуально, метод заключается в итеративном обучении модели LLM с использованием ее предыдущей лучшей версии. Начинается обучение, конечно же , с простого SFT, тк нужна опорная модель. Далее уже генерации предыдущей модели, совместно и на кейсах аннотированных с человеком (RLHF) используются для улучшения политики поведения наследника LLM. Задача модели не только тюниться на таких примерах, но и различать генерации предка от реальных аннотаций - привет GAN и ELECTRA like подходы.
А именно, LLM генерирует свои собственные обучающие данные из своих предыдущих итераций и детектирует ответы, полученные по промтам из RLHF vs ответы из самогенерации.
Для оценки качества, авторы приводят замеры на: HuggingFace Open LLM, MT-Bench и наборе данных Big-Bench. Также проводят паралель с методом DPO и показывают up метрик по сравнению с ним. В основе экспов лежит модель zephyr-7b. Сравниваются с ней же в разных сетапах sft с spin/dpo и без. Абляции в статье приложены.
SPIN мне очень напоминает также curiculum learning - тк итеративно мы усложняем разницу между LLM генерациями предка и RLHF based генерациями на основе людских предпочтений, тк self-генерация с каждым шагом становится все более естественной, а модель сильной.
Также авторы выделяют меньшую зависимость от масштабирования объема данных и внешних источников для обучения, тк модель строит обучение итеративно на опорном датасете и self-generating.
Итого выложили статью, код, данные и модели.
Го пробовать!
👍8❤1
Forwarded from КПД
QuIP#: Even Better LLM Quantization with Hadamard Incoherence and Lattice Codebooks
[Статья][Код]
Только-только мы с коллегами выкатили AQLM , как конкуренты нанесли ответный удар)
LLM-ки становятся все круче, новые модели, датасеты с инструкциями выходят почти на ежедневной основе. Однако, самые сильные из опенсорсных моделей (Llama-2-70b с дохреналлионом файтьюнов, Микстраль и загадочное нечто под названием miqu) не влезают в колаб или условную RTX 3090/4090. Квантизация в 4 бита (до недавних пор бывшая Парето-оптимальная) недостаточна, чтобы позволить уместиться такой здоровенной модели на щупленькую видеокарту, а предыдущие методы квантизации в 2-3 бита ломают заметно модель и проще взять меньшую модель в большей точности. Но свежие работы открывают дорогу к инференсу оверсайзд моделей на хорошей геймерской GPU.
Метод
Quip# (решетка, потому что E8 решетка квантования) стоит на трех 🐳 :
1️⃣ Incoherence processing
2️⃣ E8 решеточная векторная квантизация
3️⃣ Дообучение неквантованных параметров
1) Как известно, веса больших языковых моделей обладают выбросами (outliers), плохо поддающимися квантованию, и в ряде прошлых работ было предложено их тем или иным образом изолировать. Здесь же, следуя своей прошлой работе QuIP авторы домножают веса на случайное ортогональное преобразование, благодаря которому величины и чувствительности параметров растекаются равномерно по матрице (incoherence processing). Отличие от прошлой работы в том, что вместо произведения кронекеровских матриц для параметризации ортогонального преобразования используется случайное Адамарово преобразование, более эффективное вычислительно и не уступающее по качеству.
2) Поэлементная квантизация не совсем оптимальна в том смысле, что оптимизирует ошибку в пределах некоторого гиперкуба (если рассматривать группы весов). А в действительности группы весов распределены в некотором шаре. А объем шара того же диаметра, что и сторона куба, в большой размерности много меньше описанного вокруг него куба. И при том же количестве кластеров (квантованных значений), можно добиться значительно меньшей ошибки. Для используемой в работе квантизации группами по 8 весов оптимальная решетка - E8, как было показано сравнительно недавно.
3) Чтобы уменьшить ошибку квантизации, можно потюнить модель воспроизводить выходы слоев исходной модели. Как и в AQLM авторы сначала дообучают неквантованные модели на уровне отдельных блоков трансформера. А на второй стадии обучают уже все неквантованные параметры на минизацию разницы между сжатой моделью и исходной fp16.
Для больших битностей (3-4 бита) используется Residual Vector Quantization, когда ошибка квантизации еще раз квантуется и конечный вес представляется в виде суммы квантованного веса и квантованной ошибки.
[Статья][Код]
Только-только мы с коллегами выкатили AQLM , как конкуренты нанесли ответный удар)
LLM-ки становятся все круче, новые модели, датасеты с инструкциями выходят почти на ежедневной основе. Однако, самые сильные из опенсорсных моделей (Llama-2-70b с дохреналлионом файтьюнов, Микстраль и загадочное нечто под названием miqu) не влезают в колаб или условную RTX 3090/4090. Квантизация в 4 бита (до недавних пор бывшая Парето-оптимальная) недостаточна, чтобы позволить уместиться такой здоровенной модели на щупленькую видеокарту, а предыдущие методы квантизации в 2-3 бита ломают заметно модель и проще взять меньшую модель в большей точности. Но свежие работы открывают дорогу к инференсу оверсайзд моделей на хорошей геймерской GPU.
Метод
Quip# (решетка, потому что E8 решетка квантования) стоит на трех 🐳 :
1️⃣ Incoherence processing
2️⃣ E8 решеточная векторная квантизация
3️⃣ Дообучение неквантованных параметров
1) Как известно, веса больших языковых моделей обладают выбросами (outliers), плохо поддающимися квантованию, и в ряде прошлых работ было предложено их тем или иным образом изолировать. Здесь же, следуя своей прошлой работе QuIP авторы домножают веса на случайное ортогональное преобразование, благодаря которому величины и чувствительности параметров растекаются равномерно по матрице (incoherence processing). Отличие от прошлой работы в том, что вместо произведения кронекеровских матриц для параметризации ортогонального преобразования используется случайное Адамарово преобразование, более эффективное вычислительно и не уступающее по качеству.
2) Поэлементная квантизация не совсем оптимальна в том смысле, что оптимизирует ошибку в пределах некоторого гиперкуба (если рассматривать группы весов). А в действительности группы весов распределены в некотором шаре. А объем шара того же диаметра, что и сторона куба, в большой размерности много меньше описанного вокруг него куба. И при том же количестве кластеров (квантованных значений), можно добиться значительно меньшей ошибки. Для используемой в работе квантизации группами по 8 весов оптимальная решетка - E8, как было показано сравнительно недавно.
3) Чтобы уменьшить ошибку квантизации, можно потюнить модель воспроизводить выходы слоев исходной модели. Как и в AQLM авторы сначала дообучают неквантованные модели на уровне отдельных блоков трансформера. А на второй стадии обучают уже все неквантованные параметры на минизацию разницы между сжатой моделью и исходной fp16.
Для больших битностей (3-4 бита) используется Residual Vector Quantization, когда ошибка квантизации еще раз квантуется и конечный вес представляется в виде суммы квантованного веса и квантованной ошибки.
👍8🔥1
Dealer.AI
Когда-то я был волонтёром на Параолимпийских играх, а также в центре поддержки людей с неограниченными возможностями (я так считаю) и мне всегда были приятны социально-значимые проекты в ML и вот это один из них. Поздравляю команду РЖЯ 🎉🎊 https://xn--r1a.website/rndcv_team/55…
Хабр
Распознавание и перевод жестовых языков: обзор подходов
Введение Всем привет! В статье « Slovo и русский жестовый язык » мы рассказывали, как решаем задачу распознавания изолированных жестов, в статье « Русский жестовый язык: первое место в американском...
👍5
Forwarded from (sci)Berloga Всех Наук и Технологий
🚀 @SBERLOGABIO:
👨🔬 А.Вахрушев, С.Фиронов, А.Червов "Предсказание свойств белков - топ2 в CAFA5"
⌚️ Четверг 15 Февраля 19.00 (по Москве)
Как известно, Альфафолд от Гугл Дипмайнд совершил прорыв в биологии , сумев решить задачу , которая 50 лет не поддавалась решению - предсказание пространственной структуры белка по последовательности аминокислот, выиграв конкурс CASP15. Наша команда почти как Дипмайнд 😃 . Мы почти выиграли схожий конкурс - CAFA5 - заняв второе место и опередив 1500+ других команд.
Задача CAFA ( Critical Assessment of Function Annotation ) - предсказать функции и локализации белков, используя последовательность аминокислот белка - как основную входную информацию. Наиболее полная информация о функциях/локализации белков собрана в базе Gene Ontology , которая содержит около 40 000 всевозможных характеристик белка, которые организованы в иерархическую структуру. Охватываются белки всего - от вирусов до эукариот. Тем самым результат работы модели - для каждого белка должны выдаваться 40 000 нулей или единиц - есть данное свойство у данного белка или нет.
Решение
Идея 1. Использование инновационного градиентного бустинга Pyboost разработанного лидером команды А. Вахрушевым. При наличии тысяч таргетов другие бустинги будут работать в сотни раз медленней чем Pyboost, и часто уступят ему по качеству.
Идея 2. Использование современных "protein language models". Поразительные способности ChatGPT известны всем. Актуальный подход к изучению свойств белковых последовательностей - состоит в переносе мощных моделей идейно (но не буквально) схожих с ChatGPT в биоинформатику. В данном конкурсе наиболее хорошо себя показала модель типа "T5" (Text-To-Text Transfer Transformer). Мы использовали "эмбединги", которые данные модели создают из белков. И далее обучали бустинги и нейросети на этих эмбедингах.
И еще множество других идей (см. write-up).
Zoom link will be in @sberlogabig just before start
👨🔬 А.Вахрушев, С.Фиронов, А.Червов "Предсказание свойств белков - топ2 в CAFA5"
⌚️ Четверг 15 Февраля 19.00 (по Москве)
Как известно, Альфафолд от Гугл Дипмайнд совершил прорыв в биологии , сумев решить задачу , которая 50 лет не поддавалась решению - предсказание пространственной структуры белка по последовательности аминокислот, выиграв конкурс CASP15. Наша команда почти как Дипмайнд 😃 . Мы почти выиграли схожий конкурс - CAFA5 - заняв второе место и опередив 1500+ других команд.
Задача CAFA ( Critical Assessment of Function Annotation ) - предсказать функции и локализации белков, используя последовательность аминокислот белка - как основную входную информацию. Наиболее полная информация о функциях/локализации белков собрана в базе Gene Ontology , которая содержит около 40 000 всевозможных характеристик белка, которые организованы в иерархическую структуру. Охватываются белки всего - от вирусов до эукариот. Тем самым результат работы модели - для каждого белка должны выдаваться 40 000 нулей или единиц - есть данное свойство у данного белка или нет.
Решение
Идея 1. Использование инновационного градиентного бустинга Pyboost разработанного лидером команды А. Вахрушевым. При наличии тысяч таргетов другие бустинги будут работать в сотни раз медленней чем Pyboost, и часто уступят ему по качеству.
Идея 2. Использование современных "protein language models". Поразительные способности ChatGPT известны всем. Актуальный подход к изучению свойств белковых последовательностей - состоит в переносе мощных моделей идейно (но не буквально) схожих с ChatGPT в биоинформатику. В данном конкурсе наиболее хорошо себя показала модель типа "T5" (Text-To-Text Transfer Transformer). Мы использовали "эмбединги", которые данные модели создают из белков. И далее обучали бустинги и нейросети на этих эмбедингах.
И еще множество других идей (см. write-up).
Zoom link will be in @sberlogabig just before start
🔥13👨💻2🆒1
Forwarded from Нейромаргиналы 18+
Дорогие друзья и товарищи нейронщики в своих нейронных чатах и сообществах (а также те, кто не имеет отношения к нейронкам, но к кому это случайно прилетело). Поздравляю вас всех с днем расстрела Чикатило! Ой! То есть с днем Святого Валентина!
Желаю вам всем большой крепкой нежной страстной и сильной любви, как у этой милой парочки эльфов!
Желаю вам всем большой крепкой нежной страстной и сильной любви, как у этой милой парочки эльфов!
❤10