mergoo
é uma biblioteca para mesclar facilmente vários especialistas em LLM e treinar com eficiência o LLM mesclado. Com mergoo
, você pode integrar com eficiência o conhecimento de diferentes especialistas em LLM genéricos ou baseados em domínio.
Se você gostou do projeto, considere deixar um ️
Instalar por pip:
pip install mergoo
Instale a última versão instável no Github:
pip install git+https://github.com/Leeroo-AI/mergoo
Instale-o da fonte:
git clone https://github.com/Leeroo-AI/mergoo
cd mergoo
pip install -e .
Especifique a configuração para mesclagem:
model_type
: tipo de modelo base. escolhas: mistral
, llama
ou bert
.num_experts_per_token
: Número de especialistas para cada token do MoE.experts
: configuração para especialistas mesclarem. inclui expert_name
e Hugging Face ? model_id
.router_layers
: camadas escolhidas para aplicação da Mixture-of-Experts. Este é um exemplo de configuração ao mesclar especialistas em LLM totalmente 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 o exemplo acima, fundimos especialistas em matemática e código baseados em mistral. Consulte este caderno para obter mais detalhes!
Este é um exemplo de configuração ao mesclar especialistas em LLM aprimorados pela LoRA . mergoo
constrói uma camada de roteamento sobre LoRAs, resultando em uma mistura 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" }
],
}
O expert_name
começa com adapter
em vez de expert
. Consulte este caderno para obter mais detalhes!
Após a configuração, mergoo
cria o LLM mesclado 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 )
Agora, você pode treinar facilmente o LLM mesclado com o 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 ()
Depois de terminar o guia de início rápido, você pode explorar os tutoriais abaixo para se familiarizar ainda mais com mergoo
.
Caderno | Detalhes |
---|---|
MoE com especialistas em LLM totalmente ajustados | Crie um modelo unificado de mistura de especialistas com especialistas totalmente ajustados. Inspirado pela pesquisa BTX (Meta AI). |
MoE com especialistas treinados em LoRA | Construa um especialista em mistura de adaptações. Inspirado em xlora | Mistura de LoRAs | MoLE | PHATGOOSE | MoELoRA |
Abraçando Rosto Blog | Mergulhe nos detalhes da pesquisa por trás dos métodos de fusão da biblioteca Mergoo |
Especialistas baseados em LLaMa3 | Crie seus próprios especialistas em LLM no estilo MoE integrando especialistas de domínio baseados em LLaMa3 |
Especialistas baseados em Phi3 | Crie uma arquitetura LLM estilo MoE mesclando modelos ajustados baseados em Phi3 |
Como uma biblioteca de código aberto em um domínio em rápida evolução, agradecemos contribuições, seja introduzindo novos recursos, aprimorando a infraestrutura ou melhorando a documentação.
Aqui está o roteiro mergoo
:
Sinta-se à vontade para sugerir novos recursos e/ou contribuir com o roteiro mergoo
!
Adoramos receber seus comentários. Junte-se à comunidade Leeroo:
Tem alguma dúvida que não está listada aqui? Abra um problema no GitHub ou envie-nos um email!