Views
No views yet
1from transformers import GPT2Tokenizer, GPT2LMHeadModel, StoppingCriteria, StoppingCriteriaList
2import torch
3model_path = "iopwsy/MatGPT-synthesis"
4tokenizer = GPT2Tokenizer.from_pretrained(model_path, pad_token = '<|endoftext|>')
5model = GPT2LMHeadModel.from_pretrained(model_path)
6model.config.pad_token_id = model.config.eos_token_id
7model.eval()
8class StopforGPT2(StoppingCriteria):
9 def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
10 return input_ids[0,-1].detach().cpu().numpy() == 50256
11
12def get_path(text):
13 with torch.no_grad():
14 res = model.generate(input_ids = tokenizer.encode_plus(text, return_tensors = 'pt'),
15 do_sample=True,
16 top_k = 10,
17 top_p = 0.95,
18 temperature = 0.1,
19 max_new_tokens = 300,
20 stopping_criteria=StoppingCriteriaList([StopforGPT2()]))
21 print(tokenizer.decode(res[0],skip_special_tokens=True))
22
23### example
24get_path("How to synthesis Li7La3Zr2O12?\n")