Spaces:
Running on Zero
Running on Zero
File size: 1,243 Bytes
98d1e65 6c01195 98d1e65 6c01195 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 | import torch
from src.infra.generation import prompt
class TextGenerator:
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 generate(
self,
prompt_text: str,
max_new_tokens=300,
temperature=0.7,
top_p=None,
):
prompt_tokens = torch.tensor(
[self.tokenizer.encode(prompt_text)],
dtype=torch.long,
device=self.device,
)
generated_tokens = prompt(
tokens=prompt_tokens,
model=self.model,
context_length=self.context_length,
max_new_tokens=max_new_tokens,
temperature=temperature,
top_p=top_p,
)
return self.tokenizer.decode(
generated_tokens[0].tolist()
) |