Large Concept Models: Language Modeling in a Sentence Representation Space
LCM team, Loïc Barrault, Paul-Ambroise Duquenne, Maha Elbayad, Artyom Kozhevnikov, Belen Alastruey, Pierre Andrews, Mariano Coria, Guillaume Couairon, Marta R. Costa-jussà, David Dale, Hady Elsahar, Kevin Heffernan, João Maria Janeiro, Tuan Tran, Christophe Ropers, Eduardo Sánchez, Robin San Roman, Alexandre Mourachko, Safiyyah Saleem, Holger Schwenk
Статья: https://arxiv.org/abs/2412.08821
Код: https://github.com/facebookresearch/large_concept_model
Ещё одна классная работа от FAIR (BLT https://news.1rj.ru/str/gonzo_ML/3109 тоже была их).
Хочется уметь работать на разных уровнях абстракции. Мозг, очевидно, умеет это делать и наше мышление не оперирует только лишь на уровне слов. У нас есть какой-то top-down процесс решения сложных задач. Например, при создании длинного документа мы (обычно) сначала планируем его верхнеуровневую структуру, а затем начинаем добавлять детали на более низких уровнях абстракции. Текущие LLM работают скорее не так, уровень токенов — наше (их) всё. Может, конечно, и есть там внутри какие-то неявные иерархические репрезентации, но иметь их явно было бы более полезно. Иметь ризонинг и планирование на этом уровне также было бы ценно. Совсем хорошо было бы иметь этот уровень независимым от конкретного языка и модальности — одна и та же мысль может быть выражена на разных языках и в разных модальностях (текст, голос).
Хочется (снова) уйти от токенов — в BLT мы уходили в латентную не видимую снаружи токенизацию, а здесь мы уходим в более высокоуровневое пространство эмбеддингов для концептов и хотим моделировать процесс ризонинга на уровне семантики, а не токенов, и иметь LCM (Large Concept Model) вместо LLM.
Для проверки идеи ограничиваемся двумя уровнями: 1) subword токены и 2) концепты. Под концептами понимается абстрактная неделимая идея, на практике часто соответствующая предложению в документе или высказыванию в разговорной речи. В отличие от одиночных слов это подходящий элемент для достижения независимости от языка.
Для такого подхода надо иметь пространство эмбеддингов предложений с доступным энкодером и декодером. В качестве такового взяли FAIR’овский же SONAR (https://arxiv.org/abs/2308.11466) с поддержкой 200 языков (все языки из проекта No Language Left Behind, https://arxiv.org/abs/2207.04672) на текстовых входах/выходах, 76 языков на речевом входе и одного английского на речевом выходе. SONAR бьёт по качеству LASER3 и LabSE и доступен в репе https://github.com/facebookresearch/SONAR. Размер эмбеддинга 1024 float чиселки (что значит, типичное предложение в виде эмбеддингов будет занимать в разы больше места, в работе на 1Tb текста уходило примерно 15-20Tb эмбеддингов).
Имея всё это мы через энкодер SONAR можем получить из входного текста последовательность концептов, т.е. эмбеддингов предложений. И дальше эту последовательность обрабатывать LCM, генерируя на выходе новую последовательность концептов. А её в свою очередь декодировать SONAR’ом в последовательность токенов. Энкодер и декодер SONAR берутся готовые и не обучаются, обучается только LCM.
Что красиво, одна и та же последовательность концептов из LCM может быть декодирована в разные языки и модальности без необходимости перепрогонять весь процесс ризонинга. LCM вообще не знает ничего ни про языки, ни про модальности, из которых на её вход пришли данные. Появляется красивая модульность, обучил энкодер/декодер для нового языка — и уже обученная LCM автоматом с ним работает. В работе есть таблица про количество поддерживаемых языков в разных модальностях, LCM со своими 200 языками для текста здесь всех бьёт, но не совсем понятно как получены цифры для GPT/Gemini/Claude, я вроде не видел заявленного списка поддерживаемых языков у этих моделей. Ещё, конечно, было бы интересно посмотреть на концепты, которые неодинаково хорошо декодируются в разные языки.
LCM team, Loïc Barrault, Paul-Ambroise Duquenne, Maha Elbayad, Artyom Kozhevnikov, Belen Alastruey, Pierre Andrews, Mariano Coria, Guillaume Couairon, Marta R. Costa-jussà, David Dale, Hady Elsahar, Kevin Heffernan, João Maria Janeiro, Tuan Tran, Christophe Ropers, Eduardo Sánchez, Robin San Roman, Alexandre Mourachko, Safiyyah Saleem, Holger Schwenk
Статья: https://arxiv.org/abs/2412.08821
Код: https://github.com/facebookresearch/large_concept_model
Ещё одна классная работа от FAIR (BLT https://news.1rj.ru/str/gonzo_ML/3109 тоже была их).
Хочется уметь работать на разных уровнях абстракции. Мозг, очевидно, умеет это делать и наше мышление не оперирует только лишь на уровне слов. У нас есть какой-то top-down процесс решения сложных задач. Например, при создании длинного документа мы (обычно) сначала планируем его верхнеуровневую структуру, а затем начинаем добавлять детали на более низких уровнях абстракции. Текущие LLM работают скорее не так, уровень токенов — наше (их) всё. Может, конечно, и есть там внутри какие-то неявные иерархические репрезентации, но иметь их явно было бы более полезно. Иметь ризонинг и планирование на этом уровне также было бы ценно. Совсем хорошо было бы иметь этот уровень независимым от конкретного языка и модальности — одна и та же мысль может быть выражена на разных языках и в разных модальностях (текст, голос).
Хочется (снова) уйти от токенов — в BLT мы уходили в латентную не видимую снаружи токенизацию, а здесь мы уходим в более высокоуровневое пространство эмбеддингов для концептов и хотим моделировать процесс ризонинга на уровне семантики, а не токенов, и иметь LCM (Large Concept Model) вместо LLM.
Для проверки идеи ограничиваемся двумя уровнями: 1) subword токены и 2) концепты. Под концептами понимается абстрактная неделимая идея, на практике часто соответствующая предложению в документе или высказыванию в разговорной речи. В отличие от одиночных слов это подходящий элемент для достижения независимости от языка.
Для такого подхода надо иметь пространство эмбеддингов предложений с доступным энкодером и декодером. В качестве такового взяли FAIR’овский же SONAR (https://arxiv.org/abs/2308.11466) с поддержкой 200 языков (все языки из проекта No Language Left Behind, https://arxiv.org/abs/2207.04672) на текстовых входах/выходах, 76 языков на речевом входе и одного английского на речевом выходе. SONAR бьёт по качеству LASER3 и LabSE и доступен в репе https://github.com/facebookresearch/SONAR. Размер эмбеддинга 1024 float чиселки (что значит, типичное предложение в виде эмбеддингов будет занимать в разы больше места, в работе на 1Tb текста уходило примерно 15-20Tb эмбеддингов).
Имея всё это мы через энкодер SONAR можем получить из входного текста последовательность концептов, т.е. эмбеддингов предложений. И дальше эту последовательность обрабатывать LCM, генерируя на выходе новую последовательность концептов. А её в свою очередь декодировать SONAR’ом в последовательность токенов. Энкодер и декодер SONAR берутся готовые и не обучаются, обучается только LCM.
Что красиво, одна и та же последовательность концептов из LCM может быть декодирована в разные языки и модальности без необходимости перепрогонять весь процесс ризонинга. LCM вообще не знает ничего ни про языки, ни про модальности, из которых на её вход пришли данные. Появляется красивая модульность, обучил энкодер/декодер для нового языка — и уже обученная LCM автоматом с ним работает. В работе есть таблица про количество поддерживаемых языков в разных модальностях, LCM со своими 200 языками для текста здесь всех бьёт, но не совсем понятно как получены цифры для GPT/Gemini/Claude, я вроде не видел заявленного списка поддерживаемых языков у этих моделей. Ещё, конечно, было бы интересно посмотреть на концепты, которые неодинаково хорошо декодируются в разные языки.
👍19❤10🔥4👌2🤔1
Отдельный профит от такого подхода для обработки длинных документов — последовательность концептов как минимум на порядок короче последовательности токенов, а значит легче обработать трансформером с фиксированным окном контекста (ну либо больше влезет).
До некоторой степени LCM напоминает Лекуновскую JEPA (https://openreview.net/pdf?id=BZ5a1r-kVsf), которая тоже предсказывает репрезентации следующих наблюдений в пространстве эмбеддингов. Но JEPA фокусировалась на выучивании такого пространства в режиме self-supervised, а LCM фокусируется на точном предсказании в уже существующем пространстве эмбеддингов (но срастить эти два подхода, наверное, тоже просится).
Итак, работаем в пространстве эмбеддингов, для обучения LCM нужно подготовить текстовый датасет и сконвертировать его через SONAR в эмбеддинги, один на каждое предложение. На практике это не так просто, точная сегментация не всегда легка из-за ошибок в датасете или специфического форматирования. Кроме того длинные предложения могут быть слишком сложны для кодирования/декодирования через SONAR, качество пострадает. В итоге для разбиения на предложения выбрали Segment any Text (SaT, https://github.com/segment-any-text/wtpsplit) с дополнительным ограничением на длину сегмента, всё длиннее 250 символов (это число мы ещё встретим) разбивается, этот метод называют SaT Capped.
LCM должна conditionally на основе контекста генерить непрерывный эмбеддинг. Это отличается от работы LLM, где надо выдать распределение вероятности по дискретным токенам словаря. Прямолинейный подход к снаряду был бы обучить трансформер генерить эмбеддинг с objective минимизации MSE лосса. Это будет называться Base-LCM. Это не так просто, потому что у заданного контекста может быть много подходящих, но семантически разных продолжений, это видно на примере генерации картинок диффузионками, из одного промпта получаются довольно разные изображения. И в целом в той области как раз много наработок по выучиванию conditional probability distributions для непрерывных данных, поэтому другой логичный вариант на попробовать — это диффузионная модель, Diffusion-based LCM. Наконец ещё один вариант — квантизация и возврат к задаче генерации дискретных элементов, Quantized LCM.
Пройдёмся подробнее по вариантам LCM.
Base-LCM выступает бейзлайном, это стандартный декодер трансформера, переводящий последовательность предшествующих концептов (эмбеддингов предложений) в последовательность будущих. Трансформер окружён со стороны входа и выхода двумя простыми сетями, PreNet и PostNet, занимающимися нормализацией/денормализацией и проекцией SONAR эмбеддингов в размерность модели и из неё обратно. Обучается на semi-supervised задаче предсказания следующего концепта, минимизируя MSE loss относительно ground truth. К документам обучающей выборки добавляют суффикс “End of text”, что даёт возможность научиться генерить документы переменной длины. В инференсе один из стоп-критериев проверяет близость сгенерённого эмбеддинга эмбеддингу этого суффикса и останавливает генерацию, если близость выше заданного порога; другой стоп-критерий смотрит на косинусную близость между текущим и предыдущим эмбеддингом и останавливает, если она выше порога (оба порога установлены в 0.9).
Diffusion-based LCM тоже авторегрессионно генерит концепты, один за раз, делая заданное количество denoising steps для каждого генерируемого концепта. Использует classifier-free diffusion guidance. Есть версия модели с одним стволом (One-Tower) и двумя (Two-Tower). В первом случае это один ствол трансформера, делающий всё. Во втором отдельный ствол (contextualizer) занимается кодированием предшествующего контекста, а второй (denoiser) генерит новый эмбеддинг концепта и через cross-attention смотрит на контекст из первого ствола.
Quantized LCM использует Residual Vector Quantization и далее работает аналогично обычным LLM, предсказывающим дискретные юниты. Здесь можно использовать температуру, top-p/top-k. Архитектуру стараются собрать максимально похожую на Diffusion-based LCM, чтобы было легче сравнивать.
До некоторой степени LCM напоминает Лекуновскую JEPA (https://openreview.net/pdf?id=BZ5a1r-kVsf), которая тоже предсказывает репрезентации следующих наблюдений в пространстве эмбеддингов. Но JEPA фокусировалась на выучивании такого пространства в режиме self-supervised, а LCM фокусируется на точном предсказании в уже существующем пространстве эмбеддингов (но срастить эти два подхода, наверное, тоже просится).
Итак, работаем в пространстве эмбеддингов, для обучения LCM нужно подготовить текстовый датасет и сконвертировать его через SONAR в эмбеддинги, один на каждое предложение. На практике это не так просто, точная сегментация не всегда легка из-за ошибок в датасете или специфического форматирования. Кроме того длинные предложения могут быть слишком сложны для кодирования/декодирования через SONAR, качество пострадает. В итоге для разбиения на предложения выбрали Segment any Text (SaT, https://github.com/segment-any-text/wtpsplit) с дополнительным ограничением на длину сегмента, всё длиннее 250 символов (это число мы ещё встретим) разбивается, этот метод называют SaT Capped.
LCM должна conditionally на основе контекста генерить непрерывный эмбеддинг. Это отличается от работы LLM, где надо выдать распределение вероятности по дискретным токенам словаря. Прямолинейный подход к снаряду был бы обучить трансформер генерить эмбеддинг с objective минимизации MSE лосса. Это будет называться Base-LCM. Это не так просто, потому что у заданного контекста может быть много подходящих, но семантически разных продолжений, это видно на примере генерации картинок диффузионками, из одного промпта получаются довольно разные изображения. И в целом в той области как раз много наработок по выучиванию conditional probability distributions для непрерывных данных, поэтому другой логичный вариант на попробовать — это диффузионная модель, Diffusion-based LCM. Наконец ещё один вариант — квантизация и возврат к задаче генерации дискретных элементов, Quantized LCM.
Пройдёмся подробнее по вариантам LCM.
Base-LCM выступает бейзлайном, это стандартный декодер трансформера, переводящий последовательность предшествующих концептов (эмбеддингов предложений) в последовательность будущих. Трансформер окружён со стороны входа и выхода двумя простыми сетями, PreNet и PostNet, занимающимися нормализацией/денормализацией и проекцией SONAR эмбеддингов в размерность модели и из неё обратно. Обучается на semi-supervised задаче предсказания следующего концепта, минимизируя MSE loss относительно ground truth. К документам обучающей выборки добавляют суффикс “End of text”, что даёт возможность научиться генерить документы переменной длины. В инференсе один из стоп-критериев проверяет близость сгенерённого эмбеддинга эмбеддингу этого суффикса и останавливает генерацию, если близость выше заданного порога; другой стоп-критерий смотрит на косинусную близость между текущим и предыдущим эмбеддингом и останавливает, если она выше порога (оба порога установлены в 0.9).
Diffusion-based LCM тоже авторегрессионно генерит концепты, один за раз, делая заданное количество denoising steps для каждого генерируемого концепта. Использует classifier-free diffusion guidance. Есть версия модели с одним стволом (One-Tower) и двумя (Two-Tower). В первом случае это один ствол трансформера, делающий всё. Во втором отдельный ствол (contextualizer) занимается кодированием предшествующего контекста, а второй (denoiser) генерит новый эмбеддинг концепта и через cross-attention смотрит на контекст из первого ствола.
Quantized LCM использует Residual Vector Quantization и далее работает аналогично обычным LLM, предсказывающим дискретные юниты. Здесь можно использовать температуру, top-p/top-k. Архитектуру стараются собрать максимально похожую на Diffusion-based LCM, чтобы было легче сравнивать.
👍11❤4👌2🔥1