Большой пост про большой контекст. Размер контекста в...
Большой пост про большой контекст
Размер контекста в современных моделях (то максимальное количество токенов, которое они могут переварить за один раз) неуклонно растёт. Сначала переход от двух или четырёх тысяч токенов к восьми казался большим достижением. Потом появились модели до 32k токенов, но они долго были ограниченно доступны, а когда вышли в массы, оказались уже безнадёжно устаревшими, потому что у одного из лидеров индустрии (Anthropic) были уже модели со 100k. Теперь лимиты публичных моделей в районе от 128k (GPT-4 Turbo) до 200k (Anthropic). Гугл отставал в этой гонке, его публичные модели максимум покрывали 32k (специальные версии PaLM 2 и все версии Gemini 1.0). Прорыв наметился с Gemini 1.5 (https://t.me/gonzo_ML/2350), у которой по дефолту те же типовые нынче 128k, но есть непубличная версия с 1M токенов, и research версия с 10M.
Отдельный интересный вопрос, как именно добились такого большого контекста, который ещё и работает. Есть разные свежие заходы с различных сторон, например, LongRoPE (https://arxiv.org/abs/2402.13753), LongNet с dilated attention (https://arxiv.org/abs/2307.02486), RingAttention (https://arxiv.org/abs/2310.01889) или там недавно упоминавшийся RMT-R (https://t.me/gonzo_ML/2377). Интересно, что именно сделал Гугл.
Такие новые лимиты скорее всего очень сильно поменяют практики работы с моделями. Хочется немного порассуждать про это ближайшее будущее.
1) Во-первых, старые техники RAG, отчасти призванные обойти ограничения малого окна контекста при необходимости работы с длинными документами, должны отмереть. Или по крайней мере остаться только для специальных случаев типа необходимости подтягивать свежие или какие-то другие особо релевантные материалы.
Всякие langchain’овские сплиттеры (https://python.langchain.com/docs/modules/data_connection/document_transformers/) режущие в основном по длине (ну с учётом более подходящих точек для разрезания в некоторых случаях) и раньше были УГ -- смотреть на эти порезанные абзацы без слёз было сложно, хотя как-то оно работало.
Даже при наличии способности к нормальному нарезанию на вменяемые куски, всё равно нужна эта разная обвязка, которая будет там что-то матчить и выбирать более подходящие куски, агрегировать результаты и прочее. Теперь этой хренью потенциально вообще не надо заниматься, и это хорошо.
Ну то есть в некоторых случаях оно всё равно конечно нужно и может повысить качество решения, но это надо смотреть. Я в целом верю в end-to-end решения и вытеснение со временем большинства этих костылей.
2) 1M токенов это прям реально дофига, теперь в контекст можно засунуть много статей, целые кодовые репозитории или большие книги. А с учётом мультимодальности и способности современных моделей обрабатывать ещё и картинки, видео и аудио (путём преобразования их в специальные нетекстовые токены), зугружать туда часы видео или речевых записей.
С учётом того, что модели хорошо проходят (https://t.me/gonzo_ML/2351) Needle In A Haystack тесты (https://github.com/gkamradt/LLMTest_NeedleInAHaystack), можно получать вполне релевантные ответы при работе с такими длинами. Реально можно найти конкретный кадр в видео (https://t.me/gonzo_ML/2357) или момент в книге (https://t.me/gonzo_ML/2356). И решать совершенно новые классы задач. Меня, например, впечатляют кейсы, когда модели скормили видео со скринкастом решения задачи (поиск жилья на Zillow) и попросили сгенерить код Selenium для решешия этой же задачи (https://www.facebook.com/DynamicWebPaige/videos/1422440318698615). Или тот же перевод на/с языка Kalamang по загруженному учебнику грамматики (https://t.me/gonzo_ML/2355, про то же от Джеффа Дина: https://twitter.com/JeffDean/status/1758149033473020081). Да, там в реальности есть ещё словарь и 400 параллельных предложений, но всё равно, In-context language learning -- это очень круто. Как и ответы на вопросы по длинному документу.
Размер контекста в современных моделях (то максимальное количество токенов, которое они могут переварить за один раз) неуклонно растёт. Сначала переход от двух или четырёх тысяч токенов к восьми казался большим достижением. Потом появились модели до 32k токенов, но они долго были ограниченно доступны, а когда вышли в массы, оказались уже безнадёжно устаревшими, потому что у одного из лидеров индустрии (Anthropic) были уже модели со 100k. Теперь лимиты публичных моделей в районе от 128k (GPT-4 Turbo) до 200k (Anthropic). Гугл отставал в этой гонке, его публичные модели максимум покрывали 32k (специальные версии PaLM 2 и все версии Gemini 1.0). Прорыв наметился с Gemini 1.5 (https://t.me/gonzo_ML/2350), у которой по дефолту те же типовые нынче 128k, но есть непубличная версия с 1M токенов, и research версия с 10M.
Отдельный интересный вопрос, как именно добились такого большого контекста, который ещё и работает. Есть разные свежие заходы с различных сторон, например, LongRoPE (https://arxiv.org/abs/2402.13753), LongNet с dilated attention (https://arxiv.org/abs/2307.02486), RingAttention (https://arxiv.org/abs/2310.01889) или там недавно упоминавшийся RMT-R (https://t.me/gonzo_ML/2377). Интересно, что именно сделал Гугл.
Такие новые лимиты скорее всего очень сильно поменяют практики работы с моделями. Хочется немного порассуждать про это ближайшее будущее.
1) Во-первых, старые техники RAG, отчасти призванные обойти ограничения малого окна контекста при необходимости работы с длинными документами, должны отмереть. Или по крайней мере остаться только для специальных случаев типа необходимости подтягивать свежие или какие-то другие особо релевантные материалы.
Всякие langchain’овские сплиттеры (https://python.langchain.com/docs/modules/data_connection/document_transformers/) режущие в основном по длине (ну с учётом более подходящих точек для разрезания в некоторых случаях) и раньше были УГ -- смотреть на эти порезанные абзацы без слёз было сложно, хотя как-то оно работало.
Даже при наличии способности к нормальному нарезанию на вменяемые куски, всё равно нужна эта разная обвязка, которая будет там что-то матчить и выбирать более подходящие куски, агрегировать результаты и прочее. Теперь этой хренью потенциально вообще не надо заниматься, и это хорошо.
Ну то есть в некоторых случаях оно всё равно конечно нужно и может повысить качество решения, но это надо смотреть. Я в целом верю в end-to-end решения и вытеснение со временем большинства этих костылей.
2) 1M токенов это прям реально дофига, теперь в контекст можно засунуть много статей, целые кодовые репозитории или большие книги. А с учётом мультимодальности и способности современных моделей обрабатывать ещё и картинки, видео и аудио (путём преобразования их в специальные нетекстовые токены), зугружать туда часы видео или речевых записей.
С учётом того, что модели хорошо проходят (https://t.me/gonzo_ML/2351) Needle In A Haystack тесты (https://github.com/gkamradt/LLMTest_NeedleInAHaystack), можно получать вполне релевантные ответы при работе с такими длинами. Реально можно найти конкретный кадр в видео (https://t.me/gonzo_ML/2357) или момент в книге (https://t.me/gonzo_ML/2356). И решать совершенно новые классы задач. Меня, например, впечатляют кейсы, когда модели скормили видео со скринкастом решения задачи (поиск жилья на Zillow) и попросили сгенерить код Selenium для решешия этой же задачи (https://www.facebook.com/DynamicWebPaige/videos/1422440318698615). Или тот же перевод на/с языка Kalamang по загруженному учебнику грамматики (https://t.me/gonzo_ML/2355, про то же от Джеффа Дина: https://twitter.com/JeffDean/status/1758149033473020081). Да, там в реальности есть ещё словарь и 400 параллельных предложений, но всё равно, In-context language learning -- это очень круто. Как и ответы на вопросы по длинному документу.
Источник: gonzo-обзоры ML статей
2024-02-26 17:36:17