中文

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&推論を実行したい場合は、以降の内容を参照ください。

環境

各種バージョン

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

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

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

fine tuning用python環境構築

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

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仮想環境構築方法は、以下の通りです。

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

開発

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

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

    学習データは、「 databricks-dolly-15k-ja 」を使用しました。 データセットの形式は、以下のような alpaca と同様のフォーマットに変更しています。

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

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

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

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

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

  • fine tuning用python環境構築 を構築し、仮想環境を起動する
  • alpaca_preprocess.pyに記載の内容を実行する
  • 3. 推論

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

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

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

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

  • 推論用python環境 を構築し、仮想環境を起動する
  • 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 学習のハイパーパラメータ
    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が日本から利用可能に (参考)