mergoo
1.0.0
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
:选择用于应用 Mixture-of-Experts 的层。 这是合并完全微调的 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" ]
}
对于上面的示例,我们合并了基于 Mistral 的数学和代码专家。请参阅此笔记本以了解更多详细信息!
这是合并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
以adapter
而不是expert
开头。请参阅此笔记本以了解更多详细信息!
配置设置完成后, 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
。
笔记本 | 细节 |
---|---|
教育部拥有经过全面调整的法学硕士专家 | 与完全微调的专家建立统一的专家混合模型。受到 BTX 研究(Meta AI)的启发。 |
MoE 与 LoRA 专家进行微调 | 打造混合适应专家。灵感来自 xlora | LoRA 的混合 |鼹鼠 |法古斯 |莫埃洛拉 |
拥抱脸博客 | 深入探讨mergoo库合并方法背后的研究细节 |
基于 LLaMa3 的专家 | 通过集成基于LLaMa3的领域专家,打造您自己的MoE式LLM专家 |
基于 Phi3 的专家 | 通过合并基于 Phi3 的微调模型来创建 MoE 风格的 LLM 架构 |
作为快速发展领域中的开源库,我们欢迎贡献,无论是引入新功能、增强基础设施还是改进文档。
这是mergoo
路线图:
请随意建议新功能和/或为mergoo
路线图做出贡献!
我们很高兴收到您的反馈,请加入 Leeroo 社区:
还有此处未列出的问题吗?打开 GitHub Issue 或给我们发送电子邮件!