LLaMA-Factoryでphi-2をござるデータセットでfine-tuningする

初めに

microsoft/phi-2はSLMで小さい言語モデルで、fine tuningをすればかなり使い勝手がいいということなので、実際にやってみます。

以下のサイトを基本参考にして進めていきます

note.com

今回 fine tuningしたモデルは、以下で公開しています

huggingface.co

環境

開発環境

  • L4 GPU
  • ubuntu22.04

モデル等の環境

準備

まずは、cloneをしてライブラリをインストールします

# パッケージのインストール
!git clone https://github.com/hiyouga/LLaMA-Factory.git
%cd LLaMA-Factory
!pip install -r requirements.txt
!pip install bitsandbytes

次に以下の箇所を書き換えていきます

src/train_web.py の7行目にpublic URLが発行されるように引数を変更します

 def main():
     demo = create_ui()
     demo.queue()
-    demo.launch(server_name="0.0.0.0", share=False, inbrowser=True)
+    demo.launch(server_name="0.0.0.0", share=True, inbrowser=True)

data/dataset_info.json の2行目にござるデータセットを使えるように追加します

"gozaru_ja": {
    "hf_hub_url": "bbz662bbz/databricks-dolly-15k-ja-gozarinnemon",
    "columns": {
      "prompt": "instruction",
      "query": "input",
      "response": "output"
    }
  },

src/llmtuner/data/template.py の554行目にllama2のテンプレートを追加します

register_template(
    name="llama2_ja",
    prefix=[
        "<<SYS>>\n{{system}}\n<</SYS>>\n\n"
    ],
    prompt=[
        "[INST] {{query}} [/INST]"
    ],
    system="あなたは誠実で優秀な日本人のアシスタントです。",
    sep=[]
)

WebUI実行

以下でWebUIを実行します

# LLaMA-Factoryの起動
!CUDA_VISIBLE_DEVICES=0 python src/train_web.py

学習の設定と実行

phi-2をござるデータで学習をした時のパラメータ設定は以下の通りです

基本タブ

  • Model name : Phi-2-2.7B
  • Quantization bit : 4
  • Prompt template : llama2_ja

trainタブ

  • Dataset : gozaru_ja
  • Cutoff length : 512
  • Learning rate : 2e-4
  • Max samples : 10000
  • Compute type : ft16
  • Batch size : 8
  • Maximum gradient norm : 0.3

学習結果

評価

Evaluate & Predict タブを使って、実際にfine tuningをしたモデルを評価します

評価パラメータは以下の通りです

また評価値は以下の通りです.

{
    "predict_bleu-4": 1.91626,
    "predict_rouge-1": 23.59498,
    "predict_rouge-2": 4.67667,
    "predict_rouge-l": 10.29241,
    "predict_runtime": 24.0164,
    "predict_samples_per_second": 0.416,
    "predict_steps_per_second": 0.083
}

BLEU-4スコア(主に機械翻訳の品質を測定する指標)もROUGEスコア(主に要約の品質を測定する指標)もかなり低いため、性能はかなり低いと考えて良さそうです

Chat結果

学習が終わったので、実際にチャットをしてみました.
結果はかなり悪く、語尾は一切変化していませんでした

備考

1/14 時点でphi-2を使う人が以下の問題があるので、LLaMA-Factoryを最新にして再度試してください

github.com