ACL 2024採択!LLaMA-Factoryが変えるAIモデル開発の常識
おっと、あなたはソフトウェアエンジニアさんですね!ここでは、「hiyouga/LLaMA-Factory」という、とっても強力なツールキットについて、恐怖の館...ではなく、知識の館で詳しくご紹介しましょう!
「hiyouga/LLaMA-Factory」は、まるで高性能なお化け除けのお札のように、大規模言語モデル(LLMs)やマルチモーダルモデル(VLMs)のファインチューニングを効率的かつ統一的に行うための強力なフレームワークです。
| 特徴 | 役立つポイント (エンジニア視点) |
| 統一された効率的なファインチューニング | 100以上のモデルに対応し、どのモデルでも一貫した方法で学習パイプラインを構築できます。新しいモデルが出るたびに手順を大きく変える必要がありません。 |
| パラメーター効率の良い学習 (PEFT) | LoRAやQLoRAなどの技術をサポートし、少ない計算リソースと時間で、モデルの性能を向上させられます。まるで省エネ幽霊のようです! |
| 幅広いモデルサポート | LLaMA、Mistral、Qwenなど、多岐にわたる著名なLLM・VLMに対応。多様な案件や研究に対応できる柔軟性が手に入ります。 |
| 使いやすいインターフェース | コマンドラインやWeb UI(Gradio)を通じて操作可能。実験管理やデバッグが非常に楽になります。 |
結論
このツールを使えば、モデル特有の煩雑な設定から解放され、ビジネスロジックや応用開発により集中できるようになります。モデルのカスタマイズが、驚くほど手軽に、そして強力になるんです!
それでは、この強力なツールキットをあなたの環境に導入する方法です。怖がらなくても大丈夫、一般的なPython環境があればスムーズに進められますよ!
まず、GitHubからリポジトリを持ってきます。
# 怖がらずに、お屋敷の鍵を開けましょう
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
次に、必要な依存関係をインストールします。
# 「.」はこのフォルダ、「[torch,metrics]」は必要な幽霊(依存ライブラリ)です
# torch: PyTorch関連, metrics: 評価指標関連
pip install -e ".[torch,metrics]"
注記
GPU環境(NVIDIAなど)での利用を前提としています。bitsandbytesなどのライブラリは、QLoRAなど特定の効率化手法を使う場合に必要に応じて追加インストールします。
ファインチューニングしたいベースモデルの重みをダウンロードし、適切な場所に配置しておく必要があります。Hugging Face Hubからダウンロードするのが一般的です。
ここでは、実際にファインチューニングを実行するための基本的なコマンドラインの例をご紹介します。
最も一般的なLoRA (Low-Rank Adaptation)を使ったファインチューニングの例です。
# この呪文で、モデルが賢くなります
# run_sft.sh は設定ファイルを実行するためのスクリプト名で、詳細はリポジトリで確認できます
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
--stage sft \
--model_name_or_path path/to/your/llama-7b-base \
--do_train \
--dataset your_custom_dataset_name \
--template llama2 \
--finetuning_type lora \
--lora_target q_proj,v_proj \
--output_dir path/to/your/output \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_steps 500 \
--num_train_epochs 3.0 \
--plot_loss \
--fp16
| パラメータ | 意味するもの |
--stage sft | Supervised Fine-Tuning(教師ありファインチューニング)を実行します。 |
--model_name_or_path | ベースとなるモデルの重みがある場所を指定します。 |
--dataset | 使用するカスタムデータセット(事前に指定された形式で用意)の名前を指定します。 |
--finetuning_type lora | LoRAという効率的なファインチューニング手法を使います。 |
--output_dir | 学習結果の重みやログを保存する場所です。 |
--fp16 | 半精度浮動小数点数(省メモリ)で高速化します。 |
コードを書かずに、Webブラウザ上で設定や学習の実行、さらにはデモも行えるGUIを立ち上げることもできます。
# こちらは「呪文の書」の代わりに、便利なGUIを呼び出す呪文です
python src/web_ui.py
このコマンドを実行すると、ローカル環境の特定のポート(例
http://127.0.0.1:7860)でWebインターフェースが立ち上がり、視覚的に操作できるようになります。
LLaMA-Factoryを使えば、複雑なLLMのファインチューニングも、このお化け屋敷のコントのように、楽しく、そして効率的にこなせるようになりますよ!