Home
Login

LoRA(Low-Rank Adaptation)技術を使用して、コンシューマーレベルのハードウェアでLLaMAモデルを微調整し、ChatGPTのような指示に従うAIアシスタントを迅速に構築します。

Apache-2.0Jupyter Notebook 18.9ktloen Last Updated: 2024-07-29

Alpaca-LoRA プロジェクト詳細

プロジェクト概要

Alpaca-LoRA は、tloen によって開発されたオープンソースプロジェクトで、低ランク適応 (LoRA) 技術を使用して、コンシューマーグレードのハードウェア上でスタンフォード大学の Alpaca モデルの効果を再現することを目的としています。このプロジェクトは、text-davinci-003 と同等の品質の指示追従モデルを提供し、Raspberry Pi 上でも実行できます (研究目的)。コードは、13B、30B、65B モデルに簡単に拡張できます。

核心技術

LoRA(低ランク適応)技術

  • 定義: LoRA は、事前学習済みモデルに少量の学習可能なパラメータを追加することでモデルを適応させる、パラメータ効率の高い微調整方法です。
  • 利点: トレーニングに必要な計算リソースとストレージスペースを大幅に削減します。
  • 応用: 一般ユーザーが単一のコンシューマーグレード GPU 上で大規模言語モデルを微調整できるようにします。

基礎アーキテクチャ

  • 基礎モデル: Meta の LLaMA (Large Language Model Meta AI)
  • 微調整データ: スタンフォード Alpaca の 52K 指示データセットに基づく
  • 技術スタック:
    • Hugging Face PEFT (Parameter-Efficient Fine-Tuning)
    • Tim Dettmers の bitsandbytes ライブラリ
    • PyTorch 深層学習フレームワーク

主要な特性

1. ハードウェアフレンドリー

  • 最低要件: 単一の RTX 4090 GPU
  • トレーニング時間: 数時間以内にトレーニング完了
  • 推論サポート: 8-bit 量子化推論をサポートし、ハードウェア要件をさらに低減します。

2. 多様なモデル規模のサポート

  • 7B モデル: 個人的な研究と学習に適しています。
  • 13B モデル: より優れたパフォーマンスを発揮します。
  • 30B および 65B モデル: プロフェッショナルレベルのアプリケーション向けです。

3. 使いやすさ

  • 簡単なインストール: pip を使用して依存関係をインストールします。
  • クイックスタート: 完全なトレーニングおよび推論スクリプトを提供します。
  • Docker サポート: コンテナ化されたデプロイメントにより、環境設定の難易度を軽減します。

インストールと使用

環境準備

# プロジェクトのクローン
git clone https://github.com/tloen/alpaca-lora.git
cd alpaca-lora

# 依存関係のインストール
pip install -r requirements.txt

モデルのトレーニング

# 基本的なトレーニングコマンド
python finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path 'yahma/alpaca-cleaned' \
    --output_dir './lora-alpaca'

# カスタムハイパーパラメータトレーニング
python finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path 'yahma/alpaca-cleaned' \
    --output_dir './lora-alpaca' \
    --batch_size 128 \
    --micro_batch_size 4 \
    --num_epochs 3 \
    --learning_rate 1e-4 \
    --cutoff_len 512 \
    --val_set_size 2000 \
    --lora_r 8 \
    --lora_alpha 16 \
    --lora_dropout 0.05 \
    --lora_target_modules '[q_proj,v_proj]' \
    --train_on_inputs \
    --group_by_length

モデル推論

# 推論サービスの起動
python generate.py \
    --load_8bit \
    --base_model 'decapoda-research/llama-7b-hf' \
    --lora_weights 'tloen/alpaca-lora-7b'

Docker デプロイメント

# イメージの構築
docker build -t alpaca-lora .

# コンテナの実行
docker run --gpus=all --shm-size 64g -p 7860:7860 \
    -v ${HOME}/.cache:/root/.cache --rm alpaca-lora generate.py \
    --load_8bit \
    --base_model 'decapoda-research/llama-7b-hf' \
    --lora_weights 'tloen/alpaca-lora-7b'

性能表現

ベンチマークモデルとの比較

プロジェクトは、Stanford Alpaca および text-davinci-003 との詳細な比較結果を提供します。

指示の例: アルパカについて教えてください

  • Alpaca-LoRA: アルパカの生物学的特徴や用途など、正確で詳細な情報を提供します。
  • Stanford Alpaca: 同様の高品質な応答
  • text-davinci-003: ベンチマークとしての OpenAI モデルの応答

技術タスクテスト:

  • プログラミングタスク (フィボナッチ数列、FizzBuzz など)
  • 言語翻訳
  • 事実に基づく質問応答
  • 論理的推論

