Mergoo 使用教程

Mergoo 使用教程

mergoo A library for easily merging multiple LLM experts, and efficiently train the merged LLM. mergoo 项目地址: https://gitcode.com/gh_mirrors/me/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架构。

mergoo A library for easily merging multiple LLM experts, and efficiently train the merged LLM. mergoo 项目地址: https://gitcode.com/gh_mirrors/me/mergoo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

内容概要:本项目详细介绍了餐饮管理系统的设计与实现。该系统旨在解决传统餐饮信息管理中存在的问题,如信息管理混乱、出错率高、安全性差、劳动强度大等。系统基于Java语言和Mysql数据库开发,采用Eclipse作为开发环境。主要功能包括菜品信息管理、订单管理、用户信息管理、公告信息管理和菜品评论管理。管理员可以通过系统进行菜品信息的增删改查、审核订单、查看评价等操作。系统还提供了用户登录、密码修改等功能,并且在设计时充分考虑了系统的易操作性、安全性和准确性。通过系统测试,验证了系统的各项功能和性能均能满足实际需求。 适合人群:具备一定编程基础,特别是对Java语言和数据库有一定了解的研发人员或计算机相关专业的学生。 使用场景及目标:①适用于餐饮行业的信息管理,帮助管理人员高效、准确地处理各类信息;②作为学习案例,帮助学生或开发者理解Java和Mysql在实际项目中的应用;③通过系统测试,确保系统稳定性和可靠性,减少实际运行中的问题。 其他说明:本项目不仅介绍了系统的功能实现,还详细描述了开发环境的搭建、数据库设计、系统测试等环节,为后续的系统优化和改进提供了参考。此外,作者在开发过程中总结了一些经验教训,如代码冗余、数据库性能优化等问题,为未来的开发工作提供了宝贵的经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高腾裕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值