はじめに
LLaMA-Factoryは、100以上の大規模言語モデル(LLM)の柔軟なカスタマイズと効率的な学習をサポートする、統一された効率的な微調整フレームワークです。組み込みのLLaMA Boardウェブインターフェースにより、ユーザーはコードを書くことなくモデルを微調整できます。このフレームワークには、トレーニング速度とGPUメモリの使用率を大幅に向上させる、さまざまな高度なトレーニング手法と実用的なヒントが統合されています。
機能一覧
- マルチモデル対応LLaMA、LLaVA、Mistral、Qwen、その他の多言語モデルをサポート。
- 複数のトレーニング方法フルボリュームトリミング、フリーズトリミング、LoRA、QLoRAなど。
- 効率的アルゴリズムGaLore、BAdam、Adam-mini、DoRA、その他の高度なアルゴリズムの統合。
- 実技FlashAttention-2、Unsloth、Liger Kernelなどをサポート。
- 実験的モニタリングLlamaBoard、TensorBoard、Wandb、MLflowなどの監視ツールを提供。
- 高速推論OpenAIのようなAPI、Gradio UI、CLIインターフェースを提供。
- データセット・サポートHuggingFace、ModelScope、その他のプラットフォームから、事前にトレーニングされたモデルやデータセットのダウンロードをサポート。
ヘルプの使用
設置プロセス
- プロジェクトコードをクローンする:
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
- 依存関係をインストールします:
pip install -e ".[トーチ,メトリクス]"
オプションの依存関係には、torch、torch-npu、metrics、deepspeed、liger-kernel、bitsandbytesなどがある。
データ準備
をご参照ください。 data/README.md
データセットのファイル形式について、詳しくはこちらをご覧ください。HuggingFace / ModelScope / Modelersのハブでデータセットを使用したり、ローカルディスクにあるデータセットを読み込むことができます。
クイックスタート
以下のコマンドを使用してLoRAを実行し、Llama3-8B-Instructモデルの微調整、推論、マージを行う:
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
llamafactory-cli chat examples/inference/llama3_lora_sft.yaml
llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml
より高度な使い方については examples/README.md
.
LLaMAボードGUIの使用
微調整は、Gradioが提供するLLaMA Board GUIを通じて行われる:
llamafactory-cli webui
Dockerのデプロイメント
CUDAユーザー向け:
cd docker/docker-cuda/
docker compose up -d
docker compose exec llamafactory bash
アセンドNPUユーザーの方へ:
cd docker/docker-npu/
docker compose up -d
docker compose exec llamafactory bash
AMD ROCmユーザーへ:
cd docker/docker-rocm/
docker compose up -d
docker compose exec llamafactory bash
APIの展開
OpenAIスタイルのAPIとvLLMを使った推論:
API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml
APIドキュメントはこちらのページをご覧ください。
モデルとデータセットのダウンロード
Hugging Faceからのモデルやデータセットのダウンロードに問題がある場合は、ModelScopeをご利用ください:
export USE_MODELSCOPE_HUB=1
ModelScope HubのモデルIDを指定してモデルをトレーニングします。 LLM-Research/Meta-Llama-3-8B-Instruct
.
W&Bによる実験結果の記録
Weights & Biasesを使って実験結果を記録するには、yamlファイルに以下のパラメーターを追加する:
wandb.
プロジェクト: "あなたのプロジェクト名"
エンティティ: "あなたのエンティティ名"