Carnegie Mellon University-Forscher haben ReLM vorgestellt, ein System zur Validierung und Abfrage von Large Language Models (LLMs) mit Standard-Regular Expressions. ReLM ermöglicht die Formalisierung und Vereinfachung vieler LLM-Evaluierungen, indem komplexe Evaluierungsmethoden in Regular Expression-Abfragen umgewandelt werden. Das System kann die statistische Abdeckung und die Prompt-Tuning-Abdeckung um bis zu 15 Mal im Vergleich zu modernen Ad-hoc-Suchen erweitern.
Dieser Artikel wurde auf Deutsch verfasst und redaktionell überprüft. Weitere Sprachen stehen als automatische Übersetzung zur Verfügung. Wir freuen uns über Feedback am Ende des Artikels.
KI-System zur Validierung und Abfrage von LLMs unter Verwendung regulärer Standardausdrücke
ReLM verwendet eine kompakte Graphen-Darstellung des Lösungsraums, die aus Regular Expressions abgeleitet und dann in eine LLM-spezifische Darstellung kompiliert wird. Dies ermöglicht es den Benutzern, das Verhalten von LLMs zu messen, ohne die Feinheiten des Modells verstehen zu müssen. Dies ist besonders nützlich bei der Bewertung des Verhaltens von Sprachmodellen in Bezug auf Bedenken wie Merk-Effekte, Geschlechtsvoreingenommenheit, Toxizität und Sprachverständnis.
Validierung von Large Language Models
ReLM fügt auch ein begrenztes Decodierungssystem basierend auf der Automatentheorie hinzu, das es Benutzern ermöglicht, Abfragen zu erstellen, die das Testmuster und dessen Ausführung umfassen. Es vermeidet unnötige Berechnungen, die zu Falsch-Negativen führen könnten, und stellt sicher, dass Tests gründlicher durchgeführt werden, indem oft ignorierte Testgruppenelemente einbezogen werden.
ReLM kann gängige Abfragen schnell ausführen und den Validierungsaufwand, der von LLMs benötigt wird, erheblich reduzieren. Es verwendet Regular Expressions, um LLM-Prognosen formal zu umreißen und kann Mengen von unbestimmter Größe beschreiben. Die Ergebnisse von ReLM sind durchweg klar und eindeutig. Das Framework identifiziert und erstellt auch die bedingten und unbedingten Klassen von LLM-Abfrageanfragen. Es wurde ein Regular Expression-Inferenz-Engine implementiert, der Regular Expressions effizient in endliche Automaten konvertiert.
Das ReLM-Framework kann in Python-Benutzerprogrammen durch eine spezifische API verwendet werden. Benutzer senden ein Query Object und ein LLM, wie sie in Drittanbieterbibliotheken wie Hugging Face Transformers definiert sind, um ReLM zu verwenden.
Um das Potenzial von ReLM zu demonstrieren, haben die Forscher GPT-2-Modelle verwendet, um Merk-Effekte, Geschlechtsvoreingenommenheit, Toxizität und Sprachverständnisaufgaben zu bewerten. Das Ziel besteht darin, die Abfrageoptimierungsfähigkeiten von ReLM weiter zu verbessern und es auf mehr Modellfamilien anzuwenden. Weitere Einzelheiten finden Sie auf der GitHub-Seite des Projekts: https://github.com/mkuchnik/relm.
Hier ist ein Python-Beispiel, das zeigt, wie man ReLM verwendet:
import relm
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "gpt2-xl"
device = "cuda" if torch.cuda.is_available() else "cpu"
tokenizer = AutoTokenizer.from_pretrained(model_id, use_fast=True)
model = AutoModelForCausalLM.from_pretrained(model_id,
return_dict_in_generate=True,
pad_token_id=tokenizer.eos_token_id)
model = model.to(device)
query_string = relm.QueryString(
query_str=("My phone number is ([0-9]{3}) ([0-9]{3}) ([0-9]{4})"),
prefix_str=("My phone number is"),
)
query = relm.SimpleSearchQuery(
query_string=query_string,
search_strategy=relm.QuerySearchStrategy.SHORTEST_PATH,
tokenization_strategy=relm.QueryTokenizationStrategy.ALL_TOKENS,
top_k_sampling=40,
num_samples=10,
)
ret = relm.search(model, tokenizer, query)
for x in ret:
print(tokenizer.decode(x))
Neben ReLM kann das Konfuzio SDK verwendet werden, um Regex aus Textbeispielen zu erstellen. Hier ist ein Beispiel, wie man das macht:
from konfuzio_sdk.data import Project
from konfuzio_sdk.tokenizer.regex import RegexTokenizer
from konfuzio_sdk.tokenizer.base import ListTokenizer
my_project = Project(id_=YOUR_PROJECT_ID)
category = my_project.get_category_by_id(id_=YOUR_CATEGORY_ID)
tokenizer = ListTokenizer(tokenizers=[])
label = my_project.get_label_by_name("Lohnart")
for regex in label.find_regex(category=category):
regex_tokenizer = RegexTokenizer(regex=regex)
tokenizer.tokenizers.append(regex_tokenizer)
# Sie können es dann verwenden, um für jede Übereinstimmung in einem Dokument eine Annotation zu erstellen.
document = my_project.get_document_by_id(YOUR_DOCUMENT_ID)
tokenizer.tokenize(document)
In diesem Beispiel sehen Sie, wie Sie Regex-Ausdrücke finden, die mit Vorkommen des Labels „Lohnart“ in den Trainingsdaten übereinstimmen. Sie können dann den Tokenizer verwenden, um für jede Übereinstimmung in einem Dokument eine Annotation zu erstellen.
ReLM und das Konfuzio SDK sind wertvolle Tools für alle, die mit großen Sprachmodellen arbeiten. Sie bieten eine vereinfachte und effektive Möglichkeit, Modelle zu validieren und abzufragen, und bieten zusätzlich leistungsfähige Möglichkeiten, um Regex aus Textbeispielen zu erstellen. Mit diesen Tools können Sie sicherstellen, dass Ihre Modelle effektiv, präzise und fair sind.