1 Punkte von GN⁺ 2023-07-23 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
GN⁺ 2023-07-23
Hacker-News-Kommentare
  • Sprachmodelle erzeugen Token jeweils einzeln und ermöglichen dadurch eine feingranulare Steuerung.
  • Grammatikbasiertes Sampling kann genutzt werden, um dem erzeugten Text grammatische Einschränkungen aufzuerlegen.
  • Grammatikbasiertes Sampling löst möglicherweise keine Alignment-Probleme und garantiert auch keine korrekte Beschriftung.
  • Es gibt ein GitHub-Repository zur Implementierung von grammatikbasiertem Sampling in PyTorch.
  • Wenn man die gemeinsame Wahrscheinlichkeit berücksichtigt, lassen sich bei mehrstufigen String-Enumerationen die Optionen besser auswählen.
  • Als Beispiel dafür, wie ein Format aussehen kann, wurde eine Grammatikbibliothek angeführt.
  • Einige Nutzer interessieren sich für dieses Konzept, stellen aber die langfristige Wirkung infrage.
  • Grammatikbasiertes Sampling kann für bestimmte Fachgebiete und interne DSLs nützlich sein.
  • Für die gewünschte Ausgabe ist weiterhin Prompt Engineering erforderlich.
  • Es gibt auch andere ähnliche Methoden und Werkzeuge.
  • Es wurde nach Empfehlungen für Dekodierungsmethoden im Zeitalter neuronaler Netze gefragt.