Alpaca-LoRA まとめ
「Alpaca-LoRA」について軽くまとめました。
1. Alpaca-LoRA
「Alpaca-LoRA」は、「LoRA」を使用して「Alpaca」の結果を再現するためのコードが含まれているリポジトリです。「Raspberry Pi」で実行できる「text-davinci-003」に迫る品質のInstructモデルを提供しており、コードは 13b、30b、65bに簡単に拡張できます。
単一のRTX4090で5 時間以内に実行される学習コードに加えて、基本モデルとLoRAのダウンロードと推論、および結果として得られるLoRA重み自体のスクリプトを公開します。安価かつ効率的にファインチューニングするために、HuggingFaceの「PEFT」とTim Dettmersの「bitsandbytes」を使用します。
2. セットアップ
セットアップ方法は、次のとおりです。
(1) 依存関係のインストール。
$ pip install -r requirements.txt
(2) bitsandbytesが機能しない場合は、ソースからインストール。
Windows ユーザーは、これらの手順に従うことができます。
3. 学習コード
3-1. Inference (generate.py)
HuggingFace Model Hubからモデルを読み取り、「tloen/alpaca-lora-7b」からLoRAの重みを読み取り、指定された入力に対する推論のためにGradioインターフェイスを実行します。ユーザーは、これをモデルを使用するためのサンプル コードとして扱い、必要に応じて変更する必要があります。
3-2. Training (finetune.py)
LLaMAモデルへのPEFTの直接的な適用と、プロンプトの構築とトークン化に関連するいくつかのコードが含まれています。このファイルの上部には、自由に変更できるハードコーディングされた一連のハイパーパラメータがあります。
3-3. Checkpoint export (export_*_checkpoint.py)
HuggingFace形式およびPyTorch state_dictsにエクスポートするためにLoRA の重みをベースモデルにマージするスクリプトが含まれています。「llama.cpp」や「alpaca.cpp」などのプロジェクトで推論を実行したい時に役立ちます。
4. データセット
元の「Alpaca」データセットを含む「alpaca_data.json」に加えて、@gururise の助けを借りてさまざまなトークン化アーティファクトが削除された「alpaca_data_cleaned.json」も含まれています。 このファイルは、学習スクリプトでデフォルトで使用されるようになりました。
データの悪い例を修正することで、モデルのパフォーマンスを大幅に改善できる可能性があります。 実際、データセットの品質がボトルネックになる可能性があります。継続的に修正と学習の実施を行っており、それに応じてHuggingFace Hubの重みがが更新されています。 特に、応答の長さに関する問題に直面している場合は、重みとコードの最新バージョンを使用していることを確認する必要があります。
5. 日本語データの学習事例
日本語データを学習させている事例、参考になります。