paint-brush
Generación guiada eficiente para modelos de lenguaje grandes: resumen e introducciónpor@textmodels
102 lecturas

Generación guiada eficiente para modelos de lenguaje grandes: resumen e introducción

Demasiado Largo; Para Leer

Los investigadores proponen un marco de máquina de estados finitos para la generación de texto, que ofrece un control preciso y un rendimiento mejorado.
featured image - Generación guiada eficiente para modelos de lenguaje grandes: resumen e introducción
Writings, Papers and Blogs on Text Models HackerNoon profile picture
0-item

Autor:

(1) Brandon T. Willard, Computación normal;

(2) R´emi Louf, Computación Normal.

Tabla de enlaces

Abstracto

En este artículo mostramos cómo el problema de la generación de texto neuronal puede reformularse constructivamente en términos de transiciones entre los estados de una máquina de estados finitos. Este marco conduce a un enfoque eficiente para guiar la generación de texto con expresiones regulares y gramáticas libres de contexto al permitir la construcción de un índice sobre el vocabulario de un modelo de lenguaje. El enfoque es independiente del modelo, permite aplicar conocimientos y restricciones específicos del dominio y permite la construcción de interfaces confiables al garantizar la estructura del texto generado. Añade pocos gastos generales al proceso de generación de secuencias de tokens y supera significativamente a las soluciones existentes. Se proporciona una implementación en la biblioteca Python de código abierto Outlines [Louf y Willard].

1. Introducción

Nos preocupa el problema de generar secuencias de tokens a partir de un modelo de lenguaje grande (LLM) [Vaswani et al., 2017, Radford et al., 2019] que se ajusten a expresiones regulares o gramáticas libres de contexto (CFG). Este tipo de generación LLM guiada se utiliza para hacer que la salida del modelo LLM sea utilizable bajo requisitos de formato rígidos que son difíciles o costosos de capturar solo mediante ajustes finos [Beurer-Kellner et al., 2023, Scholak et al., 2021, Poesia et al., 2022a, Rabinovich et al., 2017, Weng, 2021, Dong et al., 2023, Poesia et al., 2022b, Geng et al., 2023, Wang et al., 2023]. Estas características se han generalizado recientemente en bibliotecas e interfaces de solicitud [Microsoft, 2023, Beurer-Kellner et al., 2023, Rickard, 2023a,b], pero su aplicabilidad puede verse limitada por sus costos de escala.


La mayoría de las implementaciones de generación guiada sesgan los valores de puntuación utilizados para determinar las probabilidades de los tokens en el vocabulario de un LLM. Un enfoque común y suficiente implica evaluaciones repetidas de todo el vocabulario para determinar qué tokens son válidos (de acuerdo con las restricciones y los tokens muestreados previamente) y establecer las probabilidades de tokens no válidos en cero. Este enfoque implica un costo fijo O(N) por cada token generado, donde N es el tamaño del vocabulario del LLM.


Proponemos un enfoque que utiliza la formulación de expresiones regulares de la máquina de estados finitos (FSM) para iniciar y detener arbitrariamente la generación guiada y permitir la construcción de un índice con el cual el conjunto de tokens de probabilidad distinta de cero se puede obtener de manera eficiente en cada paso. El resultado es un algoritmo que cuesta O(1) en promedio.


Para el caso de la expresión regular, nuestro enfoque comparte la mayor similitud con Kuchnik et al. [2023], que utiliza una formulación de transductor para obtener FSM definidas sobre el vocabulario de un modelo de lenguaje, y estas FSM contienen gran parte de la misma información y beneficios de escala que los índices descritos aquí. Nuestro enfoque no requiere la abstracción completa del transductor y se puede utilizar para ampliar más fácilmente las bibliotecas de expresiones regulares eficientes y existentes sin modificar los autómatas subyacentes y sus implementaciones.


Más importante aún, nuestro enfoque de indexación también se puede extender a analizadores CFG y LALR(1) para permitir una generación guiada eficiente de acuerdo con formatos de datos y lenguajes de programación populares (por ejemplo, JSON, Python, SQL, etc.). La transición al análisis se realiza mediante aumentos de los componentes y operaciones del analizador LALR(1) tradicional, lo que lo convierte, nuevamente, en un enfoque que se puede utilizar para ampliar las implementaciones de analizadores existentes.


Este documento está disponible en arxiv bajo licencia CC 4.0.