Автор:
(1) Брэндон Т. Уиллард, Нормальные вычисления;
(2) Реми Луф, Нормальные вычисления.
Индексирование словаря, представленное в этой статье, устраняет непомерный барьер масштабирования во время выполнения при управляемой генерации. Естественно, при этом приходится искать компромисс между обработкой и памятью, но мы считаем, что затраты на память в среднем относительно невелики, а в противном случае их можно снизить традиционными способами.
В наших тестах с использованием слегка расширенной версии грамматики Python мы обнаружили, что даже наивно построенные индексы (т. е. содержащие неиспользуемые и избыточные конфигурации состояний синтаксического анализатора и автомата) по-прежнему занимают всего около 50 МБ. Более того, эти индексы были построены с использованием несокращенных DFA, а это означает, что существует множество избыточных состояний, неоправданно увеличивающих размер индексов. Аналогичным образом, если точное представление конечных автоматов когда-либо является проблемой, возможно, что могут подойти другие формулировки конечных автоматов с меньшими требованиями к памяти (например, NFA).
Значение этой работы не ограничивается генерацией нейронного текста. Например, можно использовать описанный здесь подход индексирования, чтобы помочь в обучении или точной настройке LLM, когда требуются структурированные результаты. Мы также можем предположить, что вспомогательная генерация во время обучения может уменьшить потребность модели в изучении синтаксических деталей.
Кроме того, этот метод обеспечивает альтернативный способ оценки текущих моделей. Можно, например, попытаться количественно оценить несоответствие между замаскированными логитами, сгенерированными нашим методом, и необработанными логитами, сгенерированными моделью. Что, в свою очередь, может повлиять на цель обучения модели.
Также возможно «поднять» маски, вычисленные этим подходом, в сами модели языка. По сути, маски неявно определяют, какие вычисления не нужно выполнять. Наша текущая формулировка применяет маски только на самом низком уровне, но, подняв маски дальше в архитектуру модели, мы сможем модулировать, какие фрагменты параметров модели необходимы, прежде чем выполнять над ними ненужные операции. Это потенциально может еще больше снизить вычислительные затраты.
Лука Бойрер-Келлнер, Марк Фишер и Мартин Вечев. Подсказка — это программирование: язык запросов для больших языковых моделей. Труды ACM по языкам программирования, 7 (PLDI): 1946–1969, 2023.
Ихонг Донг, Гэ Ли и Чжи Цзинь. CODEP: грамматическая модель Seq2Seq для генерации кода общего назначения. В материалах 32-го Международного симпозиума ACM SIGSOFT по тестированию и анализу программного обеспечения, ISSTA 2023, страницы 188–198, Нью-Йорк, штат Нью-Йорк, США, июль 2023 г. Ассоциация вычислительной техники. ISBN 9798400702211. doi: 10.1145/3597926. 3598048.
Сайбо Гэн, Мартин Йозифоски, Максим Пейрар и Роберт Уэст. Гибкое ограниченное декодирование на основе грамматики для языковых моделей, май 2023 г.
Майкл Кучник, Вирджиния Смит и Джордж Амвросиадис. Проверка больших языковых моделей с помощью relm. Труды по машинному обучению и системам, 5, 2023.
Александр К. Лью, Тан Чжи-Сюань, Габриэль Гранд и Викаш К. Мансингка. Последовательное управление большими языковыми моделями по методу Монте-Карло с использованием вероятностных программ. Препринт arXiv arXiv:2306.03081, 2023.
Реми Луф и Брэндон Т. Уиллард. Краткое содержание: Программирование генеративных моделей. URL https://github.com/normal-computing/outlines.
Майкрософт. Руководство. Microsoft, июль 2023 г. URL https://github.com/microsoft/guidance.
Габриэль Поэзия, Александр Полозов, Ву Ле, Ашиш Тивари, Густаво Соареш, Кристофер Мик и Сумит Гулвани. Synchromesh: надежная генерация кода на основе предварительно обученных языковых моделей. Препринт arXiv arXiv:2201.11227, 2022a.
Габриэль Поэзия, Александр Полозов, Ву Ле, Ашиш Тивари, Густаво Соареш, Кристофер Мик и Сумит Гулвани. Synchromesh: надежная генерация кода на основе предварительно обученных языковых моделей, январь 2022 г.b.
Максим Рабинович, Митчелл Стерн и Дэн Кляйн. Сети абстрактного синтаксиса для генерации кода и семантического анализа. Препринт arXiv arXiv:1704.07535, 2017.
Алек Рэдфорд, Джеффри Ву, Ревон Чайлд, Дэвид Луан, Дарио Амодей и Илья Суцкевер. Языковые модели предназначены для многозадачного обучения без присмотра. Блог OpenAI, 1(8):9, 2019.
Мэтт Рикард. parserLLM, июль 2023 г.a. URL https://github.com/r2d4/parserllm.
Мэтт Рикард. R2d4/rellm: Точная структура завершения любой языковой модели., 2023b. URL https://github.com/r2d4/rellm.
Торстен Шолак, Натан Шухер и Дмитрий Богданов. ПИКАРД: поэтапный анализ для ограниченного авторегрессионного декодирования на основе языковых моделей. Препринт arXiv arXiv:2109.05093, 2021.
Рико Сеннрич, Барри Хэддоу и Александра Берч. Нейронно-машинный перевод редких слов с подсловами. Препринт arXiv arXiv:1508.07909, 2015.
Майкл Сипсер. Введение в теорию вычислений. Международное издательство Томсон, 1996.
Ашиш Васвани, Ноам Шазир, Ники Пармар, Якоб Ушкорейт, Лайон Джонс, Эйдан Н. Гомес, Лукаш Кайзер и Илья Полосухин. Внимание – это все, что вам нужно. Достижения в области нейронных систем обработки информации, 30, 2017.
Бэйлинь Ван, Цзы Ван, Сюэчжи Ван, Юань Цао, Риф А. Саурус и Юн Ким. Грамматические рекомендации по созданию предметно-ориентированного языка с помощью больших языковых моделей, май 2023 г.
Лилиан Венг. Управляемая генерация нейронного текста, январь 2021 г. URL https://lilianweng.github.io/posts/ 2021-01-02-controllable-text-generation/.
Мы хотели бы поблагодарить Дэна Герланка и Дэна Симпсона за их поддержку и конструктивные отзывы.
Этот документ доступен на arxiv под лицензией CC 4.0.