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/)|(参考)|| |