mergoo
は、複数の LLM エキスパートを簡単にマージし、マージされた LLM を効率的にトレーニングするためのライブラリです。 mergoo
使用すると、さまざまな汎用またはドメインベースの LLM 専門家の知識を効率的に統合できます。
プロジェクトが気に入ったら、 ️ を残すことを検討してください。
pip でインストールします。
pip install mergoo
最新の不安定バージョンを Github にインストールします。
pip install git+https://github.com/Leeroo-AI/mergoo
ソースからインストールします。
git clone https://github.com/Leeroo-AI/mergoo
cd mergoo
pip install -e .
マージ用の構成を指定します。
model_type
: 基本モデルのタイプ。選択肢: mistral
、 llama
、またはbert
。num_experts_per_token
: MoE の各トークンの専門家の数。experts
: エキスパートがマージするための設定。 expert_name
と Hugging Face が含まれますか? model_id
。router_layers
: 専門家の混合を適用するために選択されたレイヤー。 これは、完全に微調整された LLM エキスパートをマージする場合のサンプル構成です。
config = {
"model_type" : "mistral" ,
"num_experts_per_tok" : 2 ,
"experts" : [
{ "expert_name" : "base_expert" , "model_id" : "mistralai/Mistral-7B-v0.1" },
{ "expert_name" : "expert_1" , "model_id" : "meta-math/MetaMath-Mistral-7B" },
{ "expert_name" : "expert_2" , "model_id" : "ajibawa-2023/Code-Mistral-7B" }
],
"router_layers" : [ "gate_proj" , "up_proj" , "down_proj" ]
}
上の例では、数学とコードのミストラルベースの専門家を統合しました。詳細については、このノートを参照してください。
これは、 LoRA の微調整された LLM エキスパートをマージする場合のサンプル構成です。 mergoo
LoRA の上にルーティング層を構築するため、アダプターが混在します。
config = {
"model_type" : "mistral" ,
"num_experts_per_tok" : 2 ,
"base_model" : "mistralai/Mistral-7B-v0.1" ,
"experts" : [
{ "expert_name" : "adapter_1" , "model_id" : "predibase/customer_support" },
{ "expert_name" : "adapter_2" , "model_id" : "predibase/customer_support_accounts" },
{ "expert_name" : "adapter_3" , "model_id" : "predibase/customer_support_orders" },
{ "expert_name" : "adapter_4" , "model_id" : "predibase/customer_support_payments" }
],
}
expert_name
expert
ではなくadapter
で始まります。詳細については、このノートを参照してください。
構成セットアップに続いて、 mergoo
マージされた LLM を次のように作成します。
import torch
from mergoo . compose_experts import ComposeExperts
# create checkpoint
model_id = "data/mistral_lora_moe"
expertmerger = ComposeExperts ( config , torch_dtype = torch . float16 )
expertmerger . compose ()
expertmerger . save_checkpoint ( model_id )
これで、Hugging Face Trainer を使用してマージされた LLM を簡単にトレーニングできるようになりました。
from transformers import Trainer
from mergoo . models . modeling_mistral import MistralForCausalLM
model = MistralForCausalLM . from_pretrained ( "data/mistral_lora_moe" )
# NOTE: 'gate' / router layers are untrained hence weight loading warning would appeare for them
trainer = Trainer ( ... )
trainer . train ()
クイック スタート ガイドを完了したら、以下のチュートリアルを参照して、 mergoo
にさらに慣れることができます。
ノート | 詳細 |
---|---|
完全に微調整された LLM 専門家による MoE | 完全に微調整された専門家による統一された専門家混合モデルを構築します。 BTX Research (メタ AI) からインスピレーションを受けました。 |
MoE と LoRA の微調整された専門家 | 適応者の混合エキスパートを構築します。インスピレーションを得た xlora | LoRA の混合 |モル |ファツグース |モエロラ |
ハグフェイスブログ | mergoo ライブラリのマージ方法の背後にある研究の詳細を深く掘り下げる |
LLaMa3 ベースのエキスパート | LLaMa3 ベースのドメイン エキスパートを統合して、独自の MoE スタイル LLM エキスパートを構築します |
Phi3 ベースの専門家 | Phi3 ベースの微調整されたモデルを結合して MoE スタイルの LLM アーキテクチャを作成する |
急速に進化する分野のオープンソース ライブラリとして、新機能の導入、インフラストラクチャの強化、ドキュメントの改善などの貢献を歓迎します。
mergoo
ロードマップは次のとおりです。
お気軽に新機能を提案したり、 mergoo
ロードマップに貢献してください。
皆様からのフィードバックをお待ちしております。Leeroo コミュニティにご参加ください:
ここに記載されていない質問がありますか? GitHub Issue を開くか、メールを送信してください。