项目介绍:LLaMA-MoE
LLaMA-MoE 是一个基于 LLaMA 和 SlimPajama 的开源专家混合(Mixture-of-Experts,MoE)模型系列。这个项目的主要目的是通过持续的预训练构建一个更小且亲民的 MoE 模型,从而在不牺牲性能的前提下减少模型参数,使其更易于部署和研究使用。
特点
- 轻量化模型:激活的模型参数数量仅为3.0到3.5亿,便于部署和科研。
- 多种专家构建方法:
- 神经元独立:包括随机、聚类、共激活图和梯度等方法。
- 神经元共享:包括内部共享和残差共享。
- 多种 MoE 门控策略:
- 包括 TopK 噪音门控和 Switch 门控等方法。
- 快速持续预训练:
- 集成了 FlashAttention-v2,支持快速的流媒体数据加载。
- 丰富的监控项目:比如门负载、门重要性、步损失、令牌损失、平衡损失等指标,还有其他可视化工具。
- 动态权重采样:支持自定义的静态采样权重和 Sheared LLaMA 的动态批量加载。
快速开始
如下是一个简单的 Python 示例,展示了如何使用该模型生成文本:
# Python>=3.10
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_dir = "llama-moe/LLaMA-MoE-v1-3_5B-2_8"
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_dir, torch_dtype=torch.bfloat16, trust_remote_code=True)
model.eval()
model.to("cuda:0")
input_text = "Suzhou is famous of"
inputs = tokenizer(input_text, return_tensors="pt")
inputs = inputs.to("cuda:0")
pred = model.generate(**inputs, max_length=50, temperature=0.0)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
安装指南
为了使用 LLaMA-MoE,可以按照以下步骤安装所需环境:
- 准备 conda 环境。
- 配置必要的环境变量。
- 安装 PyTorch 和其他依赖包。
- 安装最新的 Git。
- 克隆项目代码库。
- 安装
smoe
模块,并设置pre-commit
钩子。
模型性能
LLaMA-MoE 提供了多种模型变体,适用于不同的任务和需求。它们在多个基准测试中表现出色,提供了强大的性能支持。
专家构建
该项目提供了多种神经元独立和共享的专家构建方法,可以根据需求选择合适的策略来优化模型。
持续预训练
持续预训练(CPT)允许对模型进行长时间的数据流训练,以提高其在不同领域的表现。
评估与微调
LLaMA-MoE 提供了一些简单的监督微调(SFT)示例,用于构建对话机器人。在不同的数据集上可以进行评估,以确保模型在真实场景中的有效性。
这个项目旨在简化 MoE 模型的使用,为研究人员和开发者提供更灵活、更高效的工具来探索大规模语言模型的潜力。