File size: 3,793 Bytes
18cb820
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f6cc9cf
 
18cb820
 
f6cc9cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18cb820
 
f6cc9cf
18cb820
 
 
f6cc9cf
 
18cb820
 
 
 
f6cc9cf
18cb820
 
 
 
 
 
 
 
 
 
 
 
 
 
f6cc9cf
18cb820
 
 
 
 
 
 
 
 
 
 
 
f6cc9cf
18cb820
f6cc9cf
 
 
 
 
18cb820
 
 
 
 
 
f6cc9cf
18cb820
f6cc9cf
18cb820
 
f6cc9cf
18cb820
 
 
 
 
 
 
 
 
 
f6cc9cf
18cb820
 
 
 
 
 
 
 
 
 
 
 
 
 
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
---
datasets:
- snow_simplified_japanese_corpus
- mkqa
- llm-book/aio_v2
- paws
- lmqg/qg_jaquad
- SkelterLabsInc/JaQuAD
- karakuri-ai/dolly-15k-ja
- MBZUAI/Bactrian-X
- GEM/wiki_lingua
- csebuetnlp/xlsum
language:
- ja
---


# Aerner LM-v2

事前学習から全部日本語で学習させたモデルのバージョン2です。
LLaMAベースで、24GBのVRAMで事前学習できる規模に小さなモデルです。

Flash Attentionが使用されているOpenLLaMAを使用しています。
Wikipediaのデータが中心なので、回答はWikipediaっぽい感じになります。

V1に比べると、モノや場所などの概念を持っているようないないような。
データセットはV1と同じですが、学習ステップ数が76,000と延長。

学習記録はこちら
https://wandb.ai/tahomatx/huggingface/runs/xyy19rbx


Instruction-Answer例
※ モデルは、Instructionの後に、Answerを追記します。入力は、Instruction部分までを入力します。

```
### Instruction:
東京駅について説明してください。

### Context:



### Answer:
東急東横線・神楽坂駅から徒歩約10分のところに位置している。改札口は1ヶ所のみで、乗車券は駅前ロータリーに設置されており、自動券売機等の設備はない。出入口は1番から4番までの合計6ヵ所あり、それぞれのホームには駐輪場が設けられている(2019年3月現在)。 ⁇ 無人駅である。 ⁇ 簡易委託駅であったが、2018年3月31日をもって廃止され、有人駅時代の駅舎は取り壊されてしまった。
JR東日本ステーションサービスによる業務
```

```
### Instruction:
ドラえもんについて説明してください。


### Context:



### Answer:
2007年10月1日から2008年3月31日まで放送された約5分の短編ドラマ。主演は声優の山口智充、脚本・演出は鈴木亜美子。原作とは異なるストーリーが展開されており、登場人物の設定もそれに合わせて変更され ている。
```




サンプルコードです。

```python
from transformers import OpenLlamaForCausalLM, LlamaTokenizer, GenerationConfig, TextStreamer, AutoModelForCausalLM
import torch
import random
import numpy as np
import time


#
# Fix seed
#

seed = 42

random.seed(seed)
# Numpy
np.random.seed(seed)
# Pytorch
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.backends.cudnn.deterministic = True
torch.use_deterministic_algorithms = True

torch.set_default_dtype(torch.bfloat16)


model_id = "aerner/lm-v2"

text = """### Instruction:
東京駅について説明してください。

### Context:



### Answer:
"""

with torch.no_grad():
    tokenizer = LlamaTokenizer.from_pretrained(model_id)
    model = AutoModelForCausalLM.from_pretrained(
        model_id,
        device_map="auto",
        torch_dtype=torch.bfloat16,
        # load_in_8bit=True,
    )

    generation_config = GenerationConfig(
        max_new_tokens=256,
        min_new_tokens=1,
        early_stopping=True,

        do_sample=True,
        num_beams=8,

        temperature=1.0,
        top_p=0.6,

        penalty_alpha=0.4,
        no_repeat_ngram_size=4,
        repetition_penalty=1.4,

        remove_invalid_values=True,
        num_return_sequences=1,
    )

    start = time.time()

    tokenized_input = tokenizer(text, return_tensors="pt").to('cuda')
    generation_output = model.generate(
        input_ids=tokenized_input['input_ids'],
        generation_config=generation_config,
        return_dict_in_generate=True,
        output_scores=True,
    )
    for s in generation_output.sequences:
        output = tokenizer.decode(s)
        print(output)

    print(time.time() - start)

```