Mergoo 使用教程
1. 项目介绍
Mergoo 是一个开源库,旨在简化多个大型语言模型(LLM)专家的合并过程,并有效训练合并后的LLM。它支持多种合并方法,包括混合专家(Mixture-of-Experts)、混合适配器(Mixture-of-Adapters)和逐层合并。Mergoo 兼容多种基础模型,如 Llama、Mistral、Phi3 和 BERT,并且支持使用 Hugging Face 的 Trainer 和 SFTrainer 进行训练。
2. 项目快速启动
安装
通过 pip 安装 Mergoo:
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 .
配置设置
创建一个配置文件来指定合并的参数。以下是一个合并完全微调的LLM专家的示例配置:
{
"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"]
}
创建和保存合并的专家
根据配置创建合并的LLM,并保存检查点:
import torch
from mergoo.compose_experts import ComposeExperts
# 创建检查点
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")
# 注意:'gate' / 路由层是未训练的,因此加载权重时会发出警告
trainer = Trainer(...)
trainer.train()
3. 应用案例和最佳实践
- 案例一:使用 Mergoo 创建混合专家(MoE)模型,整合数学和代码领域的专家知识。
- 案例二:使用 Mergoo 创建混合适配器(MoA)模型,为不同客户支持场景定制适配器。
4. 典型生态项目
- 项目一:基于 LLaMa3 的专家模型,用于构建 MoE 样式的LLM。
- 项目二:基于 Phi3 的微调模型,用于创建 MoE 样式的LLM架构。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考