File size: 2,327 Bytes
e0e10ff
a5d9c97
 
 
 
e0e10ff
a5d9c97
 
8931f27
8e5ab0b
 
ee2b7f2
8931f27
 
 
 
 
 
 
 
 
 
 
 
 
359f5b5
8931f27
359f5b5
 
 
 
a5d9c97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
license: cc-by-sa-4.0
datasets:
- izumi-lab/llm-japanese-dataset
library_name: transformers
---

# モデル
- **rinna/bilingual-gpt-neox-4b-instruction-sft**に、84,300件の和訳データセットをフルパラメータファインチューニングしたモデルです。
- **izumi-lab/llm-japanese-dataset**から和訳タスクのデータセットのみ抽出し、学習に使用しました。
- instructionに「以下の英語を日本語に翻訳してください。」と記載されたデータのみ機械的に抽出し、学習に使用しました。
- [ryota39/Tora_4B](https://huggingface.co/ryota39/Tora_4B)も公開しておりますのでご覧ください。

# 学習
- ハードウェア: 1 x NVIDIA RTX A6000(VRAM48GB)
- 使用VRAM: 32~34GB
- 学習時間: 5h 39m 37s
- train/epoch: 2.61
- train/loss: 0.9958
- eval/loss: 0.9223530292510986
- optimizer: Adam
- learning_rate: 1.5e-5
- lr_scheduler_type: "cosine"
- warmup_steps: 500

# 学習結果

![image/png](https://cdn-uploads.huggingface.co/production/uploads/651e3f30ca333f3c8df692b8/YkS9jxyzpAjEtRSYnGD-O.png)


![image/png](https://cdn-uploads.huggingface.co/production/uploads/651e3f30ca333f3c8df692b8/HuygNqtKvB6GJOpnFbui2.png)

# コード
```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("rinna/bilingual-gpt-neox-4b-instruction-sft", use_fast=False)
model = AutoModelForCausalLM.from_pretrained("ryota39/bilingual-gpt-neox-4b-instruction-sft-en-ja-84k")

if torch.cuda.is_available():
    model = model.to("cuda")

prompt = list()
prompt.append("指示: 以下の英語を日本語に翻訳してください。")
prompt.append("ユーザー: Do you deliver on Sundays?")
prompt.append("システム: ")
prompt = '\n'.join(prompt)
print(prompt)

token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")

with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        max_new_tokens=512,
        do_sample=False,
        temperature=0.7,
        top_p=0.85,
        pad_token_id=tokenizer.pad_token_id,
        bos_token_id=tokenizer.bos_token_id,
        eos_token_id=tokenizer.eos_token_id
    )

output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1):])
print(output)
```