
# 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/)|（参考）||  
{"language": "ja", "license": "mit", "tags": ["ja", "japanese", "gpt", "text-generation", "lm", "nlp"], "datasets": ["kunishou/databricks-dolly-15k-ja"], "widget": [{"text": "<s>\\n\u4ee5\u4e0b\u306f\u3001\u30bf\u30b9\u30af\u3092\u8aac\u660e\u3059\u308b\u6307\u793a\u3067\u3059\u3002\u8981\u6c42\u3092\u9069\u5207\u306b\u6e80\u305f\u3059\u5fdc\u7b54\u3092\u66f8\u304d\u306a\u3055\u3044\u3002\\n[SEP]\\n\u6307\u793a:\\n\u65e5\u672c\u3067\u4e00\u756a\u5e83\u3044\u6e56\u306f\uff1f\\n[SEP]\\n\u5fdc\u7b54:\\n"}]}
transformers pytorch safetensors gpt2 text-generation ja japanese gpt lm nlp dataset:kunishou/databricks-dolly-15k-ja license:mit autotrain_compatible endpoints_compatible text-generation-inference region:us
TAGS
#transformers #pytorch #safetensors #gpt2 #text-generation #ja #japanese #gpt #lm #nlp #dataset-kunishou/databricks-dolly-15k-ja #license-mit #autotrain_compatible #endpoints_compatible #text-generation-inference #region-us 

dolly-japanese-gpt-1b-clone
===========================


概要
--


rinna社の「japanese-gpt-1b」を、日本語データセット「databricks-dolly-15k-ja」を使用して学習させた推論モデルです。


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


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


モデルの使用方法
--------


学習済みモデルは、本家inugoya様のinu-ai/dolly-japanese-gpt-1bをご使用ください。  

モデルの使用方法につきましても、本家様の「モデルの使用方法」をご参照ください。  

自身の環境でfine tuning&推論を実行したい場合は、以降の内容を参照ください。


環境
--


### 各種バージョン



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


データセットの前処理には、alpaca\_preprocess.pyを使用しました。  

推論用python環境構築を使用してください。


### fine tuning用python環境構築


fine tuningには、fine\_tuning.ipynbを使用しました。  

python仮想環境構築方法は、以下の通りです。


### 推論用python環境構築


学習済みモデルを使用した推論には、main.pyを使用しました。  

python仮想環境構築方法は、以下の通りです。


開発
--


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


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


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


学習データは、「databricks-dolly-15k-ja」を使用しました。  

データセットの形式は、以下のようなalpacaと同様のフォーマットに変更しています。


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


1. 学習データセットの整形用python環境を構築し、仮想環境を起動する
2. 本リポジトリにtrain\_dataフォルダを作成
3. 「databricks-dolly-15k-ja」のdatabricks-dolly-15k-ja.jsonをダウンロードし、train\_dataフォルダ内に入れる
4. alpaca\_preprocess.pyを実行する
5. train\_dataフォルダ内に、「URL」が生成される


### 2. fine tuning


fine tuningは、「japanese-gpt-1b」にdatabricks-dolly-15k-ja.txtを適用しました。


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


1. fine tuning用python環境構築を構築し、仮想環境を起動する
2. alpaca\_preprocess.pyに記載の内容を実行する


### 3. 推論


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


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


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


1. 推論用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=URL ^ --do\_eval ^」を設定したほうがよかったかもしれない
* 学習に時間がかかるので、LoRAの仕組みなどがあればそちらを使用したい
* 学習に時間がかかるので、Google Colaboratory等を使用した方がいいかも


参考サイト
-----


サイト: inu-ai/dolly-japanese-gpt-1b, 何を参考にしたか: 学習のハイパーパラメータ, 備考: 
サイト: Datasets:kunishou/databricks-dolly-15k-ja, 何を参考にしたか: 学習に使用したデータ, 備考: 
サイト: スプラのブキ紹介文を自動生成してみた（GPT）, 何を参考にしたか: fine tuning環境構築と実行方法, 備考: 
サイト: Huggingface Transformers 入門 (28) - rinnaの日本語GPT-2モデルのファインチューニング, 何を参考にしたか: fine tuning環境構築と実行方法, 備考: 
サイト: HuggingFace Hub レポジトリ : Getting Started, 何を参考にしたか: huggingfaceへのpush方法。基本はgithubと同じ。, 備考: 「git lfs install」「huggingface-cli lfs-enable-largefiles .」がhugging faceならでは
サイト: GPT-2をファインチューニングしてニュース記事のタイトルを条件付きで生成してみた。, 何を参考にしたか: （参考）fine tuning環境構築と実行方法, 備考: 
サイト: Google Colab Proが日本から利用可能に, 何を参考にしたか: （参考）, 備考: 



### 各種バージョン ### 学習データセットの整形用python環境構築


データセットの前処理には、alpaca\_preprocess.pyを使用しました。  

推論用python環境構築を使用してください。 ### fine tuning用python環境構築


fine tuningには、fine\_tuning.ipynbを使用しました。  

python仮想環境構築方法は、以下の通りです。 ### 推論用python環境構築


学習済みモデルを使用した推論には、main.pyを使用しました。  

python仮想環境構築方法は、以下の通りです。


開発
--


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


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


学習データは、「databricks-dolly-15k-ja」を使用しました。  

