質問分類のための Qwen 3:0.6B のファインチューニング
質問分類のための Qwen 3:0.6B のファインチューニング
概要
極小のローカル LLM をファインチューニングすることで、信頼性の低い分類器を、メタデータ対応の RAG 用の高パフォーマンスなツールへと変貌させることができます。Unsloth フレームワークと QLoRA を使用して Qwen 3:0.6B をファインチューニングすることにより、ある開発者は家庭関連の質問に関する分類精度を、ベースラインの 10% から 92% に向上させました。
RAG における分類の役割
質問分類は、Retrieval-Augmented Generation (RAG) の精度を向上させるための前処理ステップとして機能します。ユーザーのクエリを特定のメタデータカテゴリ(例: "pool", "hvac", "cooking")にマッピングすることで、システムはベクトルランキングの検索空間を、そのカテゴリに一致するインデックス済みエントリのみに絞り込むことができます。これにより、モデルが他のカテゴリから無関係なドキュメントを取得してしまうのを防ぎ、最終的な回答の全体的な精度を高めることができます。
ベースラインの性能: プロンプトのみの場合
ファインチューニングを行っていない元の Qwen 3:0.6B モデルを使用し、提供されたリストからカテゴリ名のみを返すようにモデルに要求する厳格なプロンプトを使用して、開発者はベースラインを確立しました。
ベースラインの結果:
- 精度: ~10% (131 回のテスト中 13 回正解)。
- 失敗パターン: モデルは「electric」や「appliances」のような広範なラベルを多用する傾向があり、許可されたリストにない新しいカテゴリ(例: "apartments")を頻繁に捏造する傾向がありました。
ファインチューニング戦略と実装
ベースラインを超えるために、開発者はファインチューニングに Unsloth オープンソースフレームワークと QLoRA を使用しました。
データセットとトレーニング
- データセットのサイズ: 約 850 件のデータエントリ。
- データの分割: トレーニング用 70%、評価用 15%、テスト用 15%。
- 評価: トレーニング後の性能を測定するために、131 回の統合テストが行われました。
最初のファインチューニングの試み
最初の試みでは、モデルはカテゴリ名を直接出力するようにトレーニングされました。
- 精度: 79% (131 回のテスト中 104 回正解)。
- 残っている課題: モデルは時折、カテゴリの断片(例: "ac" は "hvac" の代わりに)を出力し、意味的に重複するカテゴリ(例: "water heater" と "pool")の区別に苦戦していました。
不透明な ID による精度の最適化
カテゴリを不透明な 2 文字のコード(例: "AA" は appliances 用、"KK" は hvac 用)にマッピングすることで、意味的なカテゴリ名を使用する場合よりも大幅に性能が向上しました。出力トークンにおける意味的な重複を排除することで、極小のモデルはクエリを固定された重複のない形式にマッピングする能力が向上しました。
最終結果:
- 精度: 92% (131 回のテスト中 120 回正解)。
- 重要な発見: 固定された重複のない出力形式を要求することは、小型モデルが整合性を維持し、類義語や断片の捏造を防ぐのに役立ちます。
残っている課題
92% の精度に達したものの、一部の失敗は依然として残っており、特にカテゴリの意味が重複している場合に発生します。例えば、モデルは「watery」という共通の文脈があるため、「water heater」のクエリを「pool」のクエリとして誤分類し続けていました。著者は、これらの特定の意味的な重複をより適切に区別するために、さらなる改善にはよりき微細なトレーニングデータが必要であると述べています。