Старший Авгур
4.22K subscribers
171 photos
1 video
1 file
170 links
Сохраненки и шитпост про ML от @YallenGusev
Download Telegram
Компиляция нескольких постов про то, что читать про ML/NLP/LLM:

Обучающие материалы 🗒
- https://habr.com/ru/articles/774844/
- https://lena-voita.github.io/nlp_course.html
- https://web.stanford.edu/~jurafsky/slp3/ed3book.pdf
- https://www.youtube.com/watch?v=rmVRLeJRkl4&list=PLoROMvodv4rMFqRtEuo6SGjY4XbRIVRd4
- https://huggingface.co/docs/transformers/perf_train_gpu_one

Блоги 💻
- https://huggingface.co/blog/
- https://blog.eleuther.ai/
- https://lilianweng.github.io/
- https://oobabooga.github.io/blog/
- https://kipp.ly/
- https://mlu-explain.github.io/
- https://yaofu.notion.site/Yao-Fu-s-Blog-b536c3d6912149a395931f1e871370db

Прикладные курсы 👴
- https://github.com/yandexdataschool/nlp_course
- https://github.com/DanAnastasyev/DeepNLP-Course
(Я давно не проходил вообще никакие курсы, если есть что-то новое и хорошее - пишите!)

Каналы 🚫
- https://t.me/gonzo_ML
- https://t.me/izolenta_mebiusa
- https://t.me/tech_priestess
- https://t.me/rybolos_channel
- https://t.me/j_links
- https://t.me/lovedeathtransformers
- https://t.me/seeallochnaya
- https://t.me/doomgrad
- https://t.me/nadlskom
- https://t.me/dlinnlp
(Забыл добавить вас? Напишите в личку, список составлялся по тем каналам, что я сам читаю)

Чаты 😁
- https://t.me/betterdatacommunity
- https://t.me/natural_language_processing
- https://t.me/LLM_RNN_RWKV
- https://t.me/ldt_chat

Форумы 🍿
- https://www.lesswrong.com/tag/ai
- https://www.reddit.com/r/LocalLLaMA/
- https://www.reddit.com/r/Oobabooga/
- https://www.reddit.com/r/LanguageTechnology/
- https://www.reddit.com/r/datasets/

Основные статьи 🌿
- Word2Vec: Mikolov et al., Efficient Estimation of Word Representations in Vector Space https://arxiv.org/pdf/1301.3781.pdf
- FastText: Bojanowski et al., Enriching Word Vectors with Subword Information https://arxiv.org/pdf/1607.04606.pdf
- Attention: Bahdanau et al., Neural Machine Translation by Jointly Learning to Align and Translate https://arxiv.org/abs/1409.0473
- Transformers: Vaswani et al., Attention Is All You Need https://arxiv.org/abs/1706.03762
- BERT: Devlin et al., BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding https://arxiv.org/abs/1810.0480
- GPT-2, Radford et al., Language Models are Unsupervised Multitask Learners https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
- GPT-3, Brown et al, Language Models are Few-Shot Learners https://arxiv.org/abs/2005.14165
- LaBSE, Feng et al., Language-agnostic BERT Sentence Embedding https://arxiv.org/abs/2007.01852
- CLIP, Radford et al., Learning Transferable Visual Models From Natural Language Supervision https://arxiv.org/abs/2103.00020
- RoPE, Su et al., RoFormer: Enhanced Transformer with Rotary Position Embedding https://arxiv.org/abs/2104.09864
- LoRA, Hu et al., LoRA: Low-Rank Adaptation of Large Language Models https://arxiv.org/abs/2106.09685
- InstructGPT, Ouyang et al., Training language models to follow instructions with human feedback https://arxiv.org/abs/2203.02155
- Scaling laws, Hoffmann et al., Training Compute-Optimal Large Language Models https://arxiv.org/abs/2203.15556
- FlashAttention, Dao et al., FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness https://arxiv.org/abs/2205.14135
- NLLB, NLLB team, No Language Left Behind: Scaling Human-Centered Machine Translation https://arxiv.org/abs/2207.04672
- Q8, Dettmers et al., LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale https://arxiv.org/abs/2208.07339
- Self-instruct, Wang et al., Self-Instruct: Aligning Language Models with Self-Generated Instructions https://arxiv.org/abs/2212.10560
- Alpaca, Taori et al., Alpaca: A Strong, Replicable Instruction-Following Model https://crfm.stanford.edu/2023/03/13/alpaca.html
- LLaMA, Touvron, et al., LLaMA: Open and Efficient Foundation Language Models https://arxiv.org/abs/2302.13971
Please open Telegram to view this post
VIEW IN TELEGRAM
Про локальные языковые модели для относительно неподготовленной аудитории:
Видео: https://youtu.be/KXBRGkZTX1U?si=CyVKSUavsSnZfffR&t=241
Презентация: http://tinyurl.com/gusevlocal
Подкаст: https://mlpodcast.mave.digital/ep-55