データセットの形式は、以下のようなalpacaと同様のフォーマットに変更しています。


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


1. 学習データセットの整形用python環境を構築し、仮想環境を起動する
2. 本リポジトリにtrain\_dataフォルダを作成
3. 「databricks-dolly-15k-ja」のdatabricks-dolly-15k-ja.jsonをダウンロードし、train\_dataフォルダ内に入れる
4. alpaca\_preprocess.pyを実行する
5. train\_dataフォルダ内に、「URL」が生成される ### 2. fine tuning


fine tuningは、「japanese-gpt-1b」にdatabricks-dolly-15k-ja.txtを適用しました。


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


1. fine tuning用python環境構築を構築し、仮想環境を起動する
2. alpaca\_preprocess.pyに記載の内容を実行する ### 3. 推論


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


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


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


1. 推論用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=URL ^ --do\_eval ^」を設定したほうがよかったかもしれない
* 学習に時間がかかるので、LoRAの仕組みなどがあればそちらを使用したい
* 学習に時間がかかるので、Google Colaboratory等を使用した方がいいかも


参考サイト
-----


サイト: inu-ai/dolly-japanese-gpt-1b, 何を参考にしたか: 学習のハイパーパラメータ, 備考: 
サイト: Datasets:kunishou/databricks-dolly-15k-ja, 何を参考にしたか: 学習に使用したデータ, 備考: 
サイト: スプラのブキ紹介文を自動生成してみた（GPT）, 何を参考にしたか: fine tuning環境構築と実行方法, 備考: 
サイト: Huggingface Transformers 入門 (28) - rinnaの日本語GPT-2モデルのファインチューニング, 何を参考にしたか: fine tuning環境構築と実行方法, 備考: 
サイト: HuggingFace Hub レポジトリ : Getting Started, 何を参考にしたか: huggingfaceへのpush方法。基本はgithubと同じ。, 備考: 「git lfs install」「huggingface-cli lfs-enable-largefiles .」がhugging faceならでは
サイト: GPT-2をファインチューニングしてニュース記事のタイトルを条件付きで生成してみた。, 何を参考にしたか: （参考）fine tuning環境構築と実行方法, 備考: 
サイト: Google Colab Proが日本から利用可能に, 何を参考にしたか: （参考）, 備考:
TAGS
#transformers #pytorch #safetensors #gpt2 #text-generation #ja #japanese #gpt #lm #nlp #dataset-kunishou/databricks-dolly-15k-ja #license-mit #autotrain_compatible #endpoints_compatible #text-generation-inference #region-us 
 ### 各種バージョン ### 学習データセットの整形用python環境構築


データセットの前処理には、alpaca\_preprocess.pyを使用しました。  

推論用python環境構築を使用してください。 ### fine tuning用python環境構築


fine tuningには、fine\_tuning.ipynbを使用しました。  

python仮想環境構築方法は、以下の通りです。 ### 推論用python環境構築


学習済みモデルを使用した推論には、main.pyを使用しました。  

python仮想環境構築方法は、以下の通りです。


開発
--


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


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


学習データは、「databricks-dolly-15k-ja」を使用しました。  

データセットの形式は、以下のようなalpacaと同様のフォーマットに変更しています。


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


1. 学習データセットの整形用python環境を構築し、仮想環境を起動する
2. 本リポジトリにtrain\_dataフォルダを作成
3. 「databricks-dolly-15k-ja」のdatabricks-dolly-15k-ja.jsonをダウンロードし、train\_dataフォルダ内に入れる
4. alpaca\_preprocess.pyを実行する
5. train\_dataフォルダ内に、「URL」が生成される ### 2. fine tuning


fine tuningは、「japanese-gpt-1b」にdatabricks-dolly-15k-ja.txtを適用しました。


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


1. fine tuning用python環境構築を構築し、仮想環境を起動する
2. alpaca\_preprocess.pyに記載の内容を実行する ### 3. 推論


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


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


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


1. 推論用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=URL ^ --do\_eval ^」を設定したほうがよかったかもしれない
* 学習に時間がかかるので、LoRAの仕組みなどがあればそちらを使用したい
* 学習に時間がかかるので、Google Colaboratory等を使用した方がいいかも


参考サイト
-----


サイト: inu-ai/dolly-japanese-gpt-1b, 何を参考にしたか: 学習のハイパーパラメータ, 備考: 
サイト: Datasets:kunishou/databricks-dolly-15k-ja, 何を参考にしたか: 学習に使用したデータ, 備考: 
サイト: スプラのブキ紹介文を自動生成してみた（GPT）, 何を参考にしたか: fine tuning環境構築と実行方法, 備考: 
サイト: Huggingface Transformers 入門 (28) - rinnaの日本語GPT-2モデルのファインチューニング, 何を参考にしたか: fine tuning環境構築と実行方法, 備考: 
サイト: HuggingFace Hub レポジトリ : Getting Started, 何を参考にしたか: huggingfaceへのpush方法。基本はgithubと同じ。, 備考: 「git lfs install」「huggingface-cli lfs-enable-largefiles .」がhugging faceならでは
サイト: GPT-2をファインチューニングしてニュース記事のタイトルを条件付きで生成してみた。, 何を参考にしたか: （参考）fine tuning環境構築と実行方法, 備考: 
サイト: Google Colab Proが日本から利用可能に, 何を参考にしたか: （参考）, 備考: