Dies ist eine inoffizielle Implementierung der konformen Sprachmodellierung des Papiers. Ich fand die Zeitung interessant und wollte damit herumspielen. Immer noch in einem sehr frühen Zustand - die einzige strenge, statistische Garantie ist derzeit, dass es Fehler und Missverständnisse gibt. Bitte entschuldigen Sie den Stand des aktuellen Code - ich werde es aufräumen, ich verspreche es!
Es ist noch kein PYPI -Paket verfügbar. Zum Installieren das Repository klonen und ausführen
pip install poetry
poetry installDie Python -API ist noch nicht in Stein gemeißelt, aber das Ziel ist es, es einfach zu machen, mit unterschiedlichen Aufnahmen, Gruppenvertrauen und Ablehnungsfunktionen zu experimentieren. Potenziell einige ziemlich interessante Kombinationen mit dem jüngsten CFG -Sprachmodellpapier. Unten ist ein Beispiel mit 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?" )Dies verwendet einige der integrierten Zulassungen/GF/FWER/Ablehnungsfunktionen. Kann auch einfach Ihre eigene Funktion verwenden, z. B.:
calibrator . set_group_confidence_function ( lambda x : x > 0.5 , torch . tensor ([ 0.1 , 0.5 , 1 ]))