初めに
microsoft/phi-2はSLMで小さい言語モデルで、fine tuningをすればかなり使い勝手がいいということなので、実際にやってみます。
以下のサイトを基本参考にして進めていきます
今回 fine tuningしたモデルは、以下で公開しています
環境
開発環境
- L4 GPU
- ubuntu22.04
モデル等の環境
- LLaMA-Factory (ハッシュ値 : bf73224)
- 学習のベースモデル microsoft/phi-2 2024/1/13 時点
- 学習データ bbz662bbz/databricks-dolly-15k-ja-gozaru
準備
まずは、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を最新にして再度試してください