Про древнюю генерацию стихов:
Видео: https://www.youtube.com/watch?v=wTN-qKPu4c0
Статья на Хабре: https://habr.com/ru/articles/334046/

Про Сайгу:
Видео: https://www.youtube.com/watch?v=YqKCk8_dNpQ
Презентация: http://tinyurl.com/gusevsaiga
Статья на Хабре: https://habr.com/ru/articles/759386/

Про не-трансформерные модели:
Видео: https://www.youtube.com/watch?v=C65JbhTi-O4
Презентация: https://tinyurl.com/gusevlrnn

Разборы направлений:
- Спекулятивная генерация: https://t.me/senior_augur/14
- Определение языков: https://t.me/senior_augur/18
- Отказ от статических бенчмарков для языковых моделей: https://t.me/senior_augur/19
- Бенчмарки для длинных контекстов: https://t.me/senior_augur/32, https://t.me/senior_augur/33
- Методы сэмплирования токенов: https://t.me/senior_augur/72, https://t.me/senior_augur/281
- RLHF методы: https://t.me/senior_augur/119
- Позиционная кодировка: https://t.me/senior_augur/184, https://t.me/senior_augur/193
- Шахматы и языковые модели: https://t.me/senior_augur/201, https://t.me/senior_augur/219
- ACL 2024, серия постов, начало: https://t.me/senior_augur/251

Разборы статей:
- Repeat after me, https://arxiv.org/abs/2402.01032: https://t.me/senior_augur/13
- BooookScore, https://arxiv.org/abs/2310.00785: https://t.me/senior_augur/21
- Zoology, https://arxiv.org/abs/2312.04927: https://t.me/senior_augur/56
- Based, https://arxiv.org/abs/2402.18668: https://t.me/senior_augur/61
- Электрорецензенты, https://arxiv.org/abs/2403.07183: https://t.me/senior_augur/73
- Статья Тьюринга, https://t.me/senior_augur/272
- Взлом side-by-side бенча: https://arxiv.org/abs/2410.07137, https://t.me/senior_augur/301

Полезные посты:
- Компиляция обучающих материалов: https://t.me/senior_augur/3
- Список песочниц и морд языковых моделей: https://t.me/senior_augur/48
- Общая архитектура языковых моделей: https://t.me/senior_augur/62
- Представление информации для нейронок: https://t.me/senior_augur/68
Что мне интересно сейчас — это "креативные" модели для развлечения:
- Для общения (см. character.ai / chai)
- Для игр (см. fables.gg)
- Для помощи писателям/сценаристам (см. novelai.net / sudowrite.com)
- И картинки/звук/видео ко всему этому тоже

Чем я сейчас занимаюсь (если откинуть фулл-тайм работу):
- TaleStudio: инструмент для написания рассказов с языковыми моделями на основе RecurrentGPT. UI на gradio, набор специфических промптов, в идеале - open-source клон sudowrite.
- Сбор датасетов для role-play и ERP, см. anychars, pippa_ru, ficbook, и gpt_roleplay_realm
- Довольно долго участвовал в Chai Competition, суммарно выиграл 4250$, но пока поднадоело

Что есть когда-нибудь в планах:
- Презентация или популярная статья про методы изменения поведения языковых моделей во время инференса (CFG, activation steering).
- Попробовать fine-tune новых RWKV, типа Eagle
- Попробовать сделать AI-стримера
Классная новая лекция Саши Раша про историю языковых моделей.

