QLoRAとDPOを使用してGoogle ColabでLFM2をファインチューニングする方法:完全なステップバイステップコーディングチュートリアル
このチュートリアルでは、Google ColabでQLoRA、教師ありファインチューニング(SFT)、直接選好最適化(DPO)を使用してLiquid AIのLFM2モデルをファインチューニングする方法を詳しく説明します。モデルの読み込み、データセットの準備、LoRAアダプターのトレーニング、アダプターのマージ、DPOトレーニングの全フローをカバーし、最終的にデプロイ可能なモデルチェックポイントを取得します。
このチュートリアルでは、完全にオープンソースのワークフローを使用してLiquid AIのLFM2モデルをファインチューニングします。まず、QLoRAを使用してベースLFM2チェックポイントをロードし、チャットスタイルの教師ありファインチューニングデータセットを準備し、TRLとPEFTを使用して軽量LoRAアダプターをトレーニングし、アダプターをモデルにマージします。さらに、選択された回答と拒否された回答を使用して応答の好みを改善する方法を示すために、DPOでワークフローを拡張します。最終的に、ベースLFM2モデルからSFT調整済み、選好調整済みのチェックポイントに移行する実用的なパイプラインが得られ、さらなるテストやデプロイメントの準備が整います。
このチュートリアルでは、まず必要なライブラリ(Transformers、TRL、PEFT、datasets、bitsandbytes、PyTorch)をインストールします。次に、トレーニング設定を定義し、GPUを検出して適切な精度を選択します。次に、LFM2ベースモデルをロードします。オプションで4ビット量子化を行い、GPUメモリ使用量を削減します。トークナイザーを準備し、パディングトークンを設定し、モデル応答をテストするためのチャット関数を定義します。ファインチューニングの前に、ベースラインのプロンプトを実行してモデルの動作を比較します。
次に、チャット形式の教師ありファインチューニングデータセットをロードし、メッセージ列のみを保持します。軽量なアダプタートレーニングのためにLoRAを設定し、SFTトレーニング設定を定義します。SFTでモデルをトレーニングし、LoRAアダプターを保存し、改善されたモデル応答をテストします。その後、メモリをクリアし、ベースモデルを再ロードし、トレーニング済みのSFT LoRAアダプターをアタッチしてマージし、マージされたSFTチェックポイントを保存します。
オプションで、プロンプト-選択-拒否の応答ペアを使用してDPOを実行します。選好調整用に別のLoRAアダプターを設定し、SFTマージモデルでDPOトレーニングを行います。最後にDPOアダプターをマージし、最終モデルチェックポイントを保存し、以前の出力と比較します。
結論として、Transformers、TRL、PEFT、datasets、bitsandbytesなどの完全にオープンソースのツールを使用してLFM2の完全なファインチューニングパイプラインを構築しました。QLoRAを使用してColab GPUでのトレーニングを効率化し、チャット形式データに教師ありファインチューニングを適用し、トレーニング済みアダプターをベースモデルにマージし、必要に応じてDPOでモデルをさらに改善しました。これにより、最新のLLMファインチューニングが実際にどのように機能するかを明確に理解でき、元のベースラインと比較してデプロイメントの準備が整った最終チェックポイントを生成できます。