🔎Unsloth ガイドによる埋め込みモデルのファインチューニング
Unsloth を使って埋め込みモデルを簡単にファインチューニングする方法を学びます。
埋め込みモデルのファインチューニングは、特定のタスクにおける検索およびRAGの性能を大きく改善できます。これにより、モデルのベクトルがあなたのドメインと、ユースケースで重要な「類似性」の種類に合うようになり、データに対する検索、RAG、クラスタリング、レコメンデーションが向上します。
例: 「Google launches Pixel 10」と「Qwen releases Qwen3」という見出しは、両方を単に「Tech」とラベル付けするだけなら類似として埋め込みできますが、意味検索をしている場合は、別の内容について述べているため類似ではありません。ファインチューニングは、ユースケースにとって「正しい」種類の類似性をモデルに学習させ、エラーを減らし、結果を改善します。
Unsloth は現在、埋め込み、 分類器, BERT, リランカー モデルの学習を 約1.8〜3.3倍高速に 対応しています。メモリ使用量は20%少なく、他のFlash Attention 2実装よりコンテキスト長は2倍で、精度低下はありません。EmbeddingGemma-300M はわずか 3GBのVRAMで動作します。学習済みの モデルをどこでも使用できます: transformers、LangChain、Ollama、vLLM、llama.cpp など。
Unslothは SentenceTransformers を使用して、Qwen3-Embedding、BERT などの互換モデルをサポートします。 ノートブックやアップロードがなくても、引き続きサポートされています。
無料のファインチューニング用ノートブックを3つの主なユースケース向けに作成しました:
All-MiniLM-L6-v2: セマンティック検索、検索、クラスタリング向けに、コンパクトでドメイン固有の文埋め込みを生成し、自分のデータでチューニングします。tomaarsen/miriad-4.4M-split: 医療関連の質問と生物医学論文を埋め込み、高品質な医療セマンティック検索とRAGを実現します。electroglyph/technical: 技術文書の意味と意味的類似性をよりよく捉えます(ドキュメント、仕様、エンジニアリング議論)。
アップロード済みモデルの残りは こちらのコレクションで見ることができます.
Unslothの貢献者である electroglyphに心から感謝します。このサポートには彼の仕事が非常に重要でした。Hugging Face 上の electroglyph のカスタムモデルは こちら.
🦥 Unslothの機能
パイプラインを書き直す必要なく、埋め込みに対してLoRA/QLoRAまたはフルファインチューニングが可能
エンコーダー専用の
SentenceTransformerモデルへの最良のサポート(modules.json)Cross-encoderモデルは、フォールバック経路でも正しく学習できることが確認されています
このリリースは
transformers v5
を持たないモデルには限定的なサポートがあります modules.json (デフォルトの SentenceTransformers プーリングモジュールを自動割り当てします)。カスタムなこと(カスタムヘッド、非標準のプーリング)をしている場合は、プール済み埋め込みの動作などの出力を再確認してください。
MPNet や DistilBERT のようにカスタム追加が必要だった一部のモデルは、勾配チェックポイント機能を transformers モデルにパッチ適用することで有効化されました。
🛠️ ファインチューニングのワークフロー
新しいファインチューニングの流れは FastSentenceTransformer.
を中心にしています。主な保存/Hubへの公開メソッド:
save_pretrained()を保存します LoRAアダプターを ローカルフォルダにsave_pretrained_merged()を保存します マージ済みモデルを ローカルフォルダにpush_to_hub()をプッシュします LoRAアダプターを Hugging Face にpush_to_hub_merged()をプッシュします マージ済みモデルを Hugging Face に
そして非常に重要な点が1つあります。推論時の読み込みには for_inference=True
が必要です。 from_pretrained() と似ていますが、:
モデルを 推論用に 読み込むには
FastSentenceTransformer、 必ず 次を渡してください:for_inference=True
したがって、推論時の読み込みは次のようになります:
Hugging Face の認証については、次を実行する場合:
Hubメソッドを呼び出す前に同じ仮想環境内で実行すると、
push_to_hub()およびpush_to_hub_merged()トークン引数は不要です.
✅ 推論して、どこにでもデプロイ!
ファインチューニングしたUnslothモデルは、transformers、LangChain、Weaviate、sentence-transformers、Text Embeddings Inference (TEI)、vLLM、llama.cpp、カスタム埋め込みAPI、pgvector、FAISS/ベクトルデータベース、そして任意のRAGフレームワークなど、主要なツールすべてで使用・デプロイできます。
ファインチューニング済みモデルは後から自分のデバイスにローカルでダウンロードできるため、ロックインはありません。
📊 Unslothのベンチマーク
埋め込みのファインチューニングにおいて、Unslothの利点には速度があります!私たちは一貫して 1.8〜3.3倍高速 であることを示しています。128から2048、さらにそれ以上のさまざまな系列長にわたる多様な埋め込みモデルでです。
EmbeddingGemma-300M の QLoRA はわずか 3GBのVRAM で動作し、LoRA は 6GB VRAM で動作します。
以下は、ヒートマップで比較した Unsloth のベンチマークです。 SentenceTransformers + Flash Attention 2 (FA2) を4bit QLoRAで使用した場合との比較です。 4bit QLoRAでは、Unsloth は1.8倍から2.6倍高速です:

以下は、ヒートマップで比較した Unsloth のベンチマークです。 SentenceTransformers + Flash Attention 2 (FA2) を16bit LoRAで使用した場合との比較です。 16bit LoRAでは、Unsloth は1.2倍から3.3倍高速です:

🔮 モデルサポート
Unslothがサポートする人気の埋め込みモデルをいくつか紹介します(ここにすべてのモデルは載っていません):
ほとんどの 一般的なモデル はすでにサポートされています。もし欲しいエンコーダー専用モデルがまだない場合は、ぜひ GitHub issue を開いてリクエストしてください。
最終更新
役に立ちましたか?

