Views
No views yet

### 한국어: {sentence}</끝>
### 영어:### 영어: {sentence}</끝>
### 한국어:1from transformers import AutoModelForCausalLM, AutoTokenizer, StoppingCriteria, StoppingCriteriaList
2import torch
3repo = "squarelike/Gugugo-koen-7B-V1.1"
4model = AutoModelForCausalLM.from_pretrained(
5 repo,
6 load_in_4bit=True
7 device_map='auto'
8)
9tokenizer = AutoTokenizer.from_pretrained(repo)
10
11class StoppingCriteriaSub(StoppingCriteria):
12 def __init__(self, stops = [], encounters=1):
13 super().__init__()
14 self.stops = [stop for stop in stops]
15
16 def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor):
17 for stop in self.stops:
18 if torch.all((stop == input_ids[0][-len(stop):])).item():
19 return True
20
21 return False
22
23stop_words_ids = torch.tensor([[829, 45107, 29958], [1533, 45107, 29958], [829, 45107, 29958], [21106, 45107, 29958]]).to("cuda")
24stopping_criteria = StoppingCriteriaList([StoppingCriteriaSub(stops=stop_words_ids)])
25
26def gen(lan="en", x=""):
27 if (lan == "ko"):
28 prompt = f"### 한국어: {x}</끝>\n### 영어:"
29 else:
30 prompt = f"### 영어: {x}</끝>\n### 한국어:"
31 gened = model.generate(
32 **tokenizer(
33 prompt,
34 return_tensors='pt',
35 return_token_type_ids=False
36 ).to("cuda"),
37 max_new_tokens=2000,
38 temperature=0.3,
39 # no_repeat_ngram_size=5,
40 num_beams=5,
41 stopping_criteria=stopping_criteria
42 )
43 return tokenizer.decode(gened[0][1:]).replace(prompt+" ", "").replace("</끝>", "")
44
45
46print(gen(lan="en", x="Hello, world!"))