File size: 3,384 Bytes
7f12c11
1bd9928
 
 
a3ffe6b
 
1bd9928
 
 
 
 
 
f1a9c62
1bd9928
 
 
a3ffe6b
 
7f12c11
 
30f10c1
7f12c11
a6258d3
 
bb58bd2
48ca770
bb58bd2
 
21ae24e
bb58bd2
725e05e
 
b42855b
725e05e
 
 
 
 
 
 
 
 
ad7d465
 
 
 
 
8d6371f
 
 
ad7d465
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
725e05e
ad7d465
 
725e05e
 
 
 
 
 
2d67a61
ad7d465
 
4b45e82
 
 
fc475a3
7f12c11
4b45e82
fc475a3
2d67a61
70c643c
4b45e82
 
7f12c11
4b45e82
 
 
7f12c11
4b45e82
2d67a61
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
base_model: meta-llama/Meta-Llama-3-8B-Instruct
datasets:
- cl-nagoya/auto-wiki-qa
- llm-jp/databricks-dolly-15k-ja
license_name: llama3
license_link: LICENSE
---

# 日本語向け Llama 3 8B

![eyecatch](eyecatch.webp)

# はじめに
このリポジトリはLlama 3を日本語化しようとしたモデルのリポジトリです。**4/23に更新**したため、新しくダウンロードすることをオススメします。

# ライセンス
[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によるインストラクションチューニングを5epoch行い、LoRAをマージしました。
これらの学習はすべて教師あり学習で行いました。
# ハードウェア
- NVIDIA A6000x2

# ソフトウェア
- transformers
- trl

# 学習時間
- 60 GPU hours