Включает в себя:
- Очень понятный вывод перплексии и её влияния на остальные метрики
- Сравнение с древними n-граммными моделями
- Вывод механизма внимания как аппроксимацию key-value памяти
- Понятные переходы “n-граммная модель -> word2vec -> трансформеры”
- Объяснение важности иерархии памяти в GPU при матричном умножении
- Scaling law Шиншиллы
- RASP, довольно забавный язык программирования, основанный на механизме внимания. Язык этот используется для того, чтобы показать, как трансформеры могут делать те или иные операции.

Что я узнал нового? Только часть про RASP, которую я как-то пропустил года 2 назад.
Но всё равно лекция довольно интересная.

Видео: https://www.youtube.com/watch?v=KCXDr-UOb9A
Презентация: https://link.excalidraw.com/p/readonly/aBWlNjEckdUlrszwwo6V
Тут почти сегодня статья одна вышла, Repeat After Me: https://arxiv.org/pdf/2402.01032.pdf

Авторы берут несколько синтетических задач на копирование и пытаются показать, что замены трансформеров на SSM (типа Мамбы) плохо копируют большие куски последовательностей.

Первая группа экспериментов:

Настройки: Учим модели с нуля, с одинаковым количеством параметров, токены = алфавит + BOS, EOS и COPY. Случайно выбираем длину строки, потом на каждую позицию в строке выбираем случайный символ. Таким образом получаем случайный набор строк.

- Эксп1: Учим модель копировать строки меньше 300 символов.
Наблюдение: SSM учатся дольше трансформеров, но в итоге выучиваются идеально исполнять задачу.

- Эксп2: Учим модель копировать строки меньше 50 символов, предсказываем на строках бОльшей длины.
Наблюдение: Всё, кроме HAlibi-кодированных трансформеров, не вытягивает строки больше 200 символов. NoPE и Alibi-кодированные трансформеры вытягивают 100-150, SSM и RoPE-кодированные трансформеры - не больше 55.

- Эксп3: <данные удалены за ненадобностью: там про то, как именно копируют трансформеры>

- Эксп4: Учим модель продолжать копированием уже встретившиеся n-граммы в том же режиме, что и в эксперименте 2. То есть вход <abcdef>, запрос <cd>, выход: <ef>. И строки в обучении меньше 30 символов.
Наблюдение: SSM сильно проигрывают трансформерам. На строках больше 30 символов, конечно.

- Эксп5: Как эксперимент 4, но "запрос" подаём перед основной последовательностью, а не после. То есть запрос и вход меняются местами.
Наблюдение: SSM сильно выигрывают у трансформеров.

Вторая группа экспериментов:

Настройки: берём готовые предобученные модели, Mamba и Pythia.

- Эксп1: Промпт = 2 копии одной и той же строки, плюс первое слово третьей копии. Задача = закончить третью копию. Строки выбираются случайно из C4, большого корпуса реальных текстов
Наблюдение: Мамба справляется гораздо хуже Пифии на любых длинах

- Эксп2: Режим телефонной книги: есть набор имён и телефонов для этих имён. Подаём L имён в промпт, пару few-shot примеров, и просим телефон для случайного имени из списка.
Наблюдение: Мамба справляется гораздо хуже Пифии на любых длинах

- Эксп3: Настоящий SQuAD, 1-shot для того же текста. Ещё делаем разбивку по длине текстов.
Наблюдение: Мамба справляется гораздо хуже Пифии на длинных текстах

Мои комментарии:
- Воспроизвел кусочек первого экперимента второй группы, Мамба действительно не справляется. Добавила лишнее "клеток, связанных внутри".
- Эксперименты первой группы показывают, что обучение Мамба не обобщается по длине. Что в целом так себе открытие, трансформеры до недавних позиционных эмбеддингов тоже не обобщались.
- Эксперименты второй группы наносят более серьёзный удар, но и сравнение нечестное, обучающие выборки у моделей всё-таки были разные.

Короче, рано хоронить SSM.

Видео на тему: https://youtu.be/F1yYf9xdKEA?si=YzLKALHzyyXK28W0&t=52
Спекулятивная генерация.
Или “Как уменьшить задержку при генерации авторегрессионной моделью?”

