llama-moe

GitHub
1k 60 中等 1 次阅读 昨天Apache-2.0开发框架语言模型
AI 解读 由 AI 自动生成,仅供参考

LLaMA-MoE 是一个基于 LLaMA 架构构建的开源混合专家(MoE)模型系列,旨在通过持续预训练打造更小、更高效的 AI 模型。它主要解决了大型语言模型参数量巨大导致部署成本高、推理速度慢的难题。通过将传统密集层拆分为稀疏专家网络并引入动态路由机制,LLaMA-MoE 在保持强大性能的同时,将每次推理实际激活的参数量控制在 30 亿至 35 亿之间,显著降低了硬件门槛。

这款工具特别适合 AI 研究人员、开发者以及希望在有限算力下进行大模型实验的团队使用。其技术亮点丰富:支持多种专家构建策略(如神经元独立与共享模式)和灵活的网关机制;集成了 FlashAttention-v2 以加速训练过程;并提供动态数据采样方案,优化了训练效率与效果。此外,项目还配备了详尽的训练监控指标,帮助用户实时掌握模型状态。无论是用于学术研究探索 MoE 架构潜力,还是作为轻量级基座模型进行下游任务微调,LLaMA-MoE 都提供了一个高效且易于上手的选择。

使用场景

某初创教育科技公司希望在其低配服务器集群上部署一个能流畅回答多学科问题的智能辅导助手,但面临高昂的算力成本与响应延迟挑战。

没有 llama-moe 时

  • 硬件门槛过高:为了获得足够的知识覆盖度,团队不得不尝试部署参数量巨大的稠密模型,导致单张消费级显卡无法承载,必须租用昂贵的 A100/H100 集群。
  • 推理速度缓慢:全量参数参与每次计算,使得首字生成延迟(TTFT)高达数秒,学生在使用时感到明显的卡顿,体验极差。
  • 资源利用率低下:无论问题是简单的算术还是复杂的历史分析,模型都消耗相同的算力,造成大量计算资源在简单任务上的浪费。
  • 微调成本昂贵:针对特定学科数据进行持续预训练或微调时,漫长的训练周期占用了大量 GPU 机时,严重拖慢了产品迭代节奏。

使用 llama-moe 后

  • 部署成本骤降:利用 llama-moe 仅激活 30-35 亿参数的特性,团队成功将模型部署在单张 RTX 4090 上,硬件成本降低超过 80%。
  • 响应实时流畅:稀疏专家机制确保只有相关领域的“专家”网络被唤醒,推理速度显著提升,实现了近乎实时的对话交互。
  • 动态算力分配:面对不同难度的题目,llama-moe 自动路由到最匹配的专家子网,在保持高精度的同时大幅减少了无效计算。
  • 高效持续学习:借助其优化的持续预训练流程,团队能快速注入最新的教材数据,训练耗时缩短了一半以上,迅速适配新课程需求。

llama-moe 通过“小而美”的混合专家架构,让中小团队也能在有限算力下拥有媲美大模型的智能服务能力。

运行环境要求

操作系统
  • Linux
GPU

必需 NVIDIA GPU,需安装 CUDA 11.8 (README 示例),需支持 flash-attn 编译

内存

未说明

依赖
notes1. 强烈建议使用 Conda 创建名为 'smoe' 的虚拟环境 (Python 3.11)。 2. 安装 flash-attn 前需配置较新版本的 GCC (如 gcc-10.1.0) 和对应的 CUDA 环境变量。 3. 安装 flash-attn 时需添加 '--no-build-isolation' 参数以避免错误。 4. 运行持续预训练前需手动创建 'logs/' 文件夹。 5. README 中的路径示例指向特定服务器 (/mnt/petrelfs),实际使用时需替换为本地路径。
python3.10+
torch
torchvision
torchaudio
flash-attn==2.0.1
transformers
git
llama-moe hero image

快速开始

LLaMA-MoE:基于LLaMA并通过持续预训练构建专家混合模型

LLaMA-MoE favicon
📢 一款更小、更实惠的MoE模型,人人可用!! 📃 技术报告

🎉 简介

