FineTuningLLMsは、著者のdvgodoy氏によって作成されたGitHubリポジトリで、彼の著書A Hands-On Guide to Fine-Tuning LLMs with PyTorch and Hugging Faceに基づいています。このリポジトリは、大規模言語モデル(LLM)を単一のコンシューマGPU上で効率的に微調整することに焦点を当てた、実践的で体系的なガイドを開発者に提供します。PyTorch、LoRAアダプタ、量子化技術などのツールを使って、Hugging Faceエコシステムと連携しながらモデルのパフォーマンスを最適化する方法が説明されています。このリポジトリは、モデルのロードからデプロイまでの完全なプロセスをカバーしており、機械学習の実務家や研究者に適しています。ユーザーは、コードサンプルと詳細なドキュメントを通して、微調整、デプロイメント、トラブルシューティングについて学ぶことができます。このプロジェクトは、コミュニティへの貢献と学習を奨励するため、オープンソースとして共有されています。
機能一覧
- データの前処理、モデルのロード、パラメータの最適化を含む、完全なLLM微調整プロセスを提供します。
- LoRAと定量化テクニックの使用をサポートし、シングルGPUの微調整に必要なハードウェア要件を削減。
- Hugging Faceエコシステムとの統合により、事前にトレーニングされたモデルやツールの構成例を提供。
- モデル学習速度を最適化するためのFlash AttentionとPyTorch SDPAの性能比較を含む。
- 微調整されたモデルのGGUFフォーマットへの変換をサポート。
- Ollamaとllama.cppのデプロイメント・ガイドを提供し、モデルをオンラインにするプロセスを簡素化します。
- よくあるエラーとその解決策を掲載したトラブルシューティングガイド付き。
ヘルプの使用
設置プロセス
FineTuningLLMsはGitHubベースのコード・リポジトリであり、ユーザーは最初に必要な開発環境をインストールする必要がある。以下は詳細なインストールと設定の手順です:
- クローン倉庫
ターミナルを開き、以下のコマンドを実行してリポジトリをローカルにクローンする:git clone https://github.com/dvgodoy/FineTuningLLMs.git cd FineTuningLLMs
- Python環境のインストール
Python 3.8以降がシステムにインストールされていることを確認してください。依存関係を分離するために仮想環境を推奨します:python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
- 依存関係のインストール
リポジトリはrequirements.txt
ファイルには、必要なPythonライブラリ(PyTorch、Hugging Faceトランスフォーマーなど)が含まれています。以下のコマンドを実行してインストールしてください:pip install -r requirements.txt
- オプションツールの取り付け
- モデルをデプロイする必要がある場合は、Ollamaまたはllama.cppをインストールしてください。 公式ドキュメントによると、Ollamaは以下のコマンドでインストールできます:
curl https://ollama.ai/install.sh | sh
- GGUFフォーマットのモデルを使用する場合は、llama.cppをインストールし、そのGitHubページを参照して設定を完了する必要がある。
- モデルをデプロイする必要がある場合は、Ollamaまたはllama.cppをインストールしてください。 公式ドキュメントによると、Ollamaは以下のコマンドでインストールできます:
- 検証環境
リポジトリからサンプルスクリプトを実行するtest_environment.py
(もしあれば)、依存関係が正しくインストールされていることを確認する:python test_environment.py
主な機能
1.データの前処理
FineTuningLLMsは、ユーザーが微調整に適したトレーニングデータセットを準備するためのデータフォーマットツールを提供します。ユーザーは、入力テキストとターゲット出力を含むJSONまたはCSV形式のデータセットを準備する必要があります。のリポジトリ data_preprocessing.py
データのクリーニングやフォーマット用のスクリプト(サンプルファイル)が用意されています。コマンドを実行します:
python data_preprocessing.py --input input.json --output formatted_data.json
入力データがHugging Faceのデータセット仕様に準拠していることを確認する。 text
歌で応える label
.
2.モデルの微調整
このリポジトリの中核機能は、LoRAと定量化技術を使用して、1つのGPU上でモデルを微調整することです。ユーザーは、Hugging Faceが提供する事前学習済みモデル(LLaMAやMistralなど)から選択することができます。でLoRAパラメータ(ランクやアルファ値など)を設定します。 config/lora_config.yaml
ファイルが完成する。設定例:
lora:
rank: 8
alpha: 16
dropout: 0.1
微調整スクリプトを実行する:
python train.py --model_name llama-2-7b --dataset formatted_data.json --output_dir ./finetuned_model
スクリプトはモデルをロードし、LoRAアダプターを適用し、トレーニングを開始します。量子化オプション(8ビット整数など)はコマンドライン引数で有効にできる:
python train.py --quantization 8bit
3.パフォーマンスの最適化
リポジトリは Flash Attention と PyTorch SDPA attention の両方のメカニズムをサポートしています。これらのメカニズムについては train.py
正鵠を得る --attention flash
もしかしたら --attention sdpa
フラッシュ・アテンションは通常より高速ですが、より高いハードウェア互換性が必要です。以下のコマンドを実行して、パフォーマンスの違いを確認してください:
python benchmark_attention.py --model_name llama-2-7b
このスクリプトは、トレーニング速度とメモリ使用量のデータを出力し、ユーザーが適切な設定を簡単に選択できるようにする。
4.モデル展開
微調整されたモデルは、局所推論用にGGUF形式に変換することができる。変換スクリプトを実行してください:
python convert_to_gguf.py --model_path ./finetuned_model --output_path model.gguf
Ollamaを使ってモデルを配備する:
ollama serve --model model.gguf
ユーザーはHTTP APIやコマンドラインを使ってモデルとやり取りすることができる:
curl http://localhost:11434/api/generate -d '{"model": "model.gguf", "prompt": "你好,世界!"}'
5.トラブルシューティング
リポジトリには troubleshooting.md
ファイルには、メモリ・オーバーフローやモデル・ロードの失敗など、よくある問題がリストアップされています。ユーザーはこのファイルを参照してエラーを解決することができます。例えば、CUDAメモリ不足に遭遇した場合は、バッチサイズを小さくしてみてください:
python train.py --batch_size 4
注目の機能操作
LoRAの微調整
LoRA(Low-Rank Adaptation)はこのリポジトリのコア技術であり、ユーザーはモデルのパラメータの一部のみを更新することができ、計算量を大幅に削減することができます。ユーザーはモデルのパラメータを config/lora_config.yaml
でランク(rank)とスケーリングファクター(alpha)を設定します。ファインチューニングを実行すると、モデルのアテンションレイヤーにLoRAアダプターが自動的に適用されます。ユーザーは、以下のコマンドでLoRAの効果を確認することができます:
python evaluate.py --model_path ./finetuned_model --test_data test.json
定量的サポート
定量化はモデルの重みを16ビット浮動小数点数から8ビット整数に変換し、メモリフットプリントを削減します。ユーザーは、トレーニング中や推論中に定量化を有効にすることができる:
python train.py --quantization 8bit
定量化されたモデルは、NVIDIA RTX 3060のようなコンシューマー向けGPUでも効率的に動作する。
ローカル展開
Ollamaまたはllama.cppを使えば、ユーザーはモデルをローカルデバイスにデプロイすることができます。ollamaは簡単なウェブインターフェースを提供し、素早くテストすることができます。以下のコマンドを実行して、ウェブインターフェースを起動してください:
ollama web
ユーザーはブラウザからアクセスできる http://localhost:11434
モデルと対話する。
アプリケーションシナリオ
- パーソナライズされたチャットボット
ユーザは、カスタマーサービスやテクニカルサポートのようなドメイン固有のダイアログを生成するためにモデルを微調整することができる。ドメインに関連した対話のデータセットを準備し、微調整スクリプトを実行すると、モデルは特定のシナリオにより関連した回答を生成することができます。 - テキスト生成の最適化
ライターやコンテンツ制作者は、微調整されたモデルを使用して、技術文書やクリエイティブライティングなど、特定のスタイルに一致するテキストを生成できます。学習データを調整することで、モデルは目標とするテキストのスタイルを模倣することができます。 - ローカルモデルの展開
GGUFフォーマットとOllamaのサポートにより、低リソース環境でもモデルの実行が可能です。 - 教育・研究
学生や研究者は、このリポジトリを使ってLLMの微調整技術を学ぶことができます。量子化、LoRA、注意メカニズムの実装を理解するのに役立つコードサンプルとドキュメントは初心者に適しています。
品質保証
- FineTuningLLMは初心者に適していますか?
はい、このリポジトリは、基本的なPythonと機械学習の初心者のために、詳細なコードコメントとドキュメントを提供しています。ユーザーは基本的なPyTorchとHugging Faceの操作を理解する必要があります。 - ハイエンドGPUが必要ですか?
必要ありません。WarehouseはシングルGPUの微調整に重点を置いており、12GBのRAMを搭載したRTX 3060のようなコンシューマー向けGPUで実行可能で、LoRAと定量化技術によりハードウェア要件をさらに削減できる。 - 正しい事前学習モデルを選ぶには?
ユーザーはタスクの要件に応じてモデルを選択することができます。 Hugging Faceは、ほとんどのNLPタスクに適したLLaMAまたはMistralを提供しています。リポジトリのドキュメントでは、テスト用に小さなモデル(例えば7Bのパラメータ)から始めることを推奨しています。 - モデルを展開するために追加のツールが必要ですか?
はい、デプロイにはOllamaかllama.cppを使うことをお勧めします。どちらもオープンソースでインストールも簡単です。deploy_guide.md
.