1 puntos por GN⁺ 2023-07-23 | 1 comentarios | Compartir por WhatsApp
  • Se aborda un artículo sobre la incorporación de muestreo basado en gramática en la nueva API de llama.cpp para guiar y restringir la generación.
  • La API de llama recibe una estructura de datos que representa una gramática libre de contexto, lo que permite el muestreo basado en reglas gramaticales.
  • El código de muestreo por gramática modela un autómata de pila no determinista y mantiene varias pilas para los estados de análisis.
  • El artículo ofrece ejemplos de uso de la API de gramática para diversos escenarios, como ajedrez, aritmética, JSON y japonés.
  • Se mencionan posibles optimizaciones, como compilar la gramática en un tensor de transición de estados y ejecutarlo en la GPU.
  • Los colaboradores están discutiendo la incorporación de soporte para archivos de gramática, mejoras al parser de gramática y optimización de la evaluación de tokens.
  • Se destaca la utilidad de la contribución y existe una propuesta para separar la API de muestreo en un módulo independiente.
  • Se mencionan otros proyectos que usan enfoques similares para la generación basada en gramática, como lmql.ai y jsonformer.
  • Hay propuestas para referenciar tokens completos en la gramática e incluir un parser en la API de llama.cpp para mejorar la usabilidad.
  • Los colaboradores revisan el código, brindan retroalimentación, discuten posibles mejoras y comparten su experiencia con esta función.
  • Un ingeniero de software participa en un proyecto relacionado con el muestreo por gramática y está teniendo problemas en ARM64+CUDA.
  • El editor sugiere que el problema podría estar relacionado con una combinación de paquetes del toolchain y ofrece ayuda.
  • Hay un pull request para agregar funciones de LocalAI y una propuesta para usar una sintaxis BNF más estándar en el proyecto.
  • Violar la gramática se considera el peor resultado posible, y se propone el backtracking para evaluaciones futuras.
  • Continúa la discusión sobre la implementación de EBNF y el formato que debería seguirse.
  • En la actualización más reciente, el muestreo quedó limitado a coincidencias de token completas, y se propusieron mejoras adicionales para manejar casos en que los tokens se separan de forma inapropiada.
  • Los cambios al proyecto fueron aprobados y están listos para fusionarse, y el editor espera poder experimentar con el proyecto actualizado.
  • Se menciona un problema similar en desarrollo dentro de otro proyecto, y se propone el precálculo de distribuciones de tokens del vocabulario.
  • El ingeniero de software expresa interés en ese enfoque y está dispuesto a compartir su opinión.
  • La conversación en GitHub continúa con varios participantes.

1 comentarios

 
GN⁺ 2023-07-23
Comentarios en Hacker News
  • Los modelos de lenguaje generan tokens uno por uno, lo que permite un control fino.
  • El muestreo basado en gramáticas puede usarse para imponer restricciones gramaticales al texto generado.
  • El muestreo basado en gramáticas podría no resolver los problemas de alineación ni garantizar un etiquetado correcto.
  • Hay un repositorio de GitHub para implementar muestreo basado en gramáticas en PyTorch.
  • Si se consideran las probabilidades conjuntas, se pueden elegir mejor las opciones en enumeraciones de cadenas de opción múltiple.
  • Se citó una biblioteca de gramáticas como ejemplo de cómo podría verse el formato.
  • A algunos usuarios les interesa este concepto, pero cuestionan sus efectos a largo plazo.
  • El muestreo basado en gramáticas puede ser útil para dominios específicos y DSL internos.
  • Sigue siendo necesaria la ingeniería de prompts para obtener la salida deseada.
  • También existen otros métodos y herramientas similares.
  • Se piden recomendaciones sobre métodos de decodificación en la era de las redes neuronales.