mergoo
es una biblioteca para fusionar fácilmente varios expertos en LLM y capacitar de manera eficiente al LLM fusionado. Con mergoo
, puede integrar de manera eficiente el conocimiento de diferentes expertos en LLM genéricos o basados en dominios.
Si te gusta el proyecto, considera dejar un ️
Instalar por pip:
pip install mergoo
Instale la última versión inestable en Github:
pip install git+https://github.com/Leeroo-AI/mergoo
Instálalo desde la fuente:
git clone https://github.com/Leeroo-AI/mergoo
cd mergoo
pip install -e .
Especifique la configuración para fusionar:
model_type
: tipo de modelo base. opciones: mistral
, llama
o bert
.num_experts_per_token
: Número de expertos para cada token de MoE.experts
: configuración para que los expertos se fusionen. ¿Incluye expert_name
y cara de abrazo? model_id
.router_layers
: capas elegidas para aplicar la Mezcla de Expertos. Esta es una configuración de muestra al fusionar expertos en LLM completamente ajustados.
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" ]
}
Para el ejemplo anterior, fusionamos expertos en matemáticas y código basados en Mistral. ¡Consulte este cuaderno para obtener más detalles!
Esta es una configuración de muestra al fusionar expertos en LLM ajustados de LoRA . mergoo
construye una capa de enrutamiento sobre los LoRA, lo que da como resultado una mezcla de adaptadores .
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" }
],
}
El expert_name
comienza con adapter
en lugar de expert
. ¡Consulte este cuaderno para obtener más detalles!
Después de la configuración, mergoo
crea el LLM combinado como:
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 )
Ahora, puedes entrenar fácilmente el LLM combinado con 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 ()
Después de terminar la guía de inicio rápido, puede explorar los tutoriales a continuación para familiarizarse más con mergoo
.
Computadora portátil | Detalles |
---|---|
MoE con expertos en LLM totalmente adaptados | Cree un modelo unificado de mezcla de expertos con expertos totalmente ajustados. Inspirado en BTX Research (Meta AI). |
Ministerio de Educación con expertos perfeccionados de LoRA | Construya una mezcla de expertos en Adaptes. Inspirado en xlora | Mezcla de LoRA | Topo | FATGANSO | MOELORA |
Blog de cara abrazada | Profundice en los detalles de la investigación detrás de los métodos de fusión de la biblioteca mergoo |
Expertos basados en LLaMa3 | Cree sus propios expertos en LLM al estilo MoE integrando expertos en dominios basados en LLaMa3 |
Expertos basados en Phi3 | Cree una arquitectura LLM estilo MoE fusionando modelos ajustados basados en Phi3 |
Como biblioteca de código abierto en un dominio en rápida evolución, agradecemos las contribuciones, ya sea introduciendo nuevas funciones, mejorando la infraestructura o mejorando la documentación.
Aquí está la hoja de ruta mergoo
:
¡No dudes en sugerir nuevas funciones y/o contribuir a la hoja de ruta mergoo
!
Nos encantaría recibir sus comentarios, únase a la comunidad Leeroo:
¿Tiene alguna pregunta que no esté incluida aquí? ¡Abra una edición de GitHub o envíenos un correo electrónico!