| import torch
|
| from model import load_qed, Qdevice, encode, sp
|
|
|
| model = load_qed("qed-base-300m.pt")
|
|
|
| @torch.no_grad()
|
| def generate(model, prompt, max_tokens=100):
|
| tokens = encode(prompt)
|
| x = torch.tensor(tokens,dtype=torch.long,device=Qdevice)[None, :]
|
| for _ in range(max_tokens):
|
| logits = model(x)
|
| next_token = torch.argmax(logits[:, -1],dim=-1)
|
| x = torch.cat([x, next_token[:, None]],dim=1)
|
| return sp.decode(x[0].tolist())
|
|
|
|
|
| if __name__ == "__main__":
|
|
|
| while True:
|
| prompt = input("\nPrompt: ")
|
| propmt = f"""User:
|
| {prompt}
|
| Assistant:"""
|
|
|
| if prompt == "exit":
|
| break
|
|
|
| print(generate(model, prompt)) |