File size: 3,453 Bytes
7f12c11
1bd9928
 
 
a3ffe6b
 
1bd9928
 
 
 
 
 
 
 
 
a3ffe6b
 
 
7f12c11
 
30f10c1
7f12c11
a6258d3
 
bb58bd2
742b09e
bb58bd2
 
21ae24e
bb58bd2
725e05e
 
b42855b
725e05e
 
 
 
 
 
 
 
 
ad7d465
 
 
 
 
8d6371f
 
 
ad7d465
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
725e05e
ad7d465
 
725e05e
 
 
 
 
 
 
ad7d465
 
4b45e82
 
 
fc475a3
7f12c11
4b45e82
fc475a3
 
70c643c
4b45e82
 
7f12c11
4b45e82
 
 
7f12c11
4b45e82
1bd9928
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
---
language:
- en
- ja
license: other
library_name: transformers
tags:
- facebook
- meta
- pytorch
- llama
- llama-3
datasets:
- cl-nagoya/auto-wiki-qa
- llm-jp/databricks-dolly-15k-ja
pipeline_tag: text-generation
license_name: llama3
license_link: LICENSE
---

# 日本語向け Llama 3 8B

![eyecatch](eyecatch.webp)

# はじめに
このリポジトリはLlama 3を日本語化しようとしたモデルのリポジトリです。

# ライセンス
[Llama 3 ライセンス](LICENSE)なので商用利用可能です。ただし、Llama 3ライセンスをよく読んで使ってください。
 
# 使い方

手っ取り早くやるなら[デモ](https://huggingface.co/spaces/alfredplpl/Llama-3-8B-Instruct-Ja-Demo)を使ってください。次点は[Colab](https://colab.research.google.com/drive/1le0T54BOr72dFeeCFtKxcTDBdIrnr7f6?usp=sharing)がおすすめです。
ローカルでやる場合は次のとおりです。

まず、ライブラリを次のようにインストールします。

```bash
pip install -U transformers accelerate
```

その後、以下のコードを実行してください。

```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("alfredplpl/Llama-3-8B-Instruct-Ja")
model = AutoModelForCausalLM.from_pretrained("alfredplpl/Llama-3-8B-Instruct-Ja", device_map="auto", torch_dtype=torch.bfloat16)

# プロンプトの準備
messages = [
    {
        'role': "system",
        'content': "あなたは日本語で回答するAIアシスタントです。"
    },
    {
        'role': "user",
        'content': "猫と犬、どっちが好き?"
    }
]
prompt=tokenizer.apply_chat_template(messages, tokenize=False)

# 推論の実行
input_ids = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
    **input_ids,
    max_new_tokens=128,
    do_sample=True,
    top_p=0.95,
    temperature=0.2,
    repetition_penalty=1.1,
    eos_token_id=[
        tokenizer.eos_token_id,
        tokenizer.convert_tokens_to_ids("<|eot_id|>")
    ],
)
print(tokenizer.decode(outputs[0]))
```

次のような結果が得られるはずです。

```python
<|begin_of_text|><|start_header_id|>system<|end_header_id|>

あなたは日本語で回答するAIアシスタントです。<|eot_id|><|start_header_id|>user<|end_header_id|>

猫と犬、どっちが好き?<|eot_id|><|start_header_id|>assistant<|end_header_id|>

私は犬が好きだ。  猫は素晴らしい動物だが、私の好きなものとは違う。  犬は愛情深く、忠実な友人である。  猫は自分自身を愛し、自分の時間を楽しむことができる。  私は犬が好きだ。<|eot_id|>
```

# 学習データ
- llm-jp/databricks-dolly-15k-ja
- cl-nagoya/auto-wiki-qa
- meta-llama/Meta-Llama-3-8B-Instruct

# 学習方法
meta-llama/Meta-Llama-3-8B-Instructに対して、cl-nagoya/auto-wiki-qaにある約240万件の学習データでLoRAによるインストラクションチューニングを1epoch行い、LoRAをマージしました。
その後、そのモデルに対して、llm-jp/databricks-dolly-15k-jaでLoRAによるインストラクションチューニングを1epoch行い、LoRAをマージしました。
これらの学習はすべて教師あり学習で行いました。
# ハードウェア
- NVIDIA A6000x2

# ソフトウェア
- transformers
- trl

# 学習時間
- 50 GPU hours