tahomatx commited on
Commit
18cb820
1 Parent(s): 99789d2

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +113 -0
README.md ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ datasets:
3
+ - snow_simplified_japanese_corpus
4
+ - mkqa
5
+ - llm-book/aio_v2
6
+ - paws
7
+ - lmqg/qg_jaquad
8
+ - SkelterLabsInc/JaQuAD
9
+ - karakuri-ai/dolly-15k-ja
10
+ - MBZUAI/Bactrian-X
11
+ - GEM/wiki_lingua
12
+ - csebuetnlp/xlsum
13
+ language:
14
+ - ja
15
+ ---
16
+
17
+
18
+ # Aerner LM-v2
19
+
20
+ 事前学習から全部日本語で学習させたモデルのバージョン2です。
21
+ LLaMAベースで、24GBのVRAMで事前学習できる規模に小さなモデルです。
22
+
23
+ Flash Attentionが使用されているOpenLLaMAを使用しています。
24
+ Wikipediaのデータが中心なので、回答はWikipediaっぽい感じになります。
25
+
26
+ V1に比べると、モノや場所などの概念を持っているようないないような。
27
+ データセットはV1と同じですが、学習ステップ数が76,000と延長。
28
+
29
+
30
+ サンプルコード。モデルのロードは少し時間が掛かりますが、Inferenceは結構速いです。
31
+ GenerationConfigが必須。モデルが小さいので、beam searchや repeat関係は結構重要。
32
+
33
+
34
+ ```python
35
+ from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
36
+ import torch
37
+ import time
38
+ import random
39
+ import numpy as np
40
+
41
+ #
42
+ # Fix seed
43
+ #
44
+ seed = 42
45
+
46
+ random.seed(seed)
47
+ # Numpy
48
+ np.random.seed(seed)
49
+ # Pytorch
50
+ torch.manual_seed(seed)
51
+ torch.cuda.manual_seed(seed)
52
+ torch.backends.cudnn.deterministic = True
53
+ torch.use_deterministic_algorithms = True
54
+
55
+ torch.set_default_dtype(torch.bfloat16)
56
+
57
+
58
+
59
+ model_id = "aerner/lm-v1"
60
+
61
+
62
+ text = """### Instruction:
63
+ 東京駅について説明してください。
64
+
65
+
66
+ ### Context:
67
+
68
+
69
+
70
+ ### Answer:
71
+ """
72
+
73
+ with torch.no_grad():
74
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
75
+ tokenized_input = tokenizer(text, return_tensors="pt").to('cuda')
76
+
77
+ model = AutoModelForCausalLM.from_pretrained(
78
+ model_id, device_map="auto", torch_dtype=torch.bfloat16)
79
+
80
+ generation_config = GenerationConfig(
81
+ max_new_tokens=256,
82
+ min_new_tokens=1,
83
+ early_stopping=True,
84
+ do_sample=True,
85
+
86
+ num_beams=8,
87
+ temperature=1.0,
88
+ top_p=0.6,
89
+ penalty_alpha=0.4,
90
+ no_repeat_ngram_size=4,
91
+ repetition_penalty=1.4,
92
+
93
+ remove_invalid_values=True,
94
+ num_return_sequences=1,
95
+ )
96
+
97
+ start = time.time()
98
+
99
+ generation_output = model.generate(
100
+ input_ids=tokenized_input['input_ids'],
101
+ generation_config=generation_config,
102
+ return_dict_in_generate=True,
103
+ output_scores=True,
104
+ )
105
+
106
+ for s in generation_output.sequences:
107
+ output = tokenizer.decode(s)
108
+ print(output)
109
+
110
+ print(time.time() - start)
111
+
112
+ ```
113
+