- 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
Comentarios en Hacker News