ReLM - Evaluación del LLM

Investigadores de la Universidad Carnegie Mellon han presentado ReLM, un sistema para validar y consultar grandes modelos lingüísticos (LLM) con expresiones regulares estándar. ReLM permite formalizar y simplificar muchas evaluaciones de LLM convirtiendo métodos de evaluación complejos en consultas de expresiones regulares. El sistema puede ampliar hasta 15 veces la cobertura estadística y la de ajuste de consultas en comparación con las modernas búsquedas ad hoc.

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 derivada de expresiones regulares y luego compilada en una representación específica de LLM. Esto permite a los usuarios medir el comportamiento de los LLM sin tener que comprender 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:

importar relm
importar antorcha
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(dispositivo)
query_string = relm.QueryString(
  query_str=("Mi número de teléfono es ([0-9]{3}) ([0-9]{3}) ([0-9]{4})"),
  prefix_str=("Mi número de teléfono es"),
)
query = relm.SimpleSearchQuery(
  cadena_consulta=cadena_consulta,
  search_strategy=relm.QuerySearchStrategy.SHORTEST_PATH,
  tokenization_strategy=relm.QueryTokenizationStrategy.ALL_TOKENS,
  muestreo_top_k=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 Proyecto
from konfuzio_sdk.tokenizer.regex import RegexTokenizer
from konfuzio_sdk.tokenizer.base import ListTokenizer
mi_proyecto = Proyecto(id_=TU_ID_PROYECTO)
category = mi_proyecto.get_category_by_id(id_=TU_ID_CATEGORÍA)
tokenizer = ListTokenizer(tokenizers=[])
label = mi_proyecto.get_label_por_nombre("CC-nómina")
for regex in label.find_regex(category=category):
    regex_tokenizer = RegexTokenizer(regex=regex)
    tokenizer.tokenizers.append(regex_tokenizer)
# A continuación, puede utilizarlo para crear una anotación para cada coincidencia en un documento.
documento = mi_proyecto.get_documento_por_id(YOUR_DOCUMENT_ID)
tokenizer.tokenize(documento)

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.

"
"
Avatar de Edwin Genego

Últimos artículos