mergoo
est une bibliothèque permettant de fusionner facilement plusieurs experts LLM et de former efficacement le LLM fusionné. Avec mergoo
, vous pouvez intégrer efficacement les connaissances de différents experts LLM génériques ou basés sur un domaine.
Si le projet vous plaît, pensez à laisser un ️
Installer par pip :
pip install mergoo
Installez la dernière version instable sur Github :
pip install git+https://github.com/Leeroo-AI/mergoo
Installez-le depuis la source :
git clone https://github.com/Leeroo-AI/mergoo
cd mergoo
pip install -e .
Spécifiez la configuration à fusionner :
model_type
: type de modèle de base. choix : mistral
, llama
, ou bert
.num_experts_per_token
: Nombre d'experts pour chaque token du MoE.experts
: configuration pour la fusion des experts. inclut expert_name
et Hugging Face ? model_id
.router_layers
: couches choisies pour appliquer Mixture-of-Experts. Il s'agit d'un exemple de configuration lors de la fusion d'experts LLM entièrement réglés.
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" ]
}
Pour l'exemple ci-dessus, nous avons fusionné des experts en mathématiques et en code basés sur le mistral. Veuillez vous référer à ce carnet pour plus de détails !
Il s'agit d'un exemple de configuration lors de la fusion d'experts LLM affinés LoRA . mergoo
construit une couche de routage au-dessus des LoRA, ce qui donne un mélange d'adaptateurs .
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" }
],
}
Le expert_name
commence par adapter
au lieu de expert
. Veuillez vous référer à ce carnet pour plus de détails !
Après la configuration, mergoo
crée le LLM fusionné comme :
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 )
Désormais, vous pouvez facilement entraîner le LLM fusionné avec Hugging Face Trainer :
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 ()
Après avoir terminé le guide de démarrage rapide, vous pouvez explorer les didacticiels ci-dessous pour vous familiariser davantage avec mergoo
.
Carnet de notes | Détails |
---|---|
MoE avec des experts LLM parfaitement affinés | Créez un modèle de mélange d'experts unifié avec des experts parfaitement optimisés. Inspiré de BTX Research (Meta AI). |
Le MoE avec des experts chevronnés de la LoRA | Construisez un expert en mélange d’adaptes. Inspiré par XLora | Mélange de LoRA | MOLE | PHATGOOSE | MOELORA |
Blog visage câlin | Plongez dans les détails de la recherche derrière les méthodes de fusion de la bibliothèque Mergoo |
Experts basés sur LLaMa3 | Créez vos propres experts LLM de style MoE en intégrant des experts de domaine basés sur LLaMa3 |
Experts basés sur Phi3 | Créez une architecture LLM de style MoE en fusionnant des modèles affinés basés sur Phi3 |
En tant que bibliothèque open source dans un domaine en évolution rapide, nous apprécions les contributions, qu'il s'agisse d'introduire de nouvelles fonctionnalités, d'améliorer l'infrastructure ou d'améliorer la documentation.
Voici la feuille de route mergoo
:
N'hésitez pas à suggérer de nouvelles fonctionnalités et/ou à contribuer à la feuille de route mergoo
!
Nous aimons recevoir vos commentaires, veuillez rejoindre la communauté Leeroo :
Vous avez une question qui ne figure pas ici ? Ouvrez un problème GitHub ou envoyez-nous un e-mail !