🔎Unsloth による埋め込みモデルのファインチューニングガイド

Unsloth を使って埋め込みモデルを簡単にファインチューニングする方法を学びます。

埋め込みモデルのファインチューニングは、特定のタスクでの検索およびRAGの性能を大幅に向上させる可能性があります。モデルのベクトルをあなたのドメインやユースケースで重要な「類似性」の種類に合わせることで、検索、RAG、クラスタリング、およびデータに基づくレコメンデーションが改善されます。

例: 見出し「Google launches Pixel 10」と「Qwen releases Qwen3」は、両方を単に「Tech」とラベル付けしているだけなら類似した埋め込みになるかもしれませんが、意味検索を行う場合は異なる内容を扱っているため類似しないでしょう。ファインチューニングは、ユースケースにとって「正しい」種類の類似性をモデルに学習させ、誤りを減らし結果を改善します。

Unslotharrow-up-right は現在、埋め込みのトレーニングをサポートしています、 分類器, BERT, リランキング器 モデル 約1.8〜3.3倍高速 他のFlash Attention 2実装よりメモリを20%節約し、コンテキスト長が2倍長くなります — 精度の低下はありません。EmbeddingGemma-300Mはわずか 3GBのVRAMで動作します。学習した モデルはどこでも使用できます:transformers、LangChain、Ollama、vLLM、llama.cppなど。

Unslothは SentenceTransformersarrow-up-right を使用して、Qwen3-Embedding、BERTなどの互換モデルをサポートします。 ノートブックやアップロードがなくてもサポートされています。

我々は3つの主要なユースケース向けに無料のファインチューニングノートブックを作成しました:

  • All-MiniLM-L6-v2:セマンティック検索、検索(retrieval)、クラスタリングのために、あなた自身のデータで調整されたコンパクトなドメイン特化型の文埋め込みを生成します。

  • tomaarsen/miriad-4.4M-split:医療の質問や生物医学論文を埋め込み、高品質な医療セマンティック検索とRAGを実現します。

  • electroglyph/technical:技術文書(ドキュメント、仕様、エンジニアリングの議論)における意味やセマンティック類似性をよりよく捉えます。

アップロードした他のモデルは次で確認できます こちらのコレクションarrow-up-right.

Unsloth寄稿者に大きな感謝を: electroglypharrow-up-right、このサポートに重要な貢献をしてくれました。electroglyphのカスタムモデルはHugging Faceで確認できます ここarrow-up-right.

🦥 Unslothの機能

  • パイプラインを再記述することなく、埋め込みに対してLoRA/QLoRAまたはフルファインチューニングを行えます

  • エンコーダー専用モデルのベストサポート SentenceTransformer モデル(および modules.json)

  • クロスエンコーダーモデルはフォールバックパスでも正しく学習することが確認されています

  • このリリースはまた transformers v5

がないモデルに対しては限定的なサポートがあります modules.json (デフォルトの SentenceTransformers プーリングモジュールを自動割り当てします)。カスタム(カスタムヘッド、非標準のプーリング)を行っている場合は、プールド埋め込みの振る舞いなど出力を二重に確認してください。

一部のモデルではMPNetやDistilBERTのようなカスタム追加が必要で、それらは勾配チェックポイントをにパッチ適用することで有効にしました transformers models.

🛠️ ファインチューニングワークフロー

新しいファインチューニングフローは、次を中心に構築されています FastSentenceTransformer.

主な保存/プッシュ方法:

  • save_pretrained() を保存します LoRAアダプタ をローカルフォルダに

  • save_pretrained_merged() を保存します マージされたモデル をローカルフォルダに

  • push_to_hub() をプッシュします LoRAアダプタ をHugging Faceへ

  • push_to_hub_merged() をプッシュします マージされたモデル をHugging Faceへ

そして非常に重要な詳細:推論時の読み込みには for_inference=True

from_pretrained() はLackerの他の高速クラスと似ていますが、 1つの例外があります:

  • 推論用にモデルを読み込むには 推論 を使用して FastSentenceTransformerを呼び出すと、 は必ず 渡す必要があります: for_inference=True

したがって推論の読み込みは次のようになります:

Hugging Faceの認証について、もし次を実行していれば:

同じvirtualenv内でハブメソッドを呼ぶ前に実行していれば、次に:

  • push_to_hub() および push_to_hub_merged() token引数を必要としません.

✅ どこでも推論とデプロイが可能!

あなたのファインチューニングされた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がサポートする人気の埋め込みモデルの一部です(すべてのモデルを列挙しているわけではありません):

ほとんどの 一般的なモデルarrow-up-right はすでにサポートされています。もしエンコーダー専用モデルでサポートされていないものがあれば、遠慮なく GitHub issuearrow-up-right リクエストを送ってください。

最終更新

役に立ちましたか?