Вариант 1: Лёгкая черновая модель
Основной пост: https://huggingface.co/blog/assisted-generation
Суть: В трансформерах подтверждение корректности сгенерированных токенов работает быстрее, чем генерация этих же токенов. Потому что подтверждение делается параллельно по токенам, а вот генерировать можно только один токен за раз. Поэтому можно пытаться предсказать токены более легкой моделью, и потом подтверждать основной. Если легкая модель достаточно часто угадывает правильные токены, получаем значительное ускорение инференса.
Проблемы: Нужно найти хорошую маленькую модель и хостить её рядом с основной.
Поддержка:
- VLLM: в процессе, https://github.com/vllm-project/vllm/pull/2188
- TGI: поддерживаются n-граммные черновые модели, https://github.com/huggingface/text-generation-inference/issues/1169

Вариант 2: Медуза
Основной пост: https://sites.google.com/view/medusa-llm
Суть: Доучиваем несколько голов на предсказание нескольких следующих слов вместо одного. По сути заменяем черновую модель на адаптеры для основной. Предсказания подтверждаем основной моделью. Каждая голова выдает сразу несолько кандидатов (например топ-5). Проверяем сразу все комбинации, используя аккуратную “древесную” маску внимания.
Проблемы: Нужно что-то доучивать.
Поддержка:
- VLLM: в процессе, https://github.com/vllm-project/vllm/pull/2188 (там в PR оба варианта)
- TGI: поддерживается, https://github.com/huggingface/text-generation-inference/pull/1308

Вариант 3: Lookahead decoding
Основной пост: https://lmsys.org/blog/2023-11-21-lookahead-decoding/
Суть: Метод Якоби для предсказания окна впереди с кешированием n-грамм. То есть мы сначала подставляем в окно случайные токены и потом пытаемся их итеративно улучшать. При таком подходе токены часто правильные даже на ранних итерациях, но не в своей позиции. Поэтому кэшируем n-граммные “траектории” и пытаемся их тоже подставлять.
Проблемы: Сложнее в понимании и, кажется, слишком медленно.
Поддержка:
- VLLM: идёт дискуссия, https://github.com/vllm-project/vllm/issues/1742
- TGI: отказано, https://github.com/huggingface/text-generation-inference/issues/1169

Другое:
OSD: https://arxiv.org/abs/2310.07177, про онлайн доучивание черновых моделей
Статья DeepMind: https://arxiv.org/abs/2302.01318, про то, как это всё подружить с сэмплированием
Forwarded from black_samorez
Мы с коллегами из Yandex Research сделали новый метод квантизации LLM’ок - AQLM. Он позволяет сжимать модели вплоть до 2 бит на параметр, что открывает тонну возможностей от запуска Llama 2 70b на RTX 3090 до, потенциально, меньших моделей на мобилках. Статья доступна на arXiv, код лежит на GitHub.

Про качество: AQLM бьет по качеству все существующие методы в диапазоне 2-3 бит на параметр: AQLM 2 бита лучше чем QuIP# 2 бита и даже мощнее GPTQ 3 бита.

Про готовые модели: мы выложили готовые квантизованные модели на хаб. Лламы от 7b до 70b и Mixtral в разных конфигурациях. Для быстрого инференса мы написали несколько кернелов на CUDA, Triton и Numba. Они оптимизированы под различные сетапы квантизации, и либо немного уступают, либо заметно превосходят fp16 по скорости генерации.

Про использование: весь продвинутый код инференса завернут в одну либу, и устанавливается просто через pip install aqlm. После этого можно смело подгружать любые модели с хаба через .from_pretrained(..., trust_remote_code=True), и оптимальные кернелы будут выбираться и компилироваться на ходу за кулисами.

Про метод: мы применяем квантизацию групп соседних весов для эффективного использования их взаимной информации. Более конкретно, мы представляем все блоки весов (размером около 1x8) в матрице суммой некоторого количества векторов из небольшого обучаемого списка (Additive Quantization). Детали и бэкграунд подробно описаны в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Про определение языков по мотивам сегодняшней беседы в nlp чатике, чтобы каждый раз не возвращаться.

🔨 Древние штуки

Langdetect: https://github.com/Mimino666/langdetect
Презентация: https://www.slideshare.net/shuyo/language-detection-library-for-java
Суть: Наивный байесовский классификатор на символьных [1,3]-граммах с нормализацией и удалением строк, добавляющих шум.
Данные: wiki
Языков: 55

