mergoo
ist eine Bibliothek zum einfachen Zusammenführen mehrerer LLM-Experten und zum effizienten Trainieren der zusammengeführten LLM-Experten. Mit mergoo
können Sie das Wissen verschiedener generischer oder domänenbasierter LLM-Experten effizient integrieren.
Wenn Ihnen das Projekt gefällt, denken Sie darüber nach, ein ️ zu hinterlassen
Per Pip installieren:
pip install mergoo
Installieren Sie die neueste instabile Version auf Github:
pip install git+https://github.com/Leeroo-AI/mergoo
Installieren Sie es von der Quelle:
git clone https://github.com/Leeroo-AI/mergoo
cd mergoo
pip install -e .
Geben Sie die Konfiguration zum Zusammenführen an:
model_type
: Typ des Basismodells. Auswahlmöglichkeiten: mistral
, llama
oder bert
.num_experts_per_token
: Anzahl der Experten für jeden MoE-Token.experts
: Konfiguration für Experten zum Zusammenführen. Enthält expert_name
und Hugging Face ? model_id
.router_layers
: Für die Anwendung von Mixture-of-Experts ausgewählte Ebenen. Dies ist eine Beispielkonfiguration für die Zusammenführung vollständig abgestimmter LLM-Experten.
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" ]
}
Für das obige Beispiel haben wir Experten auf Basis von Mathematik und Code Mistral zusammengeführt. Weitere Einzelheiten entnehmen Sie bitte diesem Notizbuch!
Dies ist eine Beispielkonfiguration für die Zusammenführung von LoRA- fein abgestimmten LLM-Experten. mergoo
baut eine Routing-Schicht auf LoRAs auf, was zu einer Mischung von Adaptern führt.
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" }
],
}
Der expert_name
beginnt mit adapter
statt mit expert
. Weitere Einzelheiten entnehmen Sie bitte diesem Notizbuch!
Nach der Konfigurationseinrichtung erstellt mergoo
das zusammengeführte LLM wie folgt:
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 )
Jetzt können Sie das zusammengeführte LLM ganz einfach mit dem Hugging Face Trainer trainieren:
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 ()
Nachdem Sie die Kurzanleitung durchgearbeitet haben, können Sie die folgenden Tutorials erkunden, um sich weiter mit mergoo
vertraut zu machen.
Notizbuch | Einzelheiten |
---|---|
MoE mit vollständig abgestimmten LLM-Experten | Erstellen Sie ein einheitliches Mixture-of-Experts-Modell mit vollständig abgestimmten Experten. Inspiriert von BTX Research (Meta AI). |
MoE mit auf LoRA abgestimmten Experten | Bauen Sie einen Mixture of Adaptes-Experten auf. Inspiriert von XLora | Mischung aus LoRAs | Maulwurf | PHATGOOSE | MoELoRA |
Hugging Face Blog | Tauchen Sie tief in die Forschungsdetails ein, die hinter den Zusammenführungsmethoden der Mergoo-Bibliothek stehen |
LLaMa3-basierte Experten | Bauen Sie Ihre eigenen LLM-Experten im MoE-Stil auf, indem Sie LLaMa3-basierte Domänenexperten integrieren |
Phi3-basierte Experten | Erstellen Sie eine LLM-Architektur im MoE-Stil, indem Sie Phi3-basierte, fein abgestimmte Modelle zusammenführen |
Als Open-Source-Bibliothek in einem sich schnell entwickelnden Bereich freuen wir uns über Beiträge, sei es die Einführung neuer Funktionen, die Verbesserung der Infrastruktur oder die Verbesserung der Dokumentation.
Hier ist mergoo
Roadmap:
Schlagen Sie gerne neue Funktionen vor und/oder tragen Sie zur mergoo
-Roadmap bei!
Wir freuen uns über Ihr Feedback. Bitte treten Sie der Leeroo-Community bei:
Haben Sie eine Frage, die hier nicht aufgeführt ist? Öffnen Sie ein GitHub-Problem oder senden Sie uns eine E-Mail!