見出し画像

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」を使用します。

Colab
Discord

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. 日本語データの学習事例

日本語データを学習させている事例、参考になります。

関連



この記事が気に入ったらサポートをしてみませんか?