После прочтения статьи об InstructOR остаётся закономерный вопрос. А как всё это дело масштабировать? Ведь в самой статье написано, что нам нужны инструкции как к запросу так и к документу ответу (за исключением задач классификации). Никаких сил нашим дорогим, в прямом и переносном смысле, разметчикам не хватит- это же вопрос времени и средств. Дорого, долго.
Что же делать?
А теперь представьте. Мы будем использовать инструктора для улучшения инструктора ...
Прелюдия. У нас есть преднаписанные инструкции, а могут быть инструкции которые на самом деле лежат в истории поисковых запросов или даже внутри диалогов.
Например, в диалогах ассистента можно встретить: просьбу быть "помягче", или "может сменим тему"? Чем не инструкция?
Решение.
Поэтому берём обучаем ретривер, который выкидывает ответ,но по контексту диалога + задаче находит инструкцию. Далее уже кидаем инструкцию вместе с последней фразой диалога в GTR и ищем ответ. Вуаля. У нас контекстуальное общение. Почему контекстное? Да потому, что наша фраза инструкция выбрана ретривером в соответствии с контекстом и в рамках него же даёт команду/указание по тому, как нам вести диалог далее.
Можно естественно заменить систему retrieval на GPT, как все теперь любят. И у нас будет условный RAG инструктор. Можно наоборот заменить ретривер на маленькую GPT, которая будет брать промт/контекст и генерить инструкцию. Далее кормить её GTR и он будет лучше искать необходимые ответы/документы/информацию.
Всем спокойной ночи и пятницы развратницы.
Что же делать?
А теперь представьте. Мы будем использовать инструктора для улучшения инструктора ...
Прелюдия. У нас есть преднаписанные инструкции, а могут быть инструкции которые на самом деле лежат в истории поисковых запросов или даже внутри диалогов.
Например, в диалогах ассистента можно встретить: просьбу быть "помягче", или "может сменим тему"? Чем не инструкция?
Решение.
Поэтому берём обучаем ретривер, который выкидывает ответ,но по контексту диалога + задаче находит инструкцию. Далее уже кидаем инструкцию вместе с последней фразой диалога в GTR и ищем ответ. Вуаля. У нас контекстуальное общение. Почему контекстное? Да потому, что наша фраза инструкция выбрана ретривером в соответствии с контекстом и в рамках него же даёт команду/указание по тому, как нам вести диалог далее.
Можно естественно заменить систему retrieval на GPT, как все теперь любят. И у нас будет условный RAG инструктор. Можно наоборот заменить ретривер на маленькую GPT, которая будет брать промт/контекст и генерить инструкцию. Далее кормить её GTR и он будет лучше искать необходимые ответы/документы/информацию.
Всем спокойной ночи и пятницы развратницы.
👍5
Борьба за фактологическую достоверность или как взять GPT за RAGа.
Постом выше упомянул вскользь RAG, а на самом деле, хоть штука уже и старая (первые работы аж 2020-2021 гг.), но интересная. А сейчас вообще retrieval augmented generation получает свой ренессанс на фоне LLM, особенно ChatGPT. При этом последняя упомянутая ChatGPT всё ещё имеет проблемы с тем, что порой очень хорошо врёт. Ну просто красиво. Если Вы не эксперт её ответы, имея фактологическую ошибку, на первый взгляд и не вызовут у Вас сомнений в том, что всё достоверно. Поэтому ИМХО этот год будет не только гонкой LLM+RLHF (кстати этой концепции ещё больше лет , первые статьи аж 2017 г. ) , но и годом борьбы за "правду" в их генерациях.
Вот тут-то к нам и выходит на помощь RAG. В чем суть? Если в кратце, это подход при котором промт/запрос/инструкция прогоняется через зафриженый ретривер и получает в качестве доп. контекста выдачу из внешней базы документов, достоверность которой надежна (например системы QA/KGQA). Далее эта выдача конкатенируется с промтом и поступает в генератор. Наш декодер получая эту информацию на вход параллельно , что очень важно, выдаёт нам для каждой пары промт+документ распределения вероятности слов. А вот тут внимание! Далее самая красота. Для каждой пары мы имеем свои распределения и чтобы в итоге выдать кумулятивно итоговую вероятность генерации токена мы делаем финт. Используем старую добрую маргинализацию вероятностей. Да да, дядечка Байес с его теоремой и тут постарался!
Выглядит это до жути красиво:
Пусть у нас есть вероятность генерации P(Yi/x, z, Y1;i-1) , где Yi текущий токен кандидат при том, что x -промт, z- выдача ретривера, Y1;i-1 предыдущий контекст слов генерации (что уже сгенерировано на момент i). А P(z/x) у нас вероятность получить от ретривера на запрос x документ z. В таком случае обновлённая каждого токена вероятность P(yi/x) есть сумма P(z/x)*P(yi/x, z, y1;i-1) для всех z. Естественно далее берём argmax[P(yi/x)] и получаем уже перевзвешенный с учётом доп контекста ответ. Так для каждого этапа генерации. Авторы пишут, что это легко встраивается в beam search.
Всё понятно, кроме P(z/x). Откуда эти вероятности взять если у нас на выходе есть только эмбеддинги запроса и ответа ретривера? А тут к нам приходит на помощь любимый softmax от DotProd(embX, embZ).
Ещё хинт! При этом, оказывается, что для того чтобы мы могли учитывать перплексию в генераторе для улучшения ретривера включают e2e схему. Во время обучения мы размораживаем башню отвечающую за кодирование запроса, но не трогаем эмбеддер документа. Для этого используется не один общий енкодер (в их случае BERT-base), а берут bi-encoder схему на двух независимых. Такая схема позволяет не пересчитывать каждую итерацию обучения индекс документов и использовать условный FAISS и тп на лету.
В итоге мы получаем благодаря е2е схеме прокидывания градиентов в эмбеддинг запроса, что наш генератор корректирует положение эмбеддинга промта/запроса в пространстве поиска. Тем самым улучшая качество генерации и не трогая фактологию опорных документов.
По ссылке на HF в посте оч красивая гифка об этом всем процессе, как всегда лаконично и информативно (надеюсь удастся загрузить сюда). Ну и разумеется статья на arxiv.
Постом выше упомянул вскользь RAG, а на самом деле, хоть штука уже и старая (первые работы аж 2020-2021 гг.), но интересная. А сейчас вообще retrieval augmented generation получает свой ренессанс на фоне LLM, особенно ChatGPT. При этом последняя упомянутая ChatGPT всё ещё имеет проблемы с тем, что порой очень хорошо врёт. Ну просто красиво. Если Вы не эксперт её ответы, имея фактологическую ошибку, на первый взгляд и не вызовут у Вас сомнений в том, что всё достоверно. Поэтому ИМХО этот год будет не только гонкой LLM+RLHF (кстати этой концепции ещё больше лет , первые статьи аж 2017 г. ) , но и годом борьбы за "правду" в их генерациях.
Вот тут-то к нам и выходит на помощь RAG. В чем суть? Если в кратце, это подход при котором промт/запрос/инструкция прогоняется через зафриженый ретривер и получает в качестве доп. контекста выдачу из внешней базы документов, достоверность которой надежна (например системы QA/KGQA). Далее эта выдача конкатенируется с промтом и поступает в генератор. Наш декодер получая эту информацию на вход параллельно , что очень важно, выдаёт нам для каждой пары промт+документ распределения вероятности слов. А вот тут внимание! Далее самая красота. Для каждой пары мы имеем свои распределения и чтобы в итоге выдать кумулятивно итоговую вероятность генерации токена мы делаем финт. Используем старую добрую маргинализацию вероятностей. Да да, дядечка Байес с его теоремой и тут постарался!
Выглядит это до жути красиво:
Пусть у нас есть вероятность генерации P(Yi/x, z, Y1;i-1) , где Yi текущий токен кандидат при том, что x -промт, z- выдача ретривера, Y1;i-1 предыдущий контекст слов генерации (что уже сгенерировано на момент i). А P(z/x) у нас вероятность получить от ретривера на запрос x документ z. В таком случае обновлённая каждого токена вероятность P(yi/x) есть сумма P(z/x)*P(yi/x, z, y1;i-1) для всех z. Естественно далее берём argmax[P(yi/x)] и получаем уже перевзвешенный с учётом доп контекста ответ. Так для каждого этапа генерации. Авторы пишут, что это легко встраивается в beam search.
Всё понятно, кроме P(z/x). Откуда эти вероятности взять если у нас на выходе есть только эмбеддинги запроса и ответа ретривера? А тут к нам приходит на помощь любимый softmax от DotProd(embX, embZ).
Ещё хинт! При этом, оказывается, что для того чтобы мы могли учитывать перплексию в генераторе для улучшения ретривера включают e2e схему. Во время обучения мы размораживаем башню отвечающую за кодирование запроса, но не трогаем эмбеддер документа. Для этого используется не один общий енкодер (в их случае BERT-base), а берут bi-encoder схему на двух независимых. Такая схема позволяет не пересчитывать каждую итерацию обучения индекс документов и использовать условный FAISS и тп на лету.
В итоге мы получаем благодаря е2е схеме прокидывания градиентов в эмбеддинг запроса, что наш генератор корректирует положение эмбеддинга промта/запроса в пространстве поиска. Тем самым улучшая качество генерации и не трогая фактологию опорных документов.
По ссылке на HF в посте оч красивая гифка об этом всем процессе, как всегда лаконично и информативно (надеюсь удастся загрузить сюда). Ну и разумеется статья на arxiv.
huggingface.co
Retrieval Augmented Generation with Huggingface Transformers and Ray
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
🔥9
Forwarded from эйай ньюз
Откуда AI хайп и почему именно сейчас?
И немного баек от меня.
Я начал заниматься Deep Learning в 2015 году, когда переехал в Германию. Даже тогда, когда уже прошло 3 года после появления культовой архитектуры AlexNet, еще не все из научного мира купили идею нейронных сетей. В нашей научной группе CompVis (где зародился Stable Diffusion) проф был из тех, кто еще не полностью поверил в силу Deep Learning, и и поэтому первые 3-4 месяца я большую часть своего времени провел за работой с SVM (Support Vector Machine)
Но, с первых дней я понемногу начал поглядывать и на нейросети вместе со своими постдоком. TensorFlow тогда еще не было, а правил бал Caffe из Berkeley AI Research – ужасно неудобный фреймворк, где сеть нужно было определять в protobuf файле из набора заготовленных слоев. Ни о каком autograd и речи не шло. В 2016 на NeurIPS вышла моя статья CliqueCNN про self-supervised learning, и она была первой статьей по нейросетям из нашей научной группы.
В общем, я к тому, что Deep Learning с нами уже довольно давно (ну, или не так давно, смотря как посмотреть), и трансформеры, то на чем строятся все современные языковые модели, изобрели в далеком 2017 году, но дикий хайп пошел только в 2023. Я за хайпом никогда не шел, и когда начинал PhD, о нейросетях не кричала каждая собака в твиттере. В 2019 году мне показалось: “Ну, вот сейчас пик популярности AI и Deep Learning, смотри как StyleGAN завирусился”. Но это был мой пузырь, и высокая популярность нейросеток тогда была только внутри научного мира. Появилась куча AI программ и толпы студентов пошли изучать такие sexу предметы, как Machine Learning и Data Science. Это было только начало.
Ну а теперь, в 2023, я вообще в шоке от того, что происходит. Все как будто с цепи сорвались с этим ChatGPT и китайскими клонами. Мне за последние две недели 4 раза предлагали дать интервью в разные онлайн издания по поводу AI. Забавно наблюдать FOMO не только у людей, но и у крупных технологических компаний, которые готовы рисковать репутацией, лишь бы запрыгнуть в хайп-трейн. Самое смешное, так это то из-за чего этот хайп формируется. По сути технология за ChatGPT не является прорывной, никакой AGI изобретен не был. Все что произошло — так это, OpenAI смогли красиво обернуть свою модель (за это им стоит отдать должное) и дать потрогать ее массе обывателей, далеким от технологий. Вот тут люди, которые не понимают как это все работает, очнулись и иcпытали катарсис. Про AI стали говорить из каждого утюга, гуру учат зарабатывать с помощью ChatGPT, а VC закричали “возьмите наши бабки”. Ведь, то что ты не понимаешь тебе кажется магией, и для многих ChatGPT действительно выглядит как что-то из будущего. Да, инструмент оказался полезный, и уже может автоматизировать некоторую рутинную работу с текстом и кодом. Но магического там мало – линейная алгебра, бро. И до того как чат-боты перестанут нести пургу с уверенным лицом и действительно поймут, как устроен наш мир, пройдет еще несколько лет (предсказание сугубо оптимистическое и неконкретное).
Так что, друзья, давайте лучше будем разбираться в технологиях, а не бежать за хайпом. Для этого мы тут и собрались.
@ai_newz
И немного баек от меня.
Я начал заниматься Deep Learning в 2015 году, когда переехал в Германию. Даже тогда, когда уже прошло 3 года после появления культовой архитектуры AlexNet, еще не все из научного мира купили идею нейронных сетей. В нашей научной группе CompVis (где зародился Stable Diffusion) проф был из тех, кто еще не полностью поверил в силу Deep Learning, и и поэтому первые 3-4 месяца я большую часть своего времени провел за работой с SVM (Support Vector Machine)
Но, с первых дней я понемногу начал поглядывать и на нейросети вместе со своими постдоком. TensorFlow тогда еще не было, а правил бал Caffe из Berkeley AI Research – ужасно неудобный фреймворк, где сеть нужно было определять в protobuf файле из набора заготовленных слоев. Ни о каком autograd и речи не шло. В 2016 на NeurIPS вышла моя статья CliqueCNN про self-supervised learning, и она была первой статьей по нейросетям из нашей научной группы.
В общем, я к тому, что Deep Learning с нами уже довольно давно (ну, или не так давно, смотря как посмотреть), и трансформеры, то на чем строятся все современные языковые модели, изобрели в далеком 2017 году, но дикий хайп пошел только в 2023. Я за хайпом никогда не шел, и когда начинал PhD, о нейросетях не кричала каждая собака в твиттере. В 2019 году мне показалось: “Ну, вот сейчас пик популярности AI и Deep Learning, смотри как StyleGAN завирусился”. Но это был мой пузырь, и высокая популярность нейросеток тогда была только внутри научного мира. Появилась куча AI программ и толпы студентов пошли изучать такие sexу предметы, как Machine Learning и Data Science. Это было только начало.
Ну а теперь, в 2023, я вообще в шоке от того, что происходит. Все как будто с цепи сорвались с этим ChatGPT и китайскими клонами. Мне за последние две недели 4 раза предлагали дать интервью в разные онлайн издания по поводу AI. Забавно наблюдать FOMO не только у людей, но и у крупных технологических компаний, которые готовы рисковать репутацией, лишь бы запрыгнуть в хайп-трейн. Самое смешное, так это то из-за чего этот хайп формируется. По сути технология за ChatGPT не является прорывной, никакой AGI изобретен не был. Все что произошло — так это, OpenAI смогли красиво обернуть свою модель (за это им стоит отдать должное) и дать потрогать ее массе обывателей, далеким от технологий. Вот тут люди, которые не понимают как это все работает, очнулись и иcпытали катарсис. Про AI стали говорить из каждого утюга, гуру учат зарабатывать с помощью ChatGPT, а VC закричали “возьмите наши бабки”. Ведь, то что ты не понимаешь тебе кажется магией, и для многих ChatGPT действительно выглядит как что-то из будущего. Да, инструмент оказался полезный, и уже может автоматизировать некоторую рутинную работу с текстом и кодом. Но магического там мало – линейная алгебра, бро. И до того как чат-боты перестанут нести пургу с уверенным лицом и действительно поймут, как устроен наш мир, пройдет еще несколько лет (предсказание сугубо оптимистическое и неконкретное).
Так что, друзья, давайте лучше будем разбираться в технологиях, а не бежать за хайпом. Для этого мы тут и собрались.
@ai_newz
👍6
Раз уж AI всё ещё на хайпе;) У нас всё ещё есть возможность оседлать новую волну в NLP. Поэтому, если Вам интересна эта тема или Вы хотите к ней приобщиться, вот Вам воскресняя подборка выступлений моих хороших знакомых и меня конечно же.
1. Лекция о том, как строят при помощи NLP голосовых ассистентов: продуктовый, retrieval, generative подход.
2. Выступление на DataFest2022 NLP секция про KNN LM (кстати всё ещё очень актуальный подход). Часть 1, часть 2. Автор @seeyouall.
3. Наше последнее в 2022 году представление об современном retrieval и как в нём помогает RL-critic.
4. Рассказ об ChatGPT от AIRI @anvarki. Спасибо за приглашение, Анвар ;)
Всем продуктивного вечера)
1. Лекция о том, как строят при помощи NLP голосовых ассистентов: продуктовый, retrieval, generative подход.
2. Выступление на DataFest2022 NLP секция про KNN LM (кстати всё ещё очень актуальный подход). Часть 1, часть 2. Автор @seeyouall.
3. Наше последнее в 2022 году представление об современном retrieval и как в нём помогает RL-critic.
4. Рассказ об ChatGPT от AIRI @anvarki. Спасибо за приглашение, Анвар ;)
Всем продуктивного вечера)
YouTube
[ИТ-лекторий] «Собеседник: как болтают виртуальные ассистенты Салют»
Сотрудники Сбера рассказывают про автоматическую обработку естественного языка: какие бывают модели: какие и как используем мы; Retrieval, Generative, Scenario; как мы строим «характеры» наших собеседников; эмпатия виртуальных ассистентов; проактивность –…
👍8❤2
https://www.kommersant.ru/doc/5839931
Коллеги из SaluteDevices обучили нового лидера RussianSuperGLUE - FRED-T5
Выше только кожаные мешки ;)
По существу. Модель обучалась на 300гб. текста. Такого результата на бенчмарке RSG позволили достичь не только размер сета и время обучения, но и специальные хаки во время проведения экспериментов. Если верить концептуальному нововведению, модель была обучена не на стандартной MLM таске,а на подобии mixture of denoisers подхода в UL2. Это когда мы создаём коррапты в тексте и заставляем с помощью специальных механизмов их восстановить декодером. Об этом подробнее можно почитать на HF и в arxiv.
Поздравляем!
Коллеги из SaluteDevices обучили нового лидера RussianSuperGLUE - FRED-T5
Выше только кожаные мешки ;)
По существу. Модель обучалась на 300гб. текста. Такого результата на бенчмарке RSG позволили достичь не только размер сета и время обучения, но и специальные хаки во время проведения экспериментов. Если верить концептуальному нововведению, модель была обучена не на стандартной MLM таске,а на подобии mixture of denoisers подхода в UL2. Это когда мы создаём коррапты в тексте и заставляем с помощью специальных механизмов их восстановить декодером. Об этом подробнее можно почитать на HF и в arxiv.
Поздравляем!
Коммерсантъ
«Разрыв довольно стремительно сокращается»
Александр Леви — о FRED-T5
👍7👎1
В век больших моделей, когда не каждая домохозяйка может на своей микроволновке 3090 запустить нормально модный LLM для обучения или инференса, приходится прибегать к нескольким микроволновкам GPU. И тут на рынке, конечно, есть уже и deep speed и horovod. Однако хочется поддержать наших ребят из ШАД, которые сделали свою либу для работы с torch, HF в MultiGPU inference and training.
Поэтому выложу ссылочку сюда, а вы потестите, расскажите своё мнение и передадите дальше.
https://github.com/BlackSamorez/tensor_parallel
Поэтому выложу ссылочку сюда, а вы потестите, расскажите своё мнение и передадите дальше.
https://github.com/BlackSamorez/tensor_parallel
GitHub
GitHub - BlackSamorez/tensor_parallel: Automatically split your PyTorch models on multiple GPUs for training & inference
Automatically split your PyTorch models on multiple GPUs for training & inference - BlackSamorez/tensor_parallel
👍10👎1🤮1
RLHF-critic for efficient sentence embeddings.
В первом своëм разборе про InstructOR обещал рассказать об RL-critic подходе для улучшения retrieval диалоговой системы. В принципе, данный подход можно применять и в любых иных задачах, базирующихся на metric/contrastive learning. А теперь к делу.
Все уже наслышаны про RLHF подход, который якобы даёт улучшение в обучении ChatGPT. Вот и мне было интересно, насколько такой метод обучения/улучшения моделей может быть применим не генеративным моделям, а например классическим поисковым. Рассматривал, естественно свои задачи по ведению диалога.
Что сделал:
1.Взял условно надёжный сет разметки от нашей редакции с пометкой хороший/плохой (порядка 25тыс. диалогов).
2. Обучил на этом модель критика, которая по контексту и ответу определяет релевантность такого сетапа. Пока по-простому, взяв за метрику качества AUC.
3. Зафризил модельку критика и поставил её рядом с нашей core моделькой в е2е пайп обучения.
Напомню, что у нас multitasking.
4. Взял большой сет диалогов, которые были получены с логов, написаны редакцией, скрапингом, ru_open_subtitles и тп. Естественно без разметки на good/bad.
5. Далее врубил обучение на задаче поиска контексту (у нас это 6 реплик) релевантного ответа, путём решения задачи metric learning: сводим вектор контекста с ответами для существующих диалогов, разводим для случайных сэмплированных фраз.
При этом, тут мы и врубаем RL-critic. И самое сладкое как. Мы можем:
А. Использовать просто его как ранкер.
Б. Считать мат.ожидание на батче от relevance score критика, т.е. классик путь PPO.
В. Прокинуть скор в лосс напрямую.
Первый вариант, был бы ок на инференс. Второй , интересно, но нужно придумать PPO.
Третий вариант простой и с него-то и начнём. Идея состоит в том, чтобы докинуть в наш triplet_loss доп штраф за релевантность по мнению критика. Почему штраф? Да потому, что для хороших пар запрос контекст я хочу их подвигать к друг-другу ближе, а негативы отодвигать дальше. Тк у нас есть фикс margin, а теперь ещё и динамическая прибавка, мы получаем, что для каждого триплета у нас будет нечеткая граница от margin и выше. Так мы сможем ранжировать более лучшие позитивы ближе к контексту, а худшие дальше. Тем самым мы передаем свойства ранкинга между собой даже у релевантных ответов.
Лосс до:
max(0, sim(ctxt, resp_neg) -sim(ctxt, resp_pos) + margin)
После:
max(0, sim(ctxt, resp_neg) -sim(ctxt, resp_pos) + (rl_score+1)*margin)
Замеры качества ведём на recall@K. Кроме лосса в архитектуре модели и сэмплирования ничего не меняем.
Что в итоге?
На первой эпохе получаем сразу прирост: recall@10 до 0.127, после 0.393. На последующих gap уменьшается, но сохраняется в среднем разрыв на 6-8 процентных пунктов.
Что дальше?
Следом попробую провести эксперименты по чистому PPO. А пока буду наблюдать за метриками текущего эксперимента, писать свой PPO и держать Вас в курсе.
В первом своëм разборе про InstructOR обещал рассказать об RL-critic подходе для улучшения retrieval диалоговой системы. В принципе, данный подход можно применять и в любых иных задачах, базирующихся на metric/contrastive learning. А теперь к делу.
Все уже наслышаны про RLHF подход, который якобы даёт улучшение в обучении ChatGPT. Вот и мне было интересно, насколько такой метод обучения/улучшения моделей может быть применим не генеративным моделям, а например классическим поисковым. Рассматривал, естественно свои задачи по ведению диалога.
Что сделал:
1.Взял условно надёжный сет разметки от нашей редакции с пометкой хороший/плохой (порядка 25тыс. диалогов).
2. Обучил на этом модель критика, которая по контексту и ответу определяет релевантность такого сетапа. Пока по-простому, взяв за метрику качества AUC.
3. Зафризил модельку критика и поставил её рядом с нашей core моделькой в е2е пайп обучения.
Напомню, что у нас multitasking.
4. Взял большой сет диалогов, которые были получены с логов, написаны редакцией, скрапингом, ru_open_subtitles и тп. Естественно без разметки на good/bad.
5. Далее врубил обучение на задаче поиска контексту (у нас это 6 реплик) релевантного ответа, путём решения задачи metric learning: сводим вектор контекста с ответами для существующих диалогов, разводим для случайных сэмплированных фраз.
При этом, тут мы и врубаем RL-critic. И самое сладкое как. Мы можем:
А. Использовать просто его как ранкер.
Б. Считать мат.ожидание на батче от relevance score критика, т.е. классик путь PPO.
В. Прокинуть скор в лосс напрямую.
Первый вариант, был бы ок на инференс. Второй , интересно, но нужно придумать PPO.
Третий вариант простой и с него-то и начнём. Идея состоит в том, чтобы докинуть в наш triplet_loss доп штраф за релевантность по мнению критика. Почему штраф? Да потому, что для хороших пар запрос контекст я хочу их подвигать к друг-другу ближе, а негативы отодвигать дальше. Тк у нас есть фикс margin, а теперь ещё и динамическая прибавка, мы получаем, что для каждого триплета у нас будет нечеткая граница от margin и выше. Так мы сможем ранжировать более лучшие позитивы ближе к контексту, а худшие дальше. Тем самым мы передаем свойства ранкинга между собой даже у релевантных ответов.
Лосс до:
max(0, sim(ctxt, resp_neg) -sim(ctxt, resp_pos) + margin)
После:
max(0, sim(ctxt, resp_neg) -sim(ctxt, resp_pos) + (rl_score+1)*margin)
Замеры качества ведём на recall@K. Кроме лосса в архитектуре модели и сэмплирования ничего не меняем.
Что в итоге?
На первой эпохе получаем сразу прирост: recall@10 до 0.127, после 0.393. На последующих gap уменьшается, но сохраняется в среднем разрыв на 6-8 процентных пунктов.
Что дальше?
Следом попробую провести эксперименты по чистому PPO. А пока буду наблюдать за метриками текущего эксперимента, писать свой PPO и держать Вас в курсе.
👍9🔥4
Мои дорогие други открыли Yet another community для DS! Присоединяйтесь)
З. Ы. Ссылос ниже👇
З. Ы. Ссылос ниже👇
❤4
Forwarded from Love. Death. Transformers.
Я тут недавно зашел посмотреть насколько живой одс и сильно расстроился - он скорее мертв чем жив, а значит пора начинать делать что то свое. Мы с несколькими знакомыми решили стартануть better data community, своего рода флудилка - свалка по интересам для DSов и сочуствующих.
Инвайт:
https://t.me/+eB60Ru4Geqw4Mzky
Инвайт:
https://t.me/+eB60Ru4Geqw4Mzky
👍7❤6💩2
Классный пост от Ильи об хайпе вокруг современных LLM. В своих прошлых постах я говорил о контроле и достоверности, в данной статье есть и об этом тоже, но ещё и вопросы выч. ресурсов, скорости внедрения и много другое. Бегом читать! 👇😼
Forwarded from Love. Death. Transformers.
Тут Илья Гусев специально для @betterdatacommunity сделал пост про генеративный ai на хабр, г о д н о
habr
habr
Хабр
О «раздутом пузыре» нейросетей
На днях я наткнулся на одно любопытное видео: Моей первой реакцией было Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще? отрицание и...
💩4👍3🤔3
Вот и прошли выходные. Вести с полей. Держу в курсе по эксперименту с RL-critic. Видеокарта плавилась, пыхтела, как могла, но терпела и вот наконец-то сошлось. Итого у нас recall@k 0.82 . До было recall@K 0.8. При этом, старые эксперименты мы делали на horovod на 3-4 видеокарты. Тут эксперимент залез на сингл карту того же класса, да ещё и 2 модели критик и ретривал, мы имеем сходимость к той же метрике:
А. Быстрее.
Б. Меньше денег на обучение.
В общем, попробуйте - мой рекомендасьон. Ещё осталось конечно замерить всякие е2е метрики а-ля SSA/Respect и понять на сколько улучшилось прод поведение в разрезе: релевантность и специфичность, длина сессии и тп.
А. Быстрее.
Б. Меньше денег на обучение.
В общем, попробуйте - мой рекомендасьон. Ещё осталось конечно замерить всякие е2е метрики а-ля SSA/Respect и понять на сколько улучшилось прод поведение в разрезе: релевантность и специфичность, длина сессии и тп.
🔥9👍2
Ты че, пёс!? Это ж бл* гроккинг!!
https://github.com/Sea-Snell/grokking
Фото взято с https://t.me/rlabrats/3067
https://github.com/Sea-Snell/grokking
Фото взято с https://t.me/rlabrats/3067
😁16
Остаётся вопрос в тарифах на интеграцию с ChatGPT 🤔 👇
UPD.
А вот и прайсы.
"Price are 0.002$ per 1,000 tokens. You can think of tokens as pieces of words, where 1,000 tokens is about 750 words. This paragraph is 35 tokens."
UPD.
А вот и прайсы.
"Price are 0.002$ per 1,000 tokens. You can think of tokens as pieces of words, where 1,000 tokens is about 750 words. This paragraph is 35 tokens."
Forwarded from эйай ньюз
Как я уже упоминал, OpenAI пытается позиционировать себя как продавец API к своим жирным SOTA моделям, ведь продукта то у них никакого нет.
Так вот сегодня они наконец открыли публичный API к своим ChatGPT и Whisper (распознавалка речи). Конечно, это не бесплатно. Но теперь любой может встроить AI-бота в свое приложение без усилий.
Одним из первых подсуетился Snap и уже запилил AI-друга для всех скучающих в Снэпчате. С ним можно поболтать, когда чувствуешь себя одиноко. Видимо с живыми пользователями в Снэпчате не очень 🌚
Так вот сегодня они наконец открыли публичный API к своим ChatGPT и Whisper (распознавалка речи). Конечно, это не бесплатно. Но теперь любой может встроить AI-бота в свое приложение без усилий.
Одним из первых подсуетился Snap и уже запилил AI-друга для всех скучающих в Снэпчате. С ним можно поболтать, когда чувствуешь себя одиноко. Видимо с живыми пользователями в Снэпчате не очень 🌚
Telegram
эйай ньюз
🔥OpenAI выпустили новую улучшенную Text Embedding Model: text-embedding-ada-002
1. Во первых, эта модель объединяет в себе возможности 5 старых моделей. Умеет искать текст, код, вычислять похожесть предложений и классифицировать текст:
✔️ text-similarity…
1. Во первых, эта модель объединяет в себе возможности 5 старых моделей. Умеет искать текст, код, вычислять похожесть предложений и классифицировать текст:
✔️ text-similarity…
❤7
RETRO больше не нужен! Говорят ,теперь можно делать мультимодальные инъекции прямо в generative модель.
А действительно, теперь в HF transformers появилась возможность вставлять эмбеды вашей любимой энкодер модели из любой модальности, без регистрации, кросс-энкодеров RETRO-style и смс. Но хорошо бы с дотюном.
Ух... Заживём!!!
За источники спасибо: @AlexWortega, @razzant
А действительно, теперь в HF transformers появилась возможность вставлять эмбеды вашей любимой энкодер модели из любой модальности, без регистрации, кросс-энкодеров RETRO-style и смс. Но хорошо бы с дотюном.
Ух... Заживём!!!
За источники спасибо: @AlexWortega, @razzant
Google DeepMind
Artificial intelligence could be one of humanity’s most useful inventions. We research and build safe artificial intelligence systems. We're committed to solving intelligence, to advance science...
👍5
Что делать с длинными текстами, если не хочешь заводить свой longformer и тп.? Лайфхак.
За появление идеи и мысли об этом спасибо @DmitrySimakov.
Итак, мы как-то в своём докладе, рассказывали о том, как делаем эмбеддинги диалога. По-простому, мы берём кидаем наш контекст длинною К последних реплик (у нас память равна 6) в sentence transformer. Получаем К векторов фраз диалога. Далее их кормим в классик трансформер, который, по-своему, attentive перевзвешивает наши вектора диалога с учётом важности их для последующего вектора ответа. Далее берём в качестве эмбеддинга диалога последний sentence-token вектор. Почему его? Да потому, что в нём лежит информация о последней фразе перед ответом, attentive взвешенная относительно всех предыдущих фраз. Во-первых она помнит текущее состояние, во-вторых всю предыдущую историю контекста. Да, мы пытались брать просто mean-pool по выходам классик трансформера, но это драматически крашило метрики поиска релевантного ответа.
В общем, к чему это я. А теперь представьте, что мы нарезаем наш длинный (больше max seq len) запрос/текст. На такие вот фразы контекста, без перекрытия, просто окном. Далее кормим это по такой же схеме sbert, а затем классик трансформеру. Пусть он сам разберётся, что из этого длинного контекста ему важно, ну а далее подаëм это добро уже в наш MLP или что там у Вас. У нас там, например, мои любимые contrastive штуки;)
Итак, схема ниже. У нас работает, попробуйте и Вы. И дайте знать как оно? А то у меня столько экспериментов в плане, что до этого ещё не скоро доползу...
За появление идеи и мысли об этом спасибо @DmitrySimakov.
Итак, мы как-то в своём докладе, рассказывали о том, как делаем эмбеддинги диалога. По-простому, мы берём кидаем наш контекст длинною К последних реплик (у нас память равна 6) в sentence transformer. Получаем К векторов фраз диалога. Далее их кормим в классик трансформер, который, по-своему, attentive перевзвешивает наши вектора диалога с учётом важности их для последующего вектора ответа. Далее берём в качестве эмбеддинга диалога последний sentence-token вектор. Почему его? Да потому, что в нём лежит информация о последней фразе перед ответом, attentive взвешенная относительно всех предыдущих фраз. Во-первых она помнит текущее состояние, во-вторых всю предыдущую историю контекста. Да, мы пытались брать просто mean-pool по выходам классик трансформера, но это драматически крашило метрики поиска релевантного ответа.
В общем, к чему это я. А теперь представьте, что мы нарезаем наш длинный (больше max seq len) запрос/текст. На такие вот фразы контекста, без перекрытия, просто окном. Далее кормим это по такой же схеме sbert, а затем классик трансформеру. Пусть он сам разберётся, что из этого длинного контекста ему важно, ну а далее подаëм это добро уже в наш MLP или что там у Вас. У нас там, например, мои любимые contrastive штуки;)
Итак, схема ниже. У нас работает, попробуйте и Вы. И дайте знать как оно? А то у меня столько экспериментов в плане, что до этого ещё не скоро доползу...
YouTube
Александр Абрамов | Современные методы обучения Retrieval Based моделей для ведения диалогов
Страница трека : https://ods.ai/tracks/nlp-df2022
Data Fest Online 3 : https://ods.ai/events/datafestonline2022
Наши соц.сети:
Telegram: https://t.me/datafest
Вконтакте: https://vk.com/datafest
Data Fest Online 3 : https://ods.ai/events/datafestonline2022
Наши соц.сети:
Telegram: https://t.me/datafest
Вконтакте: https://vk.com/datafest
🔥12❤1