File size: 7,730 Bytes
b379b2a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
596a2f7
6f6ef66
596a2f7
6f6ef66
596a2f7
6f6ef66
596a2f7
6f6ef66
596a2f7
89d3eac
 
 
 
 
528c6bf
89d3eac
6f6ef66
654f364
6f6ef66
654f364
6f6ef66
 
 
 
 
 
 
654f364
6f6ef66
654f364
6f6ef66
 
654f364
6f6ef66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
654f364
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6f6ef66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
---
language: ja
tags:
- ja
- japanese
- gpt
- text-generation
- lm
- nlp
license: mit
datasets:
- kunishou/databricks-dolly-15k-ja
widget:
- text: >-
    <s>\n以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。\n[SEP]\n指示:\n日本で一番広い湖は?\n[SEP]\n応答:\n
---

# dolly-japanese-gpt-1b-clone

## 概要

rinna社の「[japanese-gpt-1b](https://huggingface.co/rinna/japanese-gpt-1b)」を、日本語データセット「[databricks-dolly-15k-ja](https://huggingface.co/datasets/kunishou/databricks-dolly-15k-ja)」を使用して学習させた推論モデルです。  

学習方法は、[inu-ai/dolly-japanese-gpt-1b](https://huggingface.co/inu-ai/dolly-japanese-gpt-1b)を参照しました。モデルは[inu-ai/dolly-japanese-gpt-1b](https://huggingface.co/inu-ai/dolly-japanese-gpt-1b)にあるものと類似したものとなっています。当方の自学のために再作成しています。  

学習データやモデルを作成および配布してくださった方々に心から感謝申し上げます。  


## モデルの使用方法

学習済みモデルは、本家[inugoya](https://huggingface.co/inu-ai)様の[inu-ai/dolly-japanese-gpt-1b](https://huggingface.co/inu-ai/dolly-japanese-gpt-1b)をご使用ください。  
モデルの使用方法につきましても、本家様の「[モデルの使用方法](https://huggingface.co/inu-ai/dolly-japanese-gpt-1b#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95)」をご参照ください。  
自身の環境でfine tuning&推論を実行したい場合は、以降の内容を参照ください。  

## 環境

### 各種バージョン

|項目|バージョン|備考|
|:--|:--|:--|
|OS|Windows 10||
|GPU|RTX4070 VRAM12GB||
|python|3.9.6|pyenv localにて設定。下記のすべての環境において同一。|
|python library|requirements.txt参照||
|CUDA toolkit|cu117||

### 学習データセットの整形用python環境構築

データセットの前処理には、alpaca_preprocess.pyを使用しました。  
[推論用python環境構築](#推論用python環境構築)を使用してください。  

### fine tuning用python環境構築

fine tuningには、fine_tuning.ipynbを使用しました。  
python仮想環境構築方法は、以下の通りです。  

```powershell
pyenv local 3.9.6
mkdir fine_tuning_ # 仮想環境名
python -m venv ./
cd Script
./activate.ps1
cd <本リポジトリのパス>
pip install -r requirements_finetuning.txt
pip install numpy --pre torch torchvision torchaudio --force-reinstall --index-url https://download.pytorch.org/whl/nightly/cu117
```

### 推論用python環境構築

学習済みモデルを使用した推論には、main.pyを使用しました。  
python仮想環境構築方法は、以下の通りです。  

```powershell
pyenv local 3.9.6
mkdir rinna_gpt_1b # 仮想環境名
python -m venv ./
cd Script
./activate.ps1
cd <本リポジトリのパス>
# 下記だけ違う
pip install -r requirements.txt
pip install numpy --pre torch torchvision torchaudio --force-reinstall --index-url https://download.pytorch.org/whl/nightly/cu117
```

## 開発

本リポジトリを使用した開発手順は以下の通りです。  

1. 学習データセットの整形
2. fine tuning
3. 推論

### 1. 学習データセットの整形

学習データは、「[databricks-dolly-15k-ja](https://huggingface.co/datasets/kunishou/databricks-dolly-15k-ja)」を使用しました。  
データセットの形式は、以下のような[alpaca](https://github.com/tatsu-lab/stanford_alpaca)と同様のフォーマットに変更しています。

```powershell
<s>
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。
[SEP]
指示:
あなたは何でも正確に答えられるAIです。
[SEP]
入力:
User:日本で一番高い山は?
[SEP]
応答:
富士山
</s>
```

学習データセットの整形手順は以下の通りです。  

1. [学習データセットの整形用python環境](#学習データセットの整形用python環境構築)を構築し、仮想環境を起動する
2. 本リポジトリにtrain_dataフォルダを作成
3. 「[databricks-dolly-15k-ja](https://huggingface.co/datasets/kunishou/databricks-dolly-15k-ja)」のdatabricks-dolly-15k-ja.jsonをダウンロードし、train_dataフォルダ内に入れる
4. alpaca_preprocess.pyを実行する
5. train_dataフォルダ内に、「databricks-dolly-15k-ja.txt」が生成される

### 2. fine tuning

fine tuningは、「[japanese-gpt-1b](https://huggingface.co/rinna/japanese-gpt-1b)」にdatabricks-dolly-15k-ja.txtを適用しました。  

実施手順は以下の通りです。  

1. [fine tuning用python環境構築](#fine-tuning用python環境構築)を構築し、仮想環境を起動する
2. alpaca_preprocess.pyに記載の内容を実行する

### 3. 推論

fine tuningでできたmodelを使用した推論を実行します。  

推論結果は、以下の通りです。  

```python
Assistant:富士山
Assistant:琵琶湖です。
Assistant:富士山
Assistant:南米大陸にあるチリのパタゴニア湖です。
Assistant:何でも正確に答えられるAIです。
```

推論の手順は以下の通りです。  

1. [推論用python環境](#推論用python環境構築)を構築し、仮想環境を起動する
2. main.pyを実行する

## モデルに関して

下記は、run_clm実行時に自動生成された内容です。  

### Training hyperparameters

The following hyperparameters were used during training:
- learning_rate: 1e-07
- train_batch_size: 2
- eval_batch_size: 8
- seed: 42
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: constant
- num_epochs: 18.0

### Framework versions

- Transformers 4.29.0.dev0
- Pytorch 2.1.0.dev20230503+cu117
- Datasets 2.12.0
- Tokenizers 0.13.3

## 備考

- run_clmを使用した学習時、do_evalを設定していないことが課題
  - 「--validation_file=train.txt ^  --do_eval ^」を設定したほうがよかったかもしれない 
- 学習に時間がかかるので、LoRAの仕組みなどがあればそちらを使用したい
- 学習に時間がかかるので、Google Colaboratory等を使用した方がいいかも

## 参考サイト

|サイト|何を参考にしたか|備考|  
|--|--|--|  
|[inu-ai/dolly-japanese-gpt-1b](https://huggingface.co/inu-ai/dolly-japanese-gpt-1b)|学習のハイパーパラメータ||  
|[Datasets:kunishou/databricks-dolly-15k-ja](https://huggingface.co/datasets/kunishou/databricks-dolly-15k-ja)|学習に使用したデータ||  
|[スプラのブキ紹介文を自動生成してみた(GPT)](https://zenn.dev/thr3a/articles/eed434cb20339a)|fine tuning環境構築と実行方法||  
|[Huggingface Transformers 入門 (28) - rinnaの日本語GPT-2モデルのファインチューニング](https://note.com/npaka/n/n8a435f0c8f69)|fine tuning環境構築と実行方法||  
|[HuggingFace Hub レポジトリ : Getting Started](https://torch.classcat.com/2023/01/01/huggingface-hub-repositories-getting-started/)|huggingfaceへのpush方法。基本はgithubと同じ。|「git lfs install」「huggingface-cli lfs-enable-largefiles .」がhugging faceならでは|
|[GPT-2をファインチューニングしてニュース記事のタイトルを条件付きで生成してみた。](https://qiita.com/m__k/items/36875fedf8ad1842b729)|(参考)fine tuning環境構築と実行方法||
|[Google Colab Proが日本から利用可能に](https://webbigdata.jp/post-9927/)|(参考)||