OptimalScale/LMFlow
An Extensible Toolkit for Finetuning and Inference of Large Foundation Models. Large Models for All.
LMFlow – 大規模言語モデルのファインチューニング用ツールボックス
何であるか – LMFlow は、Llama‑3、Phi‑3、Llama‑2、GPT‑2 などの大規模言語モデル(LLM)を適応(ファインチューニング)するのを支援するオープンソースの Python ライブラリです。データ準備、トレーニング、推論、デプロイまでを高速かつ簡単にするスクリプト、ユーティリティ、オプション統合をバンドルしています。
主な機能
| 分野 | LMFlow が提供する内容 |
|---|---|
| トレーニング | • 全パラメータファインチューニング(すべての重みを更新) |
| • LoRA(低ランク適応)– 軽量でパラメータ効率の良い手法 | |
| • LISA – 新しいメモリ効率の良いアルゴリズム。大部分のレイヤーを固定し、わずかなレイヤーのみを更新。1枚の24 GB GPUで7 B規模のモデルを可能に | |
| • QLoRA(8ビット/4ビット量子化LoRA)でさらに低いメモリ使用量 | |
| • グラデントチェックポイント、FlashAttention‑2、DeepSpeed ZeRO‑3、その他のテクニックで速度を向上し、GPUメモリを削減。 | |
| 推論 | • 標準的な Hugging‑Face 風の推論 |
| • 高スループットサーバー用の vLLM および SGLang バックエンド | |
| • llama.cpp 変換スクリプトによる CPU 側 4ビット推論 | |
| デプロイ | • クイックチャットボットデモ用の Gradio UI |
| • カスタムウェブサービス用の Flask 統合 | |
| 拡張機能 | • オプションパッケージ(vllm, sglang, trl, deepspeed, flash_attn, ray, multimodal, gradio, flask)は必要に応じてインストール可能。 |
使い方
- インストール –
pip install -e .(または必要な拡張機能を追加)。 - データ準備 – 対応するデータセット形式(例:Alpaca)についてドキュメントを参照。
- トレーニングスクリプト実行 – 使用したい方法を選択(全パラメータ用:
run_finetune.sh、LoRA用:run_finetune_with_lora.sh、LISA用:run_finetune_with_lisa.sh)。 - チャット – トレーニング後、
run_chatbot.shでシンプルなターミナルチャットボットを起動。Web UIが必要な場合は Gradio の例を使用。 - デプロイ – Flask または Gradio サービスを起動。必要に応じて DeepSpeed を使ってマルチGPUスケーリング。
ハードウェアガイド – README には、異なるモデルサイズとトレーニングモードにおける推定GPUメモリ要件を示す便利な表があります(例:7 Bモデルは全精度ファインチューニングで約120 GB必要ですが、LoRAでは約16 GB、8ビットQLoRAでは約10 GBで済みます)。
コミュニティとサポート – プロジェクトはウェブサイト、Discord、Slack、WeChat グループを維持しており、定期的なアップデート(新しいモデル対応、スペキュラティブデコードなどの新アルゴリズム、会話テンプレートプリセットなど)を発表しています。
重要性 – LLMのファインチューニングはリソース集約的です。LMFlow は LISA、LoRA、QLoRA、FlashAttention‑2、DeepSpeed などの最新のメモリ節約テクニックを1つのインストール可能なパッケージに統合し、研究室やアマチュアが特定のタスクやドメイン向けに大規模モデルを適応しやすくなりました。
クイックスタートスニペット
# ステーブルタグをクローン
git clone -b v1.0.0 https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y && conda activate lmflow
conda install mpi4py
pip install -e .
# AlpacaデータでGPT‑2をファインチューニング
bash ./scripts/run_finetune.sh \
--model_name_or_path gpt2 \
--dataset_path data/alpaca/train_conversation \
--output_model_path output_models/finetuned_gpt2
# 結果とチャット
bash ./scripts/run_chatbot.sh output_models/finetuned_gpt2
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch