- Der Artikel behandelt die Hinzufügung des neuen grammatikbasierten Samplings in
llama.cpp, um die Generierung zu steuern und einzuschränken.
- Die llama-API erhält eine Datenstruktur, die eine kontextfreie Grammatik repräsentiert und Sampling auf Basis von Grammatikregeln erlaubt.
- Der Code für das Grammatik-Sampling modelliert einen nichtdeterministischen Kellerautomaten und verwaltet mehrere Stacks für die Parser-Zustände.
- Der Artikel bietet Beispiele für die Nutzung der Grammatik-API in verschiedenen Szenarien wie Schach, Arithmetik, JSON und Japanisch.
- Erwähnt werden mögliche Optimierungen wie das Kompilieren der Grammatik in einen Zustandsübergangstensor und deren Ausführung auf der GPU.
- Mitwirkende diskutieren das Hinzufügen von Unterstützung für Grammatikdateien, Verbesserungen am Grammatik-Parser und die Optimierung der Token-Auswertung.
- Die Nützlichkeit des Beitrags wird hervorgehoben, und es gibt den Vorschlag, die Sampling-API in ein separates Modul auszulagern.
- Andere Projekte wie lmql.ai und jsonformer, die ähnliche Ansätze für grammatikbasierte Generierung verwenden, werden erwähnt.
- Es gibt den Vorschlag, in der Grammatik auf vollständige Tokens zu verweisen und den Parser in die
llama.cpp-API einzubinden, um die Nutzbarkeit zu verbessern.
- Mitwirkende prüfen den Code, geben Feedback, diskutieren mögliche Verbesserungen und teilen ihre Erfahrungen mit der Funktion.
- Ein Softwareingenieur beteiligt sich an einem Projekt zum Grammatik-Sampling und stößt auf Probleme mit ARM64+CUDA.
- Ein Redakteur vermutet, dass das Problem mit einer Kombination von Toolchain-Paketen zusammenhängt, und bietet Hilfe an.
- Es gibt einen Pull Request zum Hinzufügen von LocalAI-Funktionen sowie den Vorschlag, im Projekt eine standardnähere BNF-Syntax zu verwenden.
- Das Verletzen der Grammatik wird als schlechtestmögliches Ergebnis angesehen; Backtracking wird als Option für künftige Überlegungen vorgeschlagen.
- Die Diskussion über die Implementierung von EBNF und das zu befolgende Format dauert an.
- Im neuesten Update wurde das Sampling auf vollständige Token-Übereinstimmungen beschränkt; weitere Verbesserungen für Fälle, in denen Tokens ungeeignet getrennt werden, wurden vorgeschlagen.
- Die Änderungen am Projekt wurden genehmigt und sind bereit zum Mergen; der Redakteur freut sich darauf, mit der aktualisierten Version zu experimentieren.
- Ein ähnliches Problem, an dem in einem anderen Projekt gearbeitet wird, wird erwähnt, ebenso der Vorschlag, Verteilungen lexikalischer Tokens vorab zu berechnen.
- Ein Softwareingenieur zeigt Interesse an diesem Ansatz und ist bereit, seine Meinung dazu zu teilen.
- Die Unterhaltung auf GitHub wird mit mehreren Teilnehmenden fortgesetzt.
1 Kommentare
Hacker-News-Kommentare