Views
No views yet
1from peft import PeftModel, PeftConfig
2from transformers import AutoModelForSequenceClassification, Pipeline, AutoTokenizer
3
4config = PeftConfig.from_pretrained("ctu-aic/lora-xlm-roberta-large-squad2-csfever_v2-f1")
5model = AutoModelForSequenceClassification.from_pretrained(config.base_model_name_or_path)
6model = PeftModel.from_pretrained(model, config)
7tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
8
9#pipeline for NLI
10class NliPipeline(Pipeline):
11 def _sanitize_parameters(self, **kwargs):
12 preprocess_kwargs = {}
13 if "evidence" in kwargs:
14 preprocess_kwargs["evidence"] = kwargs["evidence"]
15 return preprocess_kwargs, {}, {}
16
17 def preprocess(self, claim, evidence=""):
18 model_input = self.tokenizer(claim, evidence, return_tensors=self.framework, truncation=True)
19 return model_input
20 def _forward(self, model_inputs):
21 outputs = self.model(**model_inputs)
22 return outputs
23
24 def postprocess(self, model_outputs):
25 logits = model_outputs.logits
26
27 predictions = torch.argmax(logits, dim=-1)
28 return {"logits": logits, "label": int(predictions[0])}
29
30nli_pipeline = NliPipeline(model=model, tokenizer=tokenizer)
31
32nli_pipeline("claim", "evidence")