CLD2 (Compact Language Detector): https://github.com/aboSamoor/pycld2
Суть: Наивный байесовский классификатор на символьных 4-граммах.
Данные: неизвестны
Языков: 83

CLD3 : https://github.com/google/cld3
Суть: Двухслойная сетка поверх символьных [1,3]-грамм
Где-то в 3-5 раз медленнее CLD2 и не без косяков (см. https://github.com/google/cld3/issues/45, https://t.me/experimentalchill/108)
Когда-то CLD использовались в гугловском Chromium.
Данные: неизвестны
Языков: 107

Langid: https://github.com/saffsd/langid.py
Статьи: https://aclanthology.org/I11-1062, https://aclanthology.org/P12-3005/
Суть: Наивный байесовский классификатор на символьных [1,3]-граммах с отбором признаков.
Данные: wiki, reutres, debian, jrc-acquis
Языков: 97

🥇 Fasttext

lid.176: https://fasttext.cc/docs/en/language-identification.html
Статьи: https://arxiv.org/abs/1802.06893, https://arxiv.org/abs/1607.01759
Суть: Однослойная (embedding+linear) сетка поверх символьных [2,4]-грамм с иерархическим softmax'ом.
Данные: wiki, tatoeba
Языков: 176

lid.218 (NLLB): https://huggingface.co/facebook/fasttext-language-identification
Статья: https://arxiv.org/abs/2207.04672, секция 5.1
Суть: Та же модель, больше языков
Данные: неизвестны
Языков: 218

openlid: https://github.com/laurieburchell/open-lid-dataset
Статья: https://aclanthology.org/2023.acl-short.75
Суть: Та же модель, но с выложенными данными
Данные: см. дополнение A статьи
Языков: 201

glotlid: https://github.com/cisnlp/GlotLID
Статья: https://aclanthology.org/2023.findings-emnlp.410
Суть: Та же модель, но на вообще кучу языков
Данные: https://github.com/cisnlp/GlotLID/blob/main/sources.md
Языков: >1600

🪑 Сравнения

Есть в некоторых статьях выше, а также вот щепотка постов:
https://modelpredict.com/language-identification-survey
https://aclanthology.org/2022.clib-1.18.pdf
https://towardsdatascience.com/benchmarking-language-detection-for-nlp-8250ea8b67c

Субъективно оно примерно вот так:
lid.176 > lid.218 > CLD2 > CLD3 > langid > langdetect
openlid и glotlid ещё не тестил
Please open Telegram to view this post
VIEW IN TELEGRAM
☠️ Смерть бенчмарков ☠️

Последнее время появилась куча статей о том, что некоторые базовые модели (не) случайно учились на тестовых выборках бенчмарков и о том, как такое обнаруживать.

Есть даже шуточная статья Pretraining on the Test Set Is All You Need.

Но и серьёзные дяди обеспокоены:
- В статье про Лламу-2 есть секция A.6, где честно признаётся, что утёк HellaSwag и MMLU.
- В техническом отчёте GPT-4 есть таблица 11, где тоже честно признаётся, что утёк HumanEval и DROP.
- То же касается техничского отчёта Gemini: там утекли LAMBADA и HellaSwag, поэтому цифры на них не опубликовали.

Все статьи далее расследуют утечки в black-box режиме. То есть нужно определить, что тестовые данные были в обучении модели, но при этом у нас нет доступа к обучающим данным. Что по-моему правильно, учитывая, что для большинства моделей это именно так и работает.


Detecting Pretraining Data from Large Language Models
Статья: https://arxiv.org/abs/2310.16789

Концепция 1:
WikiMIA, бенчмарк для методов определения утечек. Делим данные с Википедии на новые и старые, старые должны определяться как утечки, а новые не должны. Есть ещё такой же, но про книги, BookMIA

Концепция 2:
Min-k% prob метод, считаем среднюю вероятность наименее вероятных токенов. Если она выше определенного предела, значит пример был в обучении.

Эксперименты:
- поиск копирайтных книг в text-davinci-003
- дообучение на тестовых данных бенчмарков и последующая проверка утечек
- оценка качества "забывания" определенной информации моделями
- разрешение скандала в лидерборде 🍿


Proving Test Set Contamination in Black Box Language Models
Статья: https://arxiv.org/abs/2310.17623

Концепция:
Переставляем примеры местами, и смотрим, как меняется их вероятность. Если при оригинальном порядке вероятность выше, чем при почти всех перестановках, значит тестовые данные были в обучении. Однако все перестановки тяжело оценивать, поэтому бьём на шарды, переставляем внутри шардов и считаем среднее отклонение вероятности от каноничного порядка. И потом ещё усредняем по шардам.

Эксперименты:
Сначала эксперименты ставили на своей GPT-2 с намеренно подсунутыми в предобучение тестовыми данными, и так показали, что это вообще работает. И только потом на известных открытых моделях и бенчмарках. Так выяснили, что в предобучение Мистраля утёк Arc, и (кажется) в предобучение Мистраля и Лламы утёк MMLU. 😭


Investigating Data Contamination in Modern Benchmarks for Large Language Models
Статья: https://arxiv.org/abs/2311.09783

Концепция:
Берём датасеты с выбором вариантов (типа MMLU), маскируем один из неправильных вариантов ответа и просим модель его восстановить. Есть ещё несколько вариантов подобных тестов, но этот самый интересный.

Эксперименты:
Таким образом показали, что MMLU жёстко утёк в ChatGPT и GPT-4, и чуть-чуть утёк TruthfulQA в Мистраль. 😂


Выводы: 😳
- Если в статье про какую-либо модель нет секции про проверку на утечки — все цифры бенчмарков из неё можно смело игнорировать. То же касается различного рода анонсов.
- Статические бенчмарки с публичными тестовыми данными обречены. При этом, в случае приватных тестовых данных есть проблема доверия: нельзя быть на 100% уверенными, что их никому не отдают. Особенно это касается крупных корпораций, которые числа на этих данных используют для пиара.
- Обязательно тестируйте модели на своих бенчмарках и своих задачах, и будьте аккуратны с их составлением.
Please open Telegram to view this post
VIEW IN TELEGRAM
Иногда у меня пригорает на новости.

Новость: https://t.me/exploitex/12768
Оригинальный пост: https://blogs.nvidia.com/blog/chat-with-rtx-available-now/
Старая демка с кодом, на котором основана текущая версия: https://github.com/NVIDIA/trt-llm-rag-windows

Что в демке:
- llama-13b-chat за TensorRT-LLM
- llama_index с faiss бэкендом и all-MiniLM-L6-v2 эмбеддером

Есть ли здесь что-то новое? Нет.
Есть ли здесь что-то полезное? В какой-то степени да, но таких демок сотни на Гитхабе.

Зачем это нужно Nvidia я понимаю: продвигать TensorRT-LLM, потому что в целом пиар у Нвидии так себе. Вы когда-нибудь слышали про NeMo? Может быть про их собственную версию E5? Да хоть бы про сам TensorRT-LLM?

Почему это тиражируется в СМИ — вне моего понимания. Это не новая базовая модель. Это не новый пользовательский опыт. Это не какой-то прорыв. Это всё мы все видели много-много раз.

Поэтому и пригорает.
Долго не писал, но Rogue Trader сам себя не пройдёт.

Этот пост — про одну статью. Она забавна тем, что существовала в моей голове до того, как я её нашёл. И если бы я её не нашёл, есть ненулевые шансы, что я бы провёл очень похожие эксперименты и получил бы очень похожие результаты. К счастью, добрые люди с Реддита подсказали ссылку на неё.

В одном из постов выше я писал об инструменте для писателей. В качестве очень важной фичи такого инструмента я вижу загрузку уже существующих черновиков в этот инструмент. А для этого нужна суммаризация больших текстов. И вот об этом статья ниже.

BooookScore: A systematic exploration of book-length summarization in the era of LLMs
Статья: https://arxiv.org/abs/2310.00785
Рецензии: https://openreview.net/forum?id=7Ttk3RzDeu, статья принята на ICLR 2024
Код: https://github.com/lilakk/BooookScore/

Суть: Метрика оценки качества выжимок из книг на основе GPT-4, которая оценивает исключительно саму выжимку, никак не опираясь на текст. Идея в том, что когда вы читаете такую выжимку, у вас не должно возникать вопросов типа "Кто этот персонаж?", "Почему просходят описанные события?", "Почему меняется главный герой?", и так далее. И метрика просто оценивает долю предложений в выжимке, к которым возникают подобные вопросы.

Центральная проблема: Невозможность вместить всю книгу в контекст модели. Авторы используют два метода суммаризации, в общем-то описанных в литературе: иерархическую и инкрментальную. Оба метода работают через zero-shot промпты к языковым моделям. В одном случае мы разбиваем текст на куски, считаем выжимки этих кусков, потом выжимки выжимок, и так далее. Во втором случае — поддерживаем обновлямую "память".

Корпус: Недавно опубликованные книги на английском. Это довольно важно, чтобы книги не попадали в преобучение моделей. Я сам буквально на днях убеждался, что популярные книжки модели помнят, даже на русском. Сам корпус не публикуют, потому что это во-первых не по копирайту, а во-вторых бессмысленно из-за выхода новых моделей. 😂

Разметка: Сгенерировали выжимки по обоим методам, попросили людей разметить неясности, потратили 3к$, зато теперь подтверждают, что автоматическая метрика коррелирует с оценками людей. Плюс ещё потом сделали side-by-side выжимок, сгенерированных двумя методами.

Эксперименты: 2 метода суммаризации, 2 типа окошек (2к и 88к), 4 модели (GPT-4, ChatGPT, Claude 2, LLaMA-7b Instruct). Измеряем метрики для всех случаев, получаем красивые таблички. В процессе тратим на API моделей 9к$!

Выводы:
- Метрика почти настолько же точна, насколько и люди
- Иерархический метод лучше инкрементального, особенно для коротких окошек

Проблемы:
- Дорого. Я запустил на одной выжимке, пришёл счёт на 40$. 😭 Но покопавшись, можно сделать раз так в 100 дешевле. GPT-4 заменить на турбо, не спрашивать модель отдельно по каждому предложению, и всё такое. 🧠
- Центральная проблема может решиться сама через какое-то вермя. Нынче много моделей с очень широким контекстом, но вот что-то я не уверен, что они в состоянии сделать хорошую выжимку длинного текста. GPT-4 не справляется, по крайней мере.
- Нет опоры на оригинальный текст. Просто по задумке.
- Разные предложения и разные типы ошибок имеют одинаковый вес в метрике.

В целом очень крепкая и подробная статья.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Alexander Kukushkin
🎙 Стрим с авторами Impact of Tokenization on LLaMa Russian Adaptation https://arxiv.org/abs/2312.02598

Когда: вторник 20 февраля в 19:00 по Москве
Где: видеочат в @natural_language_processing
Запись будет

Что обсудим:
- Сохранилось ли качество на английском
- Достаточно ли обновить первый и последний слои, какие еще подходы
- Как оценивали: RSG, SbS; какие результаты/выводы

Приходите комментировать, задавать вопросы
Больше синтетики богу синтетики!

Huggingface сегодня релизнули огромный синтетический датасет и модель, на нём обученную: cosmopedia и cosmo-1b.

Датасет:
- сгенерирован Mixtral-8x7B-Instruct-v0.1
- в куче жанров с распределением похожим на RefinedWeb and RedPajama
- жанры можно отдельно выбирать в загрузчике
- 25 миллиардов токенов
- хитрый промптинг и дедупликация
- проверен на утечки тест-сетов
- есть весь код генерации: https://github.com/huggingface/cosmopedia

Модель:
- 1.8b (то есть на самом деле 2 миллиарда параметров)
- cosmopedia в качестве основного датасета + 5 миллиардов "естественных" токенов с кодом + ultrachat сразу в предобучении, чтобы не учить отдельно instruct-модель
- лучше TinyLlama 1.1B
- хуже phi-1.5 (сильно)

Ничего сверхполезного, но круто, что весь код получения и обработки данных открытый.
Вышла Gemma, Llama от Гугла.
Пост: https://blog.google/technology/developers/gemma-open-models/
Статья: https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf
Базовая модель: https://huggingface.co/google/gemma-7b
Инструктивная модель: https://huggingface.co/google/gemma-7b-it

Пресс-релиз пересказывать не хочется, а ничего другого пока нет. Для русского токенизация лучше, чем у Лламы и Мистраля.

UPD: можно потыкать на https://huggingface.co/chat, только модель выбрать не забудьте.