Google Colab で LLaMA-Factory を試す
「Google Colab」で「LLaMA-Factory」を試したので、まとめました。
1. LLaMA-Factory
「LLaMA-Factory」は、WebUIによる簡単操作でLLMを学習できるLLMファインチューニングフレームワークです。
サポートするモデルは、次のとおりです。
サポートする学習法は、次のとおりです。
サポートするデータセットは、次のとおりです。
依存関係は、次のとおりです。
ハードウェア要件は、次のとおりです。
2. 学習
今回は、「Elyza-7B」で「ござるデータセット」を学習させます。
Colabでの学習手順は、次のとおりです。
(1) Colabのノートブックを開き、メニュー「編集 → ノートブックの設定」で「GPU」の「A100」を選択。
(2) パッケージのインストール。
QLoRAを有効にしたい場合のみ、bitsandbytesもインストールします。
# パッケージのインストール
!git clone https://github.com/hiyouga/LLaMA-Factory.git
%cd LLaMA-Factory
!pip install -r requirements.txt
!pip install bitsandbytes
(3) コードの編集。
・src/train_web.py (7行目)
share=Trueを指定し、ColabでWebUIを利用できるようにします。
demo.launch(server_name="0.0.0.0", share=True, inbrowser=True)
・data/dataset_info.json (2行目)
「ござるデータセット」(gozaru_ja)を追加します。
{
"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のチャットテンプレート」(llama2_ja)を追加します。
register_template(
name="llama2_ja",
prefix=[
"<<SYS>>\n{{system}}\n<</SYS>>\n\n"
],
prompt=[
"[INST] {{query}} [/INST]"
],
system="あなたは誠実で優秀な日本人のアシスタントです。",
sep=[]
)
(4) 「LLaMA-Factory」の起動。
# LLaMA-Factoryの起動
!CUDA_VISIBLE_DEVICES=0 python src/train_web.py
(5) 「https://XXXX.gradio.live」のリンクが表示されたらクリック。
(6) モデルの設定。
今回は、「Elyza-7B」(LLama2ベース)の4bitのQLoRAを指定します。
(7) 「train」タブで学習の設定。
(8) 「Preview command」ボタンでコマンドを確認し、「Start」ボタンで学習開始。
33分ほどかかりました。
3. 推論
Colabでの推論手順は、次のとおりです。
(1) 「Refresh adapters」ボタンで更新した後、「Adapter path」で学習したアダプターを選択。
(2) 「Chat」タブで「Load model」ボタンを押した後、システムメッセージとユーザーメッセージを入力して「Submit」ボタンを押す。
「ござる」口調 (または「知らんけど」) になることを確認します。
4. 評価
Colabでの評価手順は、次のとおりです。
(1) 「Evaluate & Predict」タブで「Dataset」と「Max samples」を設定した後、「Preview command」ボタンでコマンドを確認し、「Start」ボタンで評価を開始。
「BLEU-4スコア」は、主に機械翻訳の品質を測定する指標です。4単語のn-gramの一致を測定します。30から40の範囲は良い、20から30はまあまあ、20未満は改善の余地があると考えることができます。
「ROUGEスコア」は、主に要約の品質を測定する指標です。生成されたテキストが参照テキストとどれだけ一致しているかを測定します。ROUGE-1は単語の一致、ROUGE-2は2単語の連続するn-gramの一致、ROUGE-Lは最長の共通の部分列を測定します。一般に、ROUGEスコアが高い(ROUGE-1やROUGE-2で70%以上、ROUGE-Lで50%以上)場合、生成されたテキストが参照テキストと高い一致度を持っていると評価されます。
この記事が気に入ったらサポートをしてみませんか?