利点分析

  1. 費用対効果: 完全なモデルのトレーニングと比較して、コストを 99% 以上削減します。
  2. 時間効率: 数週間ではなく、数時間以内にトレーニングを完了します。
  3. 品質保証: 出力品質は、大規模な商用モデルに匹敵します。
  4. 拡張性: さまざまな言語および専門分野への適応をサポートします。

エコシステムと拡張

公式サポート

  • Hugging Face Hub: 事前学習済みウェイトのホスティング
  • オンライン体験: Hugging Face Spaces を介したオンライン試用を提供します。
  • コミュニティサポート: アクティブな Discord コミュニティ

サードパーティ拡張

  1. 多言語サポート:
  • 中国語版 (Chinese-Alpaca-LoRA)
  • 日本語版 (Japanese-Alpaca-LoRA)
  • ドイツ語、フランス語、スペイン語など、さまざまな言語
  1. 専門分野への適応:
  • GPT-4 データセットでトレーニングされたバージョン
  • 医学、法律などの専門分野バージョン
  • マルチモーダル拡張 (テキスト + 画像)
  1. デプロイメントツール:
  • alpaca.cpp: CPU 推論最適化バージョン
  • Alpaca-LoRA-Serve: ChatGPT スタイルの Web インターフェース
  • モバイルデバイス適応バージョン

互換性のあるツールチェーン

  • llama.cpp: 効率的な CPU 推論エンジン
  • alpaca.cpp: 専用に最適化された Alpaca 推論エンジン
  • ONNX 形式: クロスプラットフォームデプロイメントのサポート

データセットとトレーニング

トレーニングデータ

  • Stanford Alpaca データセット: 52K 指示-応答ペア
  • データ品質: GPT-3.5 に基づいて生成された高品質の指示データ
  • データ形式: 標準化された指示微調整形式
  • ライセンス: ODC Attribution License

データ改善プロジェクト

  1. AlpacaDataCleaned: データ品質改善プロジェクト
  2. GPT-4 Alpaca Data: GPT-4 を使用して生成されたより高品質なデータ
  3. Dolly 15k: 人工的に生成された指示データセット

技術アーキテクチャの詳細

核心コンポーネント

  1. finetune.py: メインの微調整スクリプト。LoRA の実装とプロンプトの構築が含まれています。
  2. generate.py: 推論スクリプト。Gradio Web インターフェースをサポートします。
  3. export_*.py: モデルエクスポートスクリプト。さまざまな形式をサポートします。

重要なパラメータ

  • lora_r: LoRA のランク。アダプターのサイズを制御します。
  • lora_alpha: スケーリングパラメータ。アダプターの影響の程度に影響します。
  • lora_dropout: 過学習を防ぐためのドロップアウト率
  • lora_target_modules: LoRA レイヤーを追加する必要があるモジュール

応用シーン

研究用途

  • 学術研究: 自然言語処理、機械学習研究
  • 教育: AI コースの実践、モデルトレーニングのデモンストレーション
  • プロトタイプ開発: AI アプリケーションのアイデアを迅速に検証します。

商業応用

  • カスタマーサービスロボット: 特定の分野のデータに基づいて微調整します。
  • コンテンツ生成: マーケティングコピー、技術ドキュメントの生成
  • コードアシスタント: プログラミング支援ツールの開発

個人プロジェクト

  • パーソナルアシスタント: 個人の好みに基づいてカスタマイズされた AI アシスタント
  • 学習ツール: 語学学習、知識質問応答システム
  • クリエイティブライティング: ストーリー作成、詩の生成

制限事項と注意事項

技術的な制限

  1. 基礎モデルへの依存: パフォーマンスの上限は、LLaMA 基礎モデルによって制限されます。
  2. データ品質への依存: 出力品質は、トレーニングデータの品質に大きく依存します。
  3. 計算リソース: トレーニングには、依然としてかなりの GPU リソースが必要です。

使用上の注意

  1. 著作権の問題: LLaMA モデルの使用許諾に注意する必要があります。
  2. データセキュリティ: トレーニングデータに機密情報が含まれている可能性があります。
  3. モデルの偏り: 基礎モデルとトレーニングデータの偏りを継承する可能性があります。

今後の発展方向

技術改善

  1. より効率的な適応方法: LoRA よりも効率的な微調整技術を模索します。
  2. マルチモーダルサポート: 画像、音声などのマルチモーダルデータに拡張します。
  3. オンライン学習: 継続的な学習とリアルタイム適応をサポートします。

エコシステム構築

  1. 標準化: 統一された微調整およびデプロイメント標準を確立します。
  2. ツールチェーンの充実: より完全な開発およびデプロイメントツールを提供します。
  3. コミュニティ貢献: より多くの開発者がコードとデータを貢献することを奨励します。

結論

Alpaca-LoRA プロジェクトは、AI の民主化における重要な一歩であり、高品質の大規模言語モデルの微調整を手頃な価格で実現します。LoRA 技術を通じて、このプロジェクトは、企業レベルの AI 機能を個人の開発者や研究者の手に届けることに成功しました。