Spaces:
Running on Zero
Running on Zero
File size: 1,327 Bytes
98d1e65 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | from pydoc import text
import torch
class TextClassifier:
def __init__(
self,
model,
tokenizer,
context_length,
device=None,
):
self.model = model
self.tokenizer = tokenizer
self.context_length = context_length
if device is None:
device = (
"cuda"
if torch.cuda.is_available()
else "cpu"
)
self.device = torch.device(device)
self.model.to(self.device)
self.model.eval()
@torch.no_grad()
def classify(
self,
prompt_text: str
):
encoded = self.tokenizer.encode(prompt_text)
tokens, padding_mask = self.tokenizer.pad(
[encoded],
max_length=self.context_length,
)
encoded_tokens = torch.tensor(
tokens,
dtype=torch.long,
device=self.device,
)
encoded_mask = torch.tensor(
padding_mask,
dtype=torch.bool,
device=self.device,
)
logits = self.model(
encoded_tokens,
padding_mask=encoded_mask,
)
prediction = torch.argmax(
logits,
dim=-1,
)
return prediction.item()
|