Esta es una implementación no oficial del modelado de lenguaje conforme en papel. Encontré el papel interesante y quería jugar con él. Todavía en un estado muy temprano, la única garantía estadística rigurosa actualmente es que hay errores y malentendidos. Disculpe el estado del código actual. ¡Lo limpiaré, lo prometo!
Todavía no hay paquete PYPI disponible. Para instalar, clona el repositorio y ejecute
pip install poetry
poetry installLa API de Python aún no está puesta en piedra, pero el objetivo es facilitar experimentar con diferentes funciones de admisión, confianza grupal y rechazo. Potencialmente algunas combinaciones bastante interesantes con el reciente documento del modelo de idioma CFG. A continuación se muestra un ejemplo con GPT2.
from conformer import Calibrator , Sampler , Components
import torch
from random import randint
x = [
"What is the capital of France?" ,
"Which prime-minster of the UK was the biggest nob?" ,
]
from transformers import GPT2LMHeadModel , GPT2Tokenizer
model_name = "gpt2"
model = GPT2LMHeadModel . from_pretrained ( model_name ). cuda ()
tokenizer = GPT2Tokenizer . from_pretrained ( model_name )
tokenizer . pad_token_id = tokenizer . eos_token_id
calibrator = Calibrator (
model = model ,
tokenizer = tokenizer ,
calibration_prompts = x ,
)
calibrator . set_admission_function ( Components . admission . debug )
calibrator . set_group_confidence_function ( Components . group_confidence . debug , torch . tensor ([ 0.1 , 0.5 , 1 ]))
calibrator . add_rejection_function ( Components . rejection . debug , torch . tensor ([ 0.1 , 0.5 , 1 ]))
calibrator . set_FWER ( Components . FWER . debug )
lambdaz = calibrator . search ()
sampler = Sampler . from_calibrator ( calibrator )
sampler . sample_with_rejection ( "What is the capital of France?" )Esto utiliza algunas de las funciones de admisión/GF/FWER/rechazo incorporadas. También puede usar su propia función, por ejemplo:
calibrator . set_group_confidence_function ( lambda x : x > 0.5 , torch . tensor ([ 0.1 , 0.5 , 1 ]))