LLaMA-MoE 是一系列基于 LLaMASlimPajama 开源的专家混合(MoE)模型。我们通过以下两个步骤构建了 LLaMA-MoE:

  1. 将 LLaMA 的前馈网络(FFN)划分为稀疏专家,并为每一层专家插入 top-K 门控机制。
  2. 使用来自 Sheared LLaMA 的优化数据采样权重以及从 SlimPajama 过滤出的数据集,对初始化的 MoE 模型进行持续预训练。

MoE 路由

🔥 特性

  1. 轻量级模型:激活的模型参数仅为 3.0~3.5B,非常适合部署和研究使用。
  2. 多种专家构建方法
    1. 神经元独立型:随机、聚类、协同激活图、梯度法(Zhang et al., 2022, Zuo et al., 2022
    2. 神经元共享型:内部共享、外部共享(残差连接)
  3. 多种 MoE 门控策略
    1. TopK 噪声门控(Shazeer et al., 2017
    2. Switch 门控(Fedus et al., 2022
  4. 快速持续预训练
    1. 集成 FlashAttention-v2(Dao, 2023
    2. 快速流式数据加载
  5. 丰富的监控指标
    1. 门控负载、门控重要性
    2. 步骤损失、令牌损失、平衡损失
    3. TGS(每秒处理的令牌数/显卡)、MFU(模型浮点运算利用率)
    4. 其他可视化工具
  6. 动态权重采样
    1. 自定义静态采样权重
    2. Sheared LLaMA 的动态批次加载(Xia et al., 2023

🚀 快速入门

# 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 = "苏州以……闻名"
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))

# 苏州以其美丽的园林而闻名。其中最著名的是拙政园。它是一座有着六百多年历史的古典中国园林。这座园林被分为三个

⚙️ 安装

  1. 准备 conda 环境:conda create -n smoe python=3.11(如果您的环境名称不是 smoe,可能需要在启动脚本中更改环境)
  2. ~/.bashrc 中添加正确的环境变量(为安装 flash-attngcc 设置为较新版本)。例如:
    export PATH=/mnt/petrelfs/share/cuda-11.8/bin:$PATH
    export LD_LIBRARY_PATH=/mnt/petrelfs/share/cuda-11.8/lib64:$LD_LIBRARY_PATH
    export PATH=/mnt/petrelfs/share/gcc-10.1.0/bin:$PATH
    export LD_LIBRARY_PATH=/mnt/petrelfs/share/gcc-10.1.0/lib64:$LD_LIBRARY_PATH
    
  3. 使变量生效:source ~/.bashrc
  4. 安装 PyTorch(CUDA-11.8):pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
  5. 安装依赖项:pip install -r requirements.txt
  6. 安装 flash-attnpip install flash-attn==2.0.1 --no-build-isolation。您可能需要遵循 flash-attn 的安装说明 以避免一些错误。
  7. 安装最新版 Git:conda install git
  8. 克隆仓库:git clone git@github.com:pjlab-sys4nlp/llama-moe.git(如果您未将 SSH 密钥设置到 GitHub,则可能无法通过 SSH 克隆。请参阅 文档 了解相关操作。)
  9. 更改当前目录:cd llama-moe
  10. 可编辑模式 安装 smoepip install -e .[dev]
  11. 设置 pre-commit 钩子:pre-commit install

📊 模型性能

模型 激活专家数 专家总数 激活参数量 基础模型 SFT 模型
LLaMA-MoE-3.0B 2 16 3.0B 🤗 base 🤗 SFT
LLaMA-MoE-3.5B (4/16) 4 16 3.5B 🤗 base 🤗 SFT
LLaMA-MoE-3.5B (2/8) 2 8 3.5B 🤗 base 🤗 SFT
  • 基础模型
模型 平均得分 SciQ PIQA WinoGrande ARC-e ARC-c (25) HellaSwag (10) LogiQA BoolQ (32) LAMBADA NQ (32) MMLU (5)
OPT-2.7B 50.3 78.9 74.8 60.8 54.4 34.0 61.4 25.8 63.3 63.6 10.7 25.8
Pythia-2.8B 51.5 83.2 73.6 59.6 58.8 36.7 60.7 28.1 65.9 64.6 8.7 26.8
INCITE-BASE-3B 53.7 85.6 73.9 63.5 61.7 40.3 64.7 27.5 65.8 65.4 15.2 27.2
Open-LLaMA-3B-v2 55.6 88.0 77.9 63.1 63.3 40.1 71.4 28.1 69.2 67.4 16.0 26.8
Sheared-LLaMA-2.7B 56.4 87.5 76.9 65.0 63.3 41.6 71.0 28.3 73.6 68.3 17.6 27.3
LLaMA-MoE-3.0B 55.5 84.2 77.5 63.6 60.2 40.9 70.8 30.6 71.9 66.6 17.0 26.8
LLaMA-MoE-3.5B (4/16) 57.7 87.6 77.9 65.5 65.6 44.2 73.3 29.7 75.0 69.5 20.3 26.8
LLaMA-MoE-3.5B (2/8) 57.6 88.4 77.6 66.7 65.3 43.1 73.3 29.6 73.9 69.4 19.8 27.0
  • SFT 模型
模型 MMLU ARC-c HellaSeag TruthfulQA MT-Bench
Sheared LLaMA-2.7B ShareGPT 28.41 41.04 71.21 47.65 3.79
Sheared LLaMA-2.7B Deita6K (Our Impl.) 25.24 43.69 71.70 49.00 4.06
LLaMA-MoE-v1-3.0B (2/16) 23.61 43.43 72.28 44.24 4.15
LLaMA-MoE-v1-3.5B (4/16) 26.49 48.29 75.10 45.91 4.60
LLaMA-MoE-v1-3.5B (2/8) 25.53 45.99 74.95 44.39 4.72

🚧 专家构建

  • 神经元独立
    • 独立随机bash ./scripts/expert_construction/split/run_split_random.sh
    • 独立聚类bash ./scripts/expert_construction/split/run_split_clustering.sh
  • 神经元共享
    • 共享内部bash ./scripts/expert_construction/split/run_split_gradient.sh
    • 共享外部bash ./scripts/expert_construction/split/run_split_gradient_residual.sh

更多信息,请参阅 专家构建文档

🚅 持续预训练

分词

SlimPajama 下载到 /path_to_data 目录,并将不同领域的数据分别放入独立的文件夹中:

  • /path_to_data/en_arxiv
  • /path_to_data/en_book
  • /path_to_data/en_c4
  • /path_to_data/en_cc
  • /path_to_data/en_stack
  • /path_to_data/en_wikipedia
  • /path_to_data/github

每个文件应以 *.jsonl 结尾,每行格式如下:

{"id": "id-info", "content": "待分词的原始文本"}

运行以下命令对各文件夹中的数据进行分词:

python -m smoe.utils.tokenize \
  -f jsonl \
  -t /path_to_tokenizer \
  -i /path_to_data/en_arxiv \
  -o /path_to_data_tokenized/en_arxiv

持续预训练 (CPT)

  • 注意: 请手动创建 logs/ 文件夹:mkdir -p logs
  • 要运行持续预训练,请参阅 CPT 文档

💎 评估

  • 关于 Natural Questions (NQ) 数据集上的评估,请参考 opencompass
  • 对于其他任务,请参考 lm-eval-harness

💬 有监督微调 (SFT)

我们提供了用于构建聊天机器人的简单 SFT 示例。 更多详情请参阅 SFT 文档以及 /mnt/petrelfs/zhutong/smoe/scripts/sft 目录。

📑 引用

@article{llama-moe,
  title={LLaMA-MoE: 基于 LLaMA 的混合专家模型及其持续预训练},
  author={Tong Zhu 和 Xiaoye Qu 和 Daize Dong 和 Jiacheng Ruan 和 Jingqi Tong 和 Conghui He 和 Yu Cheng},
  journal={arXiv 预印本 arXiv:2406.16554},
  year={2024},
  url={https://arxiv.org/abs/2406.16554},
}

LLaMA-MoE 团队 敬上 ❤️

版本历史

v1.0.0-publish2023/12/25
v0.3.2-cpt2023/11/22
v0.3.1-cpt-dynamic_batch_loading2023/11/17
v0.2.1-cpt-13b2023/10/07

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

159.6k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架