Investigadores de la Universidad Carnegie Mellon han presentado ReLM, un sistema para la Validación y consulta de grandes modelos lingüísticos (LLM) con expresiones regulares estándar. ReLM permite formalizar y simplificar muchas evaluaciones LLM convirtiendo métodos de evaluación complejos en consultas de expresiones regulares. El sistema puede optimizar la cobertura estadística y Pregunte a-sintonizar la cobertura hasta 15 veces en comparación con las búsquedas ad hoc modernas.
Sistema de inteligencia artificial para validar y consultar LLM mediante expresiones regulares estándar.
ReLM utiliza una representación gráfica compacta del espacio de soluciones consistente en Expresiones regulares y, a continuación, se compila en una representación específica del LLM. Esto permite a los usuarios medir el comportamiento de los LLM sin tener que entender los entresijos del modelo. Esto resulta especialmente útil a la hora de evaluar el comportamiento de los modelos lingüísticos en relación con problemas como los efectos de memoria, el sesgo de género, la toxicidad y la comprensión del lenguaje.
Validación de grandes modelos lingüísticos
ReLM también añade un sistema de descodificación limitado basado en la teoría de autómatas que permite a los usuarios crear consultas que incluyen el patrón de prueba y su ejecución. Evita cálculos innecesarios que podrían dar lugar a falsos negativos y garantiza que las pruebas sean más exhaustivas al incluir elementos del grupo de pruebas a menudo ignorados.
ReLM puede ejecutar consultas comunes con rapidez y reducir significativamente la sobrecarga de validación que requieren los LLM. Utiliza expresiones regulares para delinear formalmente las predicciones de los LLM y puede describir conjuntos de tamaño indeterminado. Los resultados de ReLM son sistemáticamente claros e inequívocos. El marco también identifica y crea las clases condicionales e incondicionales de las peticiones de consulta LLM. Se ha implementado un motor de inferencia de expresiones regulares que convierte eficazmente las expresiones regulares en autómatas finitos.
El marco ReLM puede utilizarse en programas de usuario de Python a través de una API específica. Los usuarios envían un objeto de consulta y un LLM definido en bibliotecas de terceros, como Hugging Face Transformers, para utilizar ReLM.
Para demostrar el potencial de ReLM, los investigadores han utilizado modelos GPT-2 para evaluar efectos de memoria, sesgo de género, toxicidad y tareas de comprensión del lenguaje. El objetivo es seguir mejorando las capacidades de optimización de consultas de ReLM y aplicarlo a más familias de modelos. Más detalles en la página GitHub del proyecto: https://github.com/mkuchnik/relm.
He aquí un ejemplo en Python que muestra cómo utilizar ReLM:
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))
Además de ReLM, el SDK de Konfuzio puede utilizarse para crear expresiones regulares a partir de ejemplos de texto. He aquí un ejemplo de cómo hacerlo:
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)En este ejemplo, verá cómo encontrar expresiones regex que coincidan con apariciones de la etiqueta "tipo de salario" en los datos de formación. A continuación, puede utilizar el tokenizador para crear una anotación para cada coincidencia en un documento.
ReLM y el SDK Konfuzio son herramientas valiosas para cualquiera que trabaje con grandes modelos lingüísticos. Proporcionan una forma simplificada y eficaz de validar y consultar modelos, además de ofrecer potentes formas de crear expresiones regulares a partir de ejemplos de texto. Con estas herramientas, puede estar seguro de que sus modelos son eficaces, precisos y justos.
