XTuner - 高効率な大規模言語モデル微調整ツールキット
プロジェクト概要
XTunerは、InternLMチームが開発した、高効率、柔軟、かつ全機能搭載の大規模言語モデル微調整ツールキットです。このプロジェクトは、InternLM、Llama、Qwen、ChatGLM、Baichuanなどの主要なモデルを含む、さまざまな大規模言語モデルを微調整するための、使いやすく強力なツールをユーザーに提供することを目的としています。
コア機能
1. 高効率(Efficient)
- 低リソース要件:単一の8GB GPUで7Bパラメータの大規模言語モデルの微調整をサポート
- マルチノード拡張:70Bを超えるパラメータのマルチノード微調整をサポート
- パフォーマンス最適化:FlashAttentionやTriton kernelsなどの高性能演算子を自動的にスケジュールし、トレーニングスループットを向上
- DeepSpeed統合:DeepSpeedフレームワークと互換性があり、さまざまなZeRO最適化技術を簡単に使用可能
2. 柔軟性(Flexible)
- マルチモデルサポート:さまざまな大規模言語モデルをサポート
- InternLMシリーズ(InternLM、InternLM2、InternLM2.5、InternLM3)
- Meta Llamaシリーズ(Llama 2、Llama 3)
- その他の主要モデル:Mixtral-8x7B、ChatGLM、Qwen、Baichuan、Gemma、DeepSeekなど
- マルチモーダルサポート:視覚言語モデル(VLM)、特にLLaVAアーキテクチャに基づくモデルをサポート
- データパイプライン:さまざまな形式のデータセットをサポートする、綿密に設計されたデータパイプライン
- 多様なトレーニングアルゴリズム:QLoRA、LoRA、全パラメータ微調整など、さまざまなトレーニング戦略をサポート
3. 全機能性(Full-featured)
- 多様なトレーニングモード:
- 継続的な事前トレーニング
- 指示微調整
- エージェント微調整
- 対話機能:定義済みのテンプレートを使用して大規模モデルと対話することをサポート
- シームレスな統合:出力モデルは、デプロイおよびサービスツールキット(LMDeploy)や大規模評価ツールキット(OpenCompass、VLMEvalKit)とシームレスに統合可能
サポートされるモデル
XTunerは、以下を含む幅広いモデルファミリーをサポートしています。
モデル系列 |
具体的なモデル |
特徴 |
InternLM |
InternLM、InternLM2、InternLM2.5、InternLM3 |
中国語最適化、優れたパフォーマンス |
Llama |
Llama 2、Llama 3 |
Metaオープンソースモデル |
Qwen |
Qwen 1.5など |
アリババオープンソースモデル |
ChatGLM |
ChatGLM3-6Bなど |
清華大学オープンソースモデル |
Baichuan |
Baichuan2など |
百川智能オープンソースモデル |
Mixtral |
Mixtral 8x7B |
Mistral AIの混合エキスパートモデル |
その他 |
Gemma、DeepSeek、MiniCPMなど |
各社オープンソースモデル |
マルチモーダル能力
XTunerは、マルチモーダル分野、特に視覚言語モデルにおいて優れた性能を発揮します。
- LLaVAアーキテクチャサポート:LLaVA-v1.5アーキテクチャの事前トレーニングと微調整を完全にサポート
- 優れたパフォーマンス:LLaVA-InternLM2-20Bモデルのパフォーマンスが際立っている
- 多様な組み合わせ:さまざまな視覚エンコーダと言語モデルの組み合わせをサポート
- 最新リリース:
- LLaVA-Llama-3-8B
- LLaVA-Llama-3-8B-v1.1
- LLaVA-Phi-3-mini
インストールと使用方法
環境準備
# Python 3.10仮想環境を作成
conda create --name xtuner-env python=3.10 -y
conda activate xtuner-env
インストール方法
方法1:pipでインストール
pip install -U xtuner
方法2:DeepSpeedを統合
pip install -U 'xtuner[deepspeed]'
方法3:ソースコードからインストール
git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[all]'
クイックスタート
1. 設定ファイルの準備
# 利用可能なすべての設定を表示
xtuner list-cfg
# 設定ファイルをコピーしてカスタマイズ
xtuner copy-cfg ${CONFIG_NAME} ${SAVE_PATH}
2. 微調整の開始
# シングルGPU微調整
xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
# マルチGPU微調整
NPROC_PER_NODE=${GPU_NUM} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
3. モデル変換
# PTHモデルをHugging Face形式に変換
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH} ${SAVE_PATH}
4. 対話テスト
# 微調整されたモデルと対話
xtuner chat ${NAME_OR_PATH_TO_LLM} --adapter ${NAME_OR_PATH_TO_ADAPTER}
高度な機能
1. シーケンス並列処理
- 非常に長いシーケンスのトレーニングをサポート
- 効率的で拡張可能なトレーニング方法
- 長いテキストを処理する必要があるシナリオに適しています
2. DPO/ORPOトレーニング
- Direct Preference Optimization (DPO) をサポート
- Odds Ratio Preference Optimization (ORPO) をサポート
- Reward Modelトレーニングをサポート
- packedデータとシーケンス並列処理をサポート
3. 数学的推論の最適化
- OREAL(新しい強化学習手法)をサポート
- 数学的推論タスクに特化した最適化
パフォーマンス
トレーニング速度
- Llama2 7B:シングルGPUで優れたトレーニング速度を実現
- Llama2 70B:マルチGPU並列トレーニングをサポートし、優れた速度を発揮
- DeepSeek V2:以前のバージョンと比較して2倍のトレーニング速度向上
メモリ効率
- 低メモリ要件:20GBのGPUメモリでQLoRA微調整が可能
- 全パラメータ微調整:4x80GB GPUで全パラメータ微調整が可能
- メモリ最適化:さまざまな最適化技術により、メモリ使用量を大幅に削減
エコシステム統合
XTunerは、InternLMエコシステムの重要な構成要素として、他のツールと緊密に統合されています。
- LMDeploy:モデルデプロイおよびサービスツールキット
- OpenCompass:大規模評価ツールキット
- VLMEvalKit:視覚言語モデル評価ツールキット
- Lagent:エージェントフレームワーク
- AgentLego:多機能ツールAPIライブラリ
応用シーン
1. 学術研究
- 大規模言語モデルの微調整研究
- マルチモーダルモデルの開発
- 新しいアルゴリズムの検証
2. 産業応用
- カスタマイズされたチャットボット
- 特定の分野に特化したモデルの開発
- エンタープライズAIアシスタント
3. 教育トレーニング
- AIコースの教育
- 実験環境の構築
- スキルトレーニング
結論
XTunerは、機能が充実し、性能に優れた大規模言語モデル微調整ツールキットです。幅広いモデルとトレーニングアルゴリズムをサポートするだけでなく、データ準備からモデルデプロイまで、完全なツールチェーンを提供し、ユーザーにワンストップソリューションを提供します。学術研究であろうと産業応用であろうと、XTunerはさまざまなシナリオのニーズを満たすことができ、大規模言語モデルの微調整を行うための理想的な選択肢です。