[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-pjlab-sys4nlp--llama-moe":3,"tool-pjlab-sys4nlp--llama-moe":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",159636,2,"2026-04-17T23:33:34",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":74,"owner_location":74,"owner_email":74,"owner_twitter":74,"owner_website":74,"owner_url":75,"languages":76,"stars":89,"forks":90,"last_commit_at":91,"license":92,"difficulty_score":10,"env_os":93,"env_gpu":94,"env_ram":95,"env_deps":96,"category_tags":106,"github_topics":107,"view_count":32,"oss_zip_url":74,"oss_zip_packed_at":74,"status":17,"created_at":114,"updated_at":115,"faqs":116,"releases":147},8771,"pjlab-sys4nlp\u002Fllama-moe","llama-moe","⛷️ LLaMA-MoE: Building Mixture-of-Experts from LLaMA with Continual Pre-training (EMNLP 2024)","LLaMA-MoE 是一个基于 LLaMA 架构构建的开源混合专家（MoE）模型系列，旨在通过持续预训练打造更小、更高效的 AI 模型。它主要解决了大型语言模型参数量巨大导致部署成本高、推理速度慢的难题。通过将传统密集层拆分为稀疏专家网络并引入动态路由机制，LLaMA-MoE 在保持强大性能的同时，将每次推理实际激活的参数量控制在 30 亿至 35 亿之间，显著降低了硬件门槛。\n\n这款工具特别适合 AI 研究人员、开发者以及希望在有限算力下进行大模型实验的团队使用。其技术亮点丰富：支持多种专家构建策略（如神经元独立与共享模式）和灵活的网关机制；集成了 FlashAttention-v2 以加速训练过程；并提供动态数据采样方案，优化了训练效率与效果。此外，项目还配备了详尽的训练监控指标，帮助用户实时掌握模型状态。无论是用于学术研究探索 MoE 架构潜力，还是作为轻量级基座模型进行下游任务微调，LLaMA-MoE 都提供了一个高效且易于上手的选择。","\u003Cdiv align=\"center\">\n  \u003Ch1>LLaMA-MoE: Building Mixture-of-Experts from LLaMA with Continual Pre-training\u003C\u002Fh1>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpjlab-sys4nlp_llama-moe_readme_2255a071bf1c.png\" width=\"200\" alt=\"LLaMA-MoE favicon\" style=\"border-radius: 5%;\">\u003Cbr \u002F>\n  \u003Cspan style=\"color:red\">📢 \u003Cstrong>\u003Ci>A SMALLER AFFORDABLE MoE MODEL FOR EVERYONE!!\u003C\u002Fi>\u003C\u002Fstrong>\u003C\u002Fspan>\n  \u003Cdiv>\n    \u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fllama-moe\" target=\"_blank\">🤗 Model Weights\u003C\u002Fa> | \u003Ca href=\"#quick-start\">🚀 Quick Start\u003C\u002Fa> | \u003Ca href=\"#installation\">⚙️ Installation Guide\u003C\u002Fa> | \u003Ca href=\"#expert-construction\">🚧 Expert Construction\u003C\u002Fa> | \u003Ca href=\"#continual-pretraining\">🚅 Continual Pre-training\u003C\u002Fa> | \u003Ca href=\"#evaluation\">💎 Evaluation\u003C\u002Fa> | \u003Ca href=\"#sft\">💬 Supervised Fine-Tuning (SFT)\u003C\u002Fa>\n  \u003C\u002Fdiv>\n  \u003Ca href=\"docs\u002FLLaMA_MoE.pdf\" target=\"_blank\">\u003Cstrong>📃 Technical Report\u003C\u002Fstrong>\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Ch2 id=\"llama-moe\">🎉 Introduction\u003C\u002Fh2>\n\nLLaMA-MoE is a series of open-sourced Mixture-of-Expert (MoE) models based on [LLaMA](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fllama) and [SlimPajama](https:\u002F\u002Fwww.cerebras.net\u002Fblog\u002Fslimpajama-a-627b-token-cleaned-and-deduplicated-version-of-redpajama).\nWe build LLaMA-MoE with the following two steps:\n1. Partition LLaMA's FFNs into sparse experts and insert top-K gate for each layer of experts.\n2. Continually pre-train the initialized MoE model with an optimized data sampling weights from [Sheared LLaMA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2310.06694) and filtered datasets from [SlimPajama](https:\u002F\u002Fwww.cerebras.net\u002Fblog\u002Fslimpajama-a-627b-token-cleaned-and-deduplicated-version-of-redpajama).\n\n![MoE Routing](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpjlab-sys4nlp_llama-moe_readme_72f8a89121d2.gif)\n\n\u003Ch2 id=\"features\">🔥 Features\u003C\u002Fh2>\n\n1. **Lightweight Models**: The number of activated model parameters is only 3.0~3.5B, which is friendly for deployment and research usage.\n2. **Multiple Expert Construction Methods**:\n   1. Neuron-Independent: Random, Clustering, Co-activation Graph, Gradient ([Zhang et al., 2022](http:\u002F\u002Farxiv.org\u002Fabs\u002F2110.01786), [Zuo et al., 2022](http:\u002F\u002Farxiv.org\u002Fabs\u002F2204.07675))\n   2. Neuron-Sharing: Inner, Inter (residual)\n3. **Multiple MoE Gating Strategies**:\n   1. TopK Noisy Gate ([Shazeer et al., 2017](http:\u002F\u002Farxiv.org\u002Fabs\u002F1701.06538))\n   2. Switch Gating ([Fedus et al., 2022](http:\u002F\u002Farxiv.org\u002Fabs\u002F2101.03961))\n4. **Fast Continual Pre-training**:\n   1. FlashAttention-v2 integrated ([Dao, 2023](https:\u002F\u002Fgithub.com\u002FDao-AILab\u002Fflash-attention))\n   2. Fast streaming dataset loading\n5. **Abundant Monitor Items**:\n   1. Gate load, gate importance\n   2. Loss on steps, loss on tokens, balance loss\n   3. TGS (tokens\u002FGPU\u002Fsecond), MFU (model FLOPs utilization)\n   4. Other visualization utilities\n6. **Dynamic Weight Sampling**:\n   1. Self-defined static sampling weights\n   2. Sheared LLaMA's dynamic batch loading ([Xia et al., 2023](http:\u002F\u002Farxiv.org\u002Fabs\u002F2310.06694))\n\n\n\u003Ch2 id=\"quick-start\">🚀 QuickStart\u003C\u002Fh2>\n\n```python\n# python>=3.10\n\nimport torch\nfrom transformers import AutoTokenizer, AutoModelForCausalLM\n\nmodel_dir = \"llama-moe\u002FLLaMA-MoE-v1-3_5B-2_8\"\ntokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)\nmodel = AutoModelForCausalLM.from_pretrained(model_dir, torch_dtype=torch.bfloat16, trust_remote_code=True)\nmodel.eval()\nmodel.to(\"cuda:0\")\n\ninput_text = \"Suzhou is famous of\"\ninputs = tokenizer(input_text, return_tensors=\"pt\")\ninputs = inputs.to(\"cuda:0\")\n\npred = model.generate(**inputs, max_length=50, temperature=0.0)\nprint(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))\n# Suzhou is famous of its beautiful gardens. The most famous one is the Humble Administrator's Garden. It is a classical Chinese garden with a history of more than 600 years. The garden is divided into three\n```\n\n\u003Ch2 id=\"installation\">⚙️ Installation\u003C\u002Fh2>\n\n1. Prepare conda environment: `conda create -n smoe python=3.11` (If your environment name is not `smoe`, you may need to change environment in launching scripts)\n2. Add correct environment variables in `~\u002F.bashrc` (`gcc` is set to newer version for installing `flash-attn`). e.g.:\n    ```bash\n    export PATH=\u002Fmnt\u002Fpetrelfs\u002Fshare\u002Fcuda-11.8\u002Fbin:$PATH\n    export LD_LIBRARY_PATH=\u002Fmnt\u002Fpetrelfs\u002Fshare\u002Fcuda-11.8\u002Flib64:$LD_LIBRARY_PATH\n    export PATH=\u002Fmnt\u002Fpetrelfs\u002Fshare\u002Fgcc-10.1.0\u002Fbin:$PATH\n    export LD_LIBRARY_PATH=\u002Fmnt\u002Fpetrelfs\u002Fshare\u002Fgcc-10.1.0\u002Flib64:$LD_LIBRARY_PATH\n    ```\n3. Take the variables into effect: `source ~\u002F.bashrc`\n4. Install PyTorch (CUDA-11.8): `pip3 install torch torchvision torchaudio --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu118`\n5. Install dependencies: `pip install -r requirements.txt`\n6. Install `flash-attn`: `pip install flash-attn==2.0.1 --no-build-isolation`. You may need to follow the [flash-attn installation instructions](https:\u002F\u002Fgithub.com\u002FDao-AILab\u002Fflash-attention?tab=readme-ov-file#installation-and-features) to avoid some errors.\n7. Install the latest Git: `conda install git`\n8. Clone the repo: `git clone git@github.com:pjlab-sys4nlp\u002Fllama-moe.git` (If you don't setup the ssh key to GitHub, you may not able to clone through ssh. Check the [docs](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fauthentication\u002Fconnecting-to-github-with-ssh\u002Fadding-a-new-ssh-key-to-your-github-account) about it.)\n9. Change current directory: `cd llama-moe`\n10. Install `smoe` in [editable mode](https:\u002F\u002Fpip.pypa.io\u002Fen\u002Fstable\u002Fcli\u002Fpip_install\u002F#cmdoption-e): `pip install -e .[dev]`\n11. Setup `pre-commit` hooks: `pre-commit install`\n\n\u003Ch2 id=\"performance\">📊 Model Performance\u003C\u002Fh2>\n\n| Model                     | \\#Activated Experts | \\#Experts | \\#Activated Params |                         Foundation Model                          |                              SFT Model                               |\n| :------------------------ | :-----------------: | :-------: | :----------------: | :---------------------------------------------------------------: | :------------------------------------------------------------------: |\n| **LLaMA-MoE-3.0B**        |          2          |    16     |        3.0B        | [🤗 base](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_0B-2_16) | [🤗 SFT](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_0B-2_16-sft) |\n| **LLaMA-MoE-3.5B (4\u002F16)** |          4          |    16     |        3.5B        | [🤗 base](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_5B-4_16) | [🤗 SFT](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_5B-4_16-sft) |\n| **LLaMA-MoE-3.5B (2\u002F8)**  |          2          |     8     |        3.5B        | [🤗 base](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_5B-2_8)  | [🤗 SFT](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_5B-2_8-sft)  |\n\n- Foundation models\n\n| Model                                                                                 | Average  |   SciQ   |   PIQA   | WinoGrande |  ARC-e   | ARC-c (25) | HellaSwag (10) |  LogiQA  | BoolQ (32) | LAMBADA  | NQ (32)  | MMLU (5) |\n| :------------------------------------------------------------------------------------ | :------: | :------: | :------: | :--------: | :------: | :--------: | :------------: | :------: | :--------: | :------: | :------: | :------: |\n| [OPT-2.7B](https:\u002F\u002Fhuggingface.co\u002Ffacebook\u002Fopt-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   |\n| [Pythia-2.8B](https:\u002F\u002Fhuggingface.co\u002FEleutherAI\u002Fpythia-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   |\n| [INCITE-BASE-3B](https:\u002F\u002Fhuggingface.co\u002Ftogethercomputer\u002FRedPajama-INCITE-Base-3B-v1) |   53.7   |   85.6   |   73.9   |    63.5    |   61.7   |    40.3    |      64.7      |   27.5   |    65.8    |   65.4   |   15.2   |   27.2   |\n| [Open-LLaMA-3B-v2](https:\u002F\u002Fhuggingface.co\u002Fopenlm-research\u002Fopen_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   |\n| [Sheared-LLaMA-2.7B](https:\u002F\u002Fhuggingface.co\u002Fprinceton-nlp\u002FSheared-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** |\n| **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   |\n| **LLaMA-MoE-3.5B (4\u002F16)**                                                             | **57.7** |   87.6   | **77.9** |    65.5    | **65.6** |  **44.2**  |    **73.3**    |   29.7   |  **75.0**  | **69.5** | **20.3** |   26.8   |\n| **LLaMA-MoE-3.5B (2\u002F8)**                                                              |   57.6   | **88.4** |   77.6   |  **66.7**  |   65.3   |    43.1    |    **73.3**    |   29.6   |    73.9    |   69.4   |   19.8   |   27.0   |\n\n- SFT models\n\n| Model                                  | MMLU  | ARC-c | HellaSeag | TruthfulQA | MT-Bench |\n| :------------------------------------- | :---: | :---: | :-------: | :--------: | :------: |\n| Sheared LLaMA-2.7B ShareGPT            | 28.41 | 41.04 |   71.21   |   47.65    |   3.79   |\n| Sheared LLaMA-2.7B Deita6K (Our Impl.) | 25.24 | 43.69 |   71.70   |   49.00    |   4.06   |\n| LLaMA-MoE-v1-3.0B (2\u002F16)               | 23.61 | 43.43 |   72.28   |   44.24    |   4.15   |\n| LLaMA-MoE-v1-3.5B (4\u002F16)               | 26.49 | 48.29 |   75.10   |   45.91    |   4.60   |\n| LLaMA-MoE-v1-3.5B (2\u002F8)                | 25.53 | 45.99 |   74.95   |   44.39    |   4.72   |\n\n\u003Ch2 id=\"expert-construction\">🚧 Expert Construction\u003C\u002Fh2>\n\n- Neuron-Independent\n  - Independent\u003Csub>Random\u003C\u002Fsub>: `bash .\u002Fscripts\u002Fexpert_construction\u002Fsplit\u002Frun_split_random.sh`\n  - Independent\u003Csub>Clustering\u003C\u002Fsub>: `bash .\u002Fscripts\u002Fexpert_construction\u002Fsplit\u002Frun_split_clustering.sh`\n- Neuron-Sharing\n  - Sharing\u003Csub>Inner\u003C\u002Fsub>: `bash .\u002Fscripts\u002Fexpert_construction\u002Fsplit\u002Frun_split_gradient.sh`\n  - Sharing\u003Csub>Inter\u003C\u002Fsub>: `bash .\u002Fscripts\u002Fexpert_construction\u002Fsplit\u002Frun_split_gradient_residual.sh`\n\nFor more information, please refer to [Expert Construction docs](docs\u002Fexpert_construction\u002FREADME.md).\n\n\u003Ch2 id=\"continual-pretraining\">🚅 Continual Pre-training\u003C\u002Fh2>\n\n\n### Tokenization\n\nDownload [SlimPajama](https:\u002F\u002Fwww.cerebras.net\u002Fblog\u002Fslimpajama-a-627b-token-cleaned-and-deduplicated-version-of-redpajama) into `\u002Fpath_to_data` and put data from different domains into separate folders:\n  - `\u002Fpath_to_data\u002Fen_arxiv`\n  - `\u002Fpath_to_data\u002Fen_book`\n  - `\u002Fpath_to_data\u002Fen_c4`\n  - `\u002Fpath_to_data\u002Fen_cc`\n  - `\u002Fpath_to_data\u002Fen_stack`\n  - `\u002Fpath_to_data\u002Fen_wikipedia`\n  - `\u002Fpath_to_data\u002Fgithub`\n\nEach file should be end with `*.jsonl` and each line looks like:\n```\n{\"id\": \"id-info\", \"content\": \"raw text to be tokenized\"}\n```\n\nRun the following command to tokenize the data in each folder:\n\n```bash\npython -m smoe.utils.tokenize \\\n  -f jsonl \\\n  -t \u002Fpath_to_tokenizer \\\n  -i \u002Fpath_to_data\u002Fen_arxiv \\\n  -o \u002Fpath_to_data_tokenized\u002Fen_arxiv\n```\n\n### Continual Pre-training (CPT)\n\n- **NOTICE:** Please create `logs\u002F` folder manually: `mkdir -p logs`\n- To run the continual pre-training, please check the [CPT docs](docs\u002Fcontinual_pretraining\u002FREADME.md).\n\n\u003Ch2 id=\"evaluation\">💎 Evaluation\u003C\u002Fh2>\n\n- For evalution on Natural Questions (NQ), please refer to [opencompass](https:\u002F\u002Fgithub.com\u002FSpico197\u002Fopencompass\u002Ftree\u002Fmain).\n- For other tasks, please refer to [lm-eval-harness](https:\u002F\u002Fgithub.com\u002Fspico197\u002Fsmoe-eval).\n\n\u003Ch2 id=\"sft\">💬 Supervised Fine-Tuning (SFT)\u003C\u002Fh2>\n\nWe provide simple examples of SFT to build chatbots.\nPlease refer to [SFT docs](\u002Fmnt\u002Fpetrelfs\u002Fzhutong\u002Fsmoe\u002Fdocs\u002Fsupervised_fine_tuning\u002FSFT.md) and `\u002Fmnt\u002Fpetrelfs\u002Fzhutong\u002Fsmoe\u002Fscripts\u002Fsft` for more details.\n\n\u003Ch2 id=\"citation\">📑 Citation\u003C\u002Fh2>\n\n```bibtex\n@article{llama-moe,\n  title={LLaMA-MoE: Building Mixture-of-Experts from LLaMA with Continual Pre-training},\n  author={Tong Zhu and Xiaoye Qu and Daize Dong and Jiacheng Ruan and Jingqi Tong and Conghui He and Yu Cheng},\n  journal={arXiv preprint arXiv:2406.16554},\n  year={2024},\n  url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.16554},\n}\n```\n\n\u003Chr>\n\u003Cp align=\"center\">LLaMA-MoE Team w\u002F ❤️\u003C\u002Fp>\n","\u003Cdiv align=\"center\">\n  \u003Ch1>LLaMA-MoE：基于LLaMA并通过持续预训练构建专家混合模型\u003C\u002Fh1>\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpjlab-sys4nlp_llama-moe_readme_2255a071bf1c.png\" width=\"200\" alt=\"LLaMA-MoE favicon\" style=\"border-radius: 5%;\">\u003Cbr \u002F>\n  \u003Cspan style=\"color:red\">📢 \u003Cstrong>\u003Ci>一款更小、更实惠的MoE模型，人人可用！！\u003C\u002Fi>\u003C\u002Fstrong>\u003C\u002Fspan>\n  \u003Cdiv>\n    \u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fllama-moe\" target=\"_blank\">🤗 模型权重\u003C\u002Fa> | \u003Ca href=\"#quick-start\">🚀 快速入门\u003C\u002Fa> | \u003Ca href=\"#installation\">⚙️ 安装指南\u003C\u002Fa> | \u003Ca href=\"#expert-construction\">🚧 专家构建\u003C\u002Fa> | \u003Ca href=\"#continual-pretraining\">🚅 持续预训练\u003C\u002Fa> | \u003Ca href=\"#evaluation\">💎 评估\u003C\u002Fa> | \u003Ca href=\"#sft\">💬 监督微调（SFT）\u003C\u002Fa>\n  \u003C\u002Fdiv>\n  \u003Ca href=\"docs\u002FLLaMA_MoE.pdf\" target=\"_blank\">\u003Cstrong>📃 技术报告\u003C\u002Fstrong>\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Ch2 id=\"llama-moe\">🎉 简介\u003C\u002Fh2>\n\nLLaMA-MoE 是一系列基于 [LLaMA](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fllama) 和 [SlimPajama](https:\u002F\u002Fwww.cerebras.net\u002Fblog\u002Fslimpajama-a-627b-token-cleaned-and-deduplicated-version-of-redpajama) 开源的专家混合（MoE）模型。我们通过以下两个步骤构建了 LLaMA-MoE：\n1. 将 LLaMA 的前馈网络（FFN）划分为稀疏专家，并为每一层专家插入 top-K 门控机制。\n2. 使用来自 [Sheared LLaMA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2310.06694) 的优化数据采样权重以及从 [SlimPajama](https:\u002F\u002Fwww.cerebras.net\u002Fblog\u002Fslimpajama-a-627b-token-cleaned-and-deduplicated-version-of-redpajama) 过滤出的数据集，对初始化的 MoE 模型进行持续预训练。\n\n![MoE 路由](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpjlab-sys4nlp_llama-moe_readme_72f8a89121d2.gif)\n\n\u003Ch2 id=\"features\">🔥 特性\u003C\u002Fh2>\n\n1. **轻量级模型**：激活的模型参数仅为 3.0~3.5B，非常适合部署和研究使用。\n2. **多种专家构建方法**：\n   1. 神经元独立型：随机、聚类、协同激活图、梯度法（[Zhang et al., 2022](http:\u002F\u002Farxiv.org\u002Fabs\u002F2110.01786), [Zuo et al., 2022](http:\u002F\u002Farxiv.org\u002Fabs\u002F2204.07675)）\n   2. 神经元共享型：内部共享、外部共享（残差连接）\n3. **多种 MoE 门控策略**：\n   1. TopK 噪声门控（[Shazeer et al., 2017](http:\u002F\u002Farxiv.org\u002Fabs\u002F1701.06538)）\n   2. Switch 门控（[Fedus et al., 2022](http:\u002F\u002Farxiv.org\u002Fabs\u002F2101.03961)）\n4. **快速持续预训练**：\n   1. 集成 FlashAttention-v2（[Dao, 2023](https:\u002F\u002Fgithub.com\u002FDao-AILab\u002Fflash-attention)）\n   2. 快速流式数据加载\n5. **丰富的监控指标**：\n   1. 门控负载、门控重要性\n   2. 步骤损失、令牌损失、平衡损失\n   3. TGS（每秒处理的令牌数\u002F显卡）、MFU（模型浮点运算利用率）\n   4. 其他可视化工具\n6. **动态权重采样**：\n   1. 自定义静态采样权重\n   2. Sheared LLaMA 的动态批次加载（[Xia et al., 2023](http:\u002F\u002Farxiv.org\u002Fabs\u002F2310.06694)）\n\n\n\u003Ch2 id=\"quick-start\">🚀 快速入门\u003C\u002Fh2>\n\n```python\n# python>=3.10\n\nimport torch\nfrom transformers import AutoTokenizer, AutoModelForCausalLM\n\nmodel_dir = \"llama-moe\u002FLLaMA-MoE-v1-3_5B-2_8\"\ntokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)\nmodel = AutoModelForCausalLM.from_pretrained(model_dir, torch_dtype=torch.bfloat16, trust_remote_code=True)\nmodel.eval()\nmodel.to(\"cuda:0\")\n\ninput_text = \"苏州以……闻名\"\ninputs = tokenizer(input_text, return_tensors=\"pt\")\ninputs = inputs.to(\"cuda:0\")\n\npred = model.generate(**inputs, max_length=50, temperature=0.0)\nprint(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))\n\n# 苏州以其美丽的园林而闻名。其中最著名的是拙政园。它是一座有着六百多年历史的古典中国园林。这座园林被分为三个\n```\n\n\u003Ch2 id=\"installation\">⚙️ 安装\u003C\u002Fh2>\n\n1. 准备 conda 环境：`conda create -n smoe python=3.11`（如果您的环境名称不是 `smoe`，可能需要在启动脚本中更改环境）\n2. 在 `~\u002F.bashrc` 中添加正确的环境变量（为安装 `flash-attn` 将 `gcc` 设置为较新版本）。例如：\n    ```bash\n    export PATH=\u002Fmnt\u002Fpetrelfs\u002Fshare\u002Fcuda-11.8\u002Fbin:$PATH\n    export LD_LIBRARY_PATH=\u002Fmnt\u002Fpetrelfs\u002Fshare\u002Fcuda-11.8\u002Flib64:$LD_LIBRARY_PATH\n    export PATH=\u002Fmnt\u002Fpetrelfs\u002Fshare\u002Fgcc-10.1.0\u002Fbin:$PATH\n    export LD_LIBRARY_PATH=\u002Fmnt\u002Fpetrelfs\u002Fshare\u002Fgcc-10.1.0\u002Flib64:$LD_LIBRARY_PATH\n    ```\n3. 使变量生效：`source ~\u002F.bashrc`\n4. 安装 PyTorch（CUDA-11.8）：`pip3 install torch torchvision torchaudio --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu118`\n5. 安装依赖项：`pip install -r requirements.txt`\n6. 安装 `flash-attn`：`pip install flash-attn==2.0.1 --no-build-isolation`。您可能需要遵循 [flash-attn 的安装说明](https:\u002F\u002Fgithub.com\u002FDao-AILab\u002Fflash-attention?tab=readme-ov-file#installation-and-features) 以避免一些错误。\n7. 安装最新版 Git：`conda install git`\n8. 克隆仓库：`git clone git@github.com:pjlab-sys4nlp\u002Fllama-moe.git`（如果您未将 SSH 密钥设置到 GitHub，则可能无法通过 SSH 克隆。请参阅 [文档](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fauthentication\u002Fconnecting-to-github-with-ssh\u002Fadding-a-new-ssh-key-to-your-github-account) 了解相关操作。）\n9. 更改当前目录：`cd llama-moe`\n10. 以 [可编辑模式](https:\u002F\u002Fpip.pypa.io\u002Fen\u002Fstable\u002Fcli\u002Fpip_install\u002F#cmdoption-e) 安装 `smoe`：`pip install -e .[dev]`\n11. 设置 `pre-commit` 钩子：`pre-commit install`\n\n\u003Ch2 id=\"performance\">📊 模型性能\u003C\u002Fh2>\n\n| 模型                     | 激活专家数 | 专家总数 | 激活参数量 | 基础模型                          | SFT 模型                               |\n| :------------------------ | :---------: | :-------: | :----------: | :-----------------------------------------------: | :--------------------------------------------------: |\n| **LLaMA-MoE-3.0B**        |      2      |    16     |    3.0B      | [🤗 base](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_0B-2_16) | [🤗 SFT](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_0B-2_16-sft) |\n| **LLaMA-MoE-3.5B (4\u002F16)** |      4      |    16     |    3.5B      | [🤗 base](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_5B-4_16) | [🤗 SFT](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_5B-4_16-sft) |\n| **LLaMA-MoE-3.5B (2\u002F8)**  |      2      |     8     |    3.5B      | [🤗 base](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_5B-2_8)  | [🤗 SFT](https:\u002F\u002Fhuggingface.co\u002Fllama-moe\u002FLLaMA-MoE-v1-3_5B-2_8-sft)  |\n\n- 基础模型\n\n| 模型                                                                                 | 平均得分  |   SciQ   |   PIQA   | WinoGrande |  ARC-e   | ARC-c (25) | HellaSwag (10) |  LogiQA  | BoolQ (32) | LAMBADA  | NQ (32)  | MMLU (5) |\n| :------------------------------------------------------------------------------------ | :------: | :------: | :------: | :--------: | :------: | :--------: | :------------: | :------: | :--------: | :------: | :------: | :------: |\n| [OPT-2.7B](https:\u002F\u002Fhuggingface.co\u002Ffacebook\u002Fopt-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   |\n| [Pythia-2.8B](https:\u002F\u002Fhuggingface.co\u002FEleutherAI\u002Fpythia-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   |\n| [INCITE-BASE-3B](https:\u002F\u002Fhuggingface.co\u002Ftogethercomputer\u002FRedPajama-INCITE-Base-3B-v1) |   53.7   |   85.6   |   73.9   |    63.5    |   61.7   |    40.3    |      64.7      |   27.5   |    65.8    |   65.4   |   15.2   |   27.2   |\n| [Open-LLaMA-3B-v2](https:\u002F\u002Fhuggingface.co\u002Fopenlm-research\u002Fopen_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   |\n| [Sheared-LLaMA-2.7B](https:\u002F\u002Fhuggingface.co\u002Fprinceton-nlp\u002FSheared-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** |\n| **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   |\n| **LLaMA-MoE-3.5B (4\u002F16)**                                                             | **57.7** |   87.6   | **77.9** |    65.5    | **65.6** |  **44.2**  |    **73.3**    |   29.7   |  **75.0**  | **69.5** | **20.3** |   26.8   |\n| **LLaMA-MoE-3.5B (2\u002F8)**                                                              |   57.6   | **88.4** |   77.6   |  **66.7**  |   65.3   |    43.1    |    **73.3**    |   29.6   |    73.9    |   69.4   |   19.8   |   27.0   |\n\n- SFT 模型\n\n| 模型                                  | MMLU  | ARC-c | HellaSeag | TruthfulQA | MT-Bench |\n| :------------------------------------- | :---: | :---: | :-------: | :--------: | :------: |\n| Sheared LLaMA-2.7B ShareGPT            | 28.41 | 41.04 |   71.21   |   47.65    |   3.79   |\n| Sheared LLaMA-2.7B Deita6K (Our Impl.) | 25.24 | 43.69 |   71.70   |   49.00    |   4.06   |\n| LLaMA-MoE-v1-3.0B (2\u002F16)               | 23.61 | 43.43 |   72.28   |   44.24    |   4.15   |\n| LLaMA-MoE-v1-3.5B (4\u002F16)               | 26.49 | 48.29 |   75.10   |   45.91    |   4.60   |\n| LLaMA-MoE-v1-3.5B (2\u002F8)                | 25.53 | 45.99 |   74.95   |   44.39    |   4.72   |\n\n\u003Ch2 id=\"expert-construction\">🚧 专家构建\u003C\u002Fh2>\n\n- 神经元独立\n  - 独立\u003Csub>随机\u003C\u002Fsub>：`bash .\u002Fscripts\u002Fexpert_construction\u002Fsplit\u002Frun_split_random.sh`\n  - 独立\u003Csub>聚类\u003C\u002Fsub>：`bash .\u002Fscripts\u002Fexpert_construction\u002Fsplit\u002Frun_split_clustering.sh`\n- 神经元共享\n  - 共享\u003Csub>内部\u003C\u002Fsub>：`bash .\u002Fscripts\u002Fexpert_construction\u002Fsplit\u002Frun_split_gradient.sh`\n  - 共享\u003Csub>外部\u003C\u002Fsub>：`bash .\u002Fscripts\u002Fexpert_construction\u002Fsplit\u002Frun_split_gradient_residual.sh`\n\n更多信息，请参阅 [专家构建文档](docs\u002Fexpert_construction\u002FREADME.md)。\n\n\u003Ch2 id=\"continual-pretraining\">🚅 持续预训练\u003C\u002Fh2>\n\n### 分词\n\n将 [SlimPajama](https:\u002F\u002Fwww.cerebras.net\u002Fblog\u002Fslimpajama-a-627b-token-cleaned-and-deduplicated-version-of-redpajama) 下载到 `\u002Fpath_to_data` 目录，并将不同领域的数据分别放入独立的文件夹中：\n  - `\u002Fpath_to_data\u002Fen_arxiv`\n  - `\u002Fpath_to_data\u002Fen_book`\n  - `\u002Fpath_to_data\u002Fen_c4`\n  - `\u002Fpath_to_data\u002Fen_cc`\n  - `\u002Fpath_to_data\u002Fen_stack`\n  - `\u002Fpath_to_data\u002Fen_wikipedia`\n  - `\u002Fpath_to_data\u002Fgithub`\n\n每个文件应以 `*.jsonl` 结尾，每行格式如下：\n```\n{\"id\": \"id-info\", \"content\": \"待分词的原始文本\"}\n```\n\n运行以下命令对各文件夹中的数据进行分词：\n\n```bash\npython -m smoe.utils.tokenize \\\n  -f jsonl \\\n  -t \u002Fpath_to_tokenizer \\\n  -i \u002Fpath_to_data\u002Fen_arxiv \\\n  -o \u002Fpath_to_data_tokenized\u002Fen_arxiv\n```\n\n### 持续预训练 (CPT)\n\n- **注意：** 请手动创建 `logs\u002F` 文件夹：`mkdir -p logs`\n- 要运行持续预训练，请参阅 [CPT 文档](docs\u002Fcontinual_pretraining\u002FREADME.md)。\n\n\u003Ch2 id=\"evaluation\">💎 评估\u003C\u002Fh2>\n\n- 关于 Natural Questions (NQ) 数据集上的评估，请参考 [opencompass](https:\u002F\u002Fgithub.com\u002FSpico197\u002Fopencompass\u002Ftree\u002Fmain)。\n- 对于其他任务，请参考 [lm-eval-harness](https:\u002F\u002Fgithub.com\u002Fspico197\u002Fsmoe-eval)。\n\n\u003Ch2 id=\"sft\">💬 有监督微调 (SFT)\u003C\u002Fh2>\n\n我们提供了用于构建聊天机器人的简单 SFT 示例。\n更多详情请参阅 [SFT 文档](\u002Fmnt\u002Fpetrelfs\u002Fzhutong\u002Fsmoe\u002Fdocs\u002Fsupervised_fine_tuning\u002FSFT.md)以及 `\u002Fmnt\u002Fpetrelfs\u002Fzhutong\u002Fsmoe\u002Fscripts\u002Fsft` 目录。\n\n\u003Ch2 id=\"citation\">📑 引用\u003C\u002Fh2>\n\n```bibtex\n@article{llama-moe,\n  title={LLaMA-MoE: 基于 LLaMA 的混合专家模型及其持续预训练},\n  author={Tong Zhu 和 Xiaoye Qu 和 Daize Dong 和 Jiacheng Ruan 和 Jingqi Tong 和 Conghui He 和 Yu Cheng},\n  journal={arXiv 预印本 arXiv:2406.16554},\n  year={2024},\n  url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.16554},\n}\n```\n\n\u003Chr>\n\u003Cp align=\"center\">LLaMA-MoE 团队 敬上 ❤️\u003C\u002Fp>","# LLaMA-MoE 快速上手指南\n\nLLaMA-MoE 是一个基于 LLaMA 架构的开源混合专家（MoE）模型系列。其激活参数量仅为 3.0B~3.5B，兼具高性能与低部署成本，适合研究与轻量级应用。\n\n## 1. 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux (推荐)\n*   **Python 版本**: >= 3.10 (推荐 3.11)\n*   **CUDA 版本**: 11.8 (用于安装 FlashAttention)\n*   **编译器**: GCC 较新版本 (推荐 10.1.0+)\n*   **硬件**: NVIDIA GPU (支持 CUDA)\n\n**前置依赖检查：**\n请确保已安装 `conda` 和 `git`。若需编译 `flash-attn`，请确认环境变量中已正确配置 CUDA 和 GCC 路径。\n\n## 2. 安装步骤\n\n请按顺序执行以下命令完成环境搭建：\n\n### 2.1 创建 Conda 环境\n```bash\nconda create -n smoe python=3.11\nconda activate smoe\n```\n\n### 2.2 配置环境变量 (可选但推荐)\n如果您的系统默认 GCC 或 CUDA 版本过旧，请在 `~\u002F.bashrc` 中添加如下配置（路径需根据实际安装位置调整）：\n```bash\nexport PATH=\u002Fpath\u002Fto\u002Fcuda-11.8\u002Fbin:$PATH\nexport LD_LIBRARY_PATH=\u002Fpath\u002Fto\u002Fcuda-11.8\u002Flib64:$LD_LIBRARY_PATH\nexport PATH=\u002Fpath\u002Fto\u002Fgcc-10.1.0\u002Fbin:$PATH\nexport LD_LIBRARY_PATH=\u002Fpath\u002Fto\u002Fgcc-10.1.0\u002Flib64:$LD_LIBRARY_PATH\n```\n使配置生效：\n```bash\nsource ~\u002F.bashrc\n```\n\n### 2.3 安装 PyTorch (CUDA 11.8)\n```bash\npip3 install torch torchvision torchaudio --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu118\n```\n> **国内加速建议**：如遇下载缓慢，可使用清华源：\n> `pip3 install torch torchvision torchaudio --index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple` (需确保 wheel 兼容 CUDA 11.8，否则建议使用官方源或手动下载 whl)。\n\n### 2.4 克隆项目并安装依赖\n```bash\n# 克隆仓库\ngit clone git@github.com:pjlab-sys4nlp\u002Fllama-moe.git\ncd llama-moe\n\n# 安装项目依赖\npip install -r requirements.txt\n\n# 安装 flash-attn (必须指定版本且禁用构建隔离以避免错误)\npip install flash-attn==2.0.1 --no-build-isolation\n\n# 以可编辑模式安装 smoe 包\npip install -e .[dev]\n\n# 初始化 pre-commit 钩子\npre-commit install\n```\n\n## 3. 基本使用\n\n安装完成后，您可以直接使用 Hugging Face `transformers` 加载模型进行推理。以下是最简单的文本生成示例：\n\n```python\n# python>=3.10\n\nimport torch\nfrom transformers import AutoTokenizer, AutoModelForCausalLM\n\n# 指定模型目录 (可从 HuggingFace 自动下载或填写本地路径)\nmodel_dir = \"llama-moe\u002FLLaMA-MoE-v1-3_5B-2_8\"\n\n# 加载分词器和模型\ntokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)\nmodel = AutoModelForCausalLM.from_pretrained(model_dir, torch_dtype=torch.bfloat16, trust_remote_code=True)\n\n# 设置模型为评估模式并移至 GPU\nmodel.eval()\nmodel.to(\"cuda:0\")\n\n# 准备输入文本\ninput_text = \"Suzhou is famous of\"\ninputs = tokenizer(input_text, return_tensors=\"pt\")\ninputs = inputs.to(\"cuda:0\")\n\n# 生成预测\npred = model.generate(**inputs, max_length=50, temperature=0.0)\n\n# 解码并输出结果\nprint(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))\n```\n\n**预期输出示例：**\n> Suzhou is famous of its beautiful gardens. The most famous one is the Humble Administrator's Garden. It is a classical Chinese garden with a history of more than 600 years...\n\n---\n*注：更多高级功能（如专家构建、持续预训练、SFT 微调）请参考项目官方文档。*","某初创教育科技公司希望在其低配服务器集群上部署一个能流畅回答多学科问题的智能辅导助手，但面临高昂的算力成本与响应延迟挑战。\n\n### 没有 llama-moe 时\n- **硬件门槛过高**：为了获得足够的知识覆盖度，团队不得不尝试部署参数量巨大的稠密模型，导致单张消费级显卡无法承载，必须租用昂贵的 A100\u002FH100 集群。\n- **推理速度缓慢**：全量参数参与每次计算，使得首字生成延迟（TTFT）高达数秒，学生在使用时感到明显的卡顿，体验极差。\n- **资源利用率低下**：无论问题是简单的算术还是复杂的历史分析，模型都消耗相同的算力，造成大量计算资源在简单任务上的浪费。\n- **微调成本昂贵**：针对特定学科数据进行持续预训练或微调时，漫长的训练周期占用了大量 GPU 机时，严重拖慢了产品迭代节奏。\n\n### 使用 llama-moe 后\n- **部署成本骤降**：利用 llama-moe 仅激活 30-35 亿参数的特性，团队成功将模型部署在单张 RTX 4090 上，硬件成本降低超过 80%。\n- **响应实时流畅**：稀疏专家机制确保只有相关领域的“专家”网络被唤醒，推理速度显著提升，实现了近乎实时的对话交互。\n- **动态算力分配**：面对不同难度的题目，llama-moe 自动路由到最匹配的专家子网，在保持高精度的同时大幅减少了无效计算。\n- **高效持续学习**：借助其优化的持续预训练流程，团队能快速注入最新的教材数据，训练耗时缩短了一半以上，迅速适配新课程需求。\n\nllama-moe 通过“小而美”的混合专家架构，让中小团队也能在有限算力下拥有媲美大模型的智能服务能力。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpjlab-sys4nlp_llama-moe_b5f7a2a7.png","pjlab-sys4nlp","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fpjlab-sys4nlp_3667d727.png",null,"https:\u002F\u002Fgithub.com\u002Fpjlab-sys4nlp",[77,81,85],{"name":78,"color":79,"percentage":80},"Python","#3572A5",79.8,{"name":82,"color":83,"percentage":84},"Shell","#89e051",20.2,{"name":86,"color":87,"percentage":88},"Makefile","#427819",0,1001,60,"2026-04-16T07:55:53","Apache-2.0","Linux","必需 NVIDIA GPU，需安装 CUDA 11.8 (README 示例)，需支持 flash-attn 编译","未说明",{"notes":97,"python":98,"dependencies":99},"1. 强烈建议使用 Conda 创建名为 'smoe' 的虚拟环境 (Python 3.11)。\n2. 安装 flash-attn 前需配置较新版本的 GCC (如 gcc-10.1.0) 和对应的 CUDA 环境变量。\n3. 安装 flash-attn 时需添加 '--no-build-isolation' 参数以避免错误。\n4. 运行持续预训练前需手动创建 'logs\u002F' 文件夹。\n5. README 中的路径示例指向特定服务器 (\u002Fmnt\u002Fpetrelfs)，实际使用时需替换为本地路径。","3.10+",[100,101,102,103,104,105],"torch","torchvision","torchaudio","flash-attn==2.0.1","transformers","git",[14,35],[108,109,110,111,112,113],"llama","llm","mixture-of-experts","moe","continual-pre-training","expert-partition","2026-03-27T02:49:30.150509","2026-04-18T09:19:31.327258",[117,122,127,132,137,142],{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},39340,"为什么设置 per_device_train_batch_size=1 时，GPU 显存仍然几乎被占满？","这是正常现象。在 Llama2-7b 模型上进行常规 SFT 训练时，即使 batch_size 设为 1，显存消耗也与此类似。如果您希望节省更多显存，建议将 ZeRO-1 优化策略更改为 ZeRO-3 或使用带有 full_shard 的 FSDP（Fully Sharded Data Parallel）。","https:\u002F\u002Fgithub.com\u002Fpjlab-sys4nlp\u002Fllama-moe\u002Fissues\u002F67",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},39341,"加载模型时出现 \"Some weights were not initialized\" 警告（特别是 rotary_emb.inv_freq），这会影响模型效果吗？","通常没有影响。`inv_freq` 参数在每次初始化模型时都会从头重新生成，这是预期行为。只要您没有对该部分权重进行过微调或修改，这种重新初始化是可以接受的。如果您确实微调过该参数，它应该包含在保存的模型权重中，此时才需要关注。","https:\u002F\u002Fgithub.com\u002Fpjlab-sys4nlp\u002Fllama-moe\u002Fissues\u002F66",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},39342,"在使用聚类方法构建专家（Expert Construction）时，down 和 gate 权重是如何根据 up 权重的聚类结果进行划分的？为什么要这样做？","down 和 gate 权重是直接基于 up 权重的聚类结果进行分割的，不需要对它们单独进行 k-means 聚类。\n原因如下：\n1. Moefication 方案本身就是基于 up 进行划分的，本项目参考了此做法。\n2. 划分后的 up、down 和 gate 权重都由同一个路由网络控制。如果分别对它们聚类，无法保证原有神经元与参数之间的映射关系。\n3. 实验表明，基于 gate 或 down 聚类进行划分的结果与基于 up 聚类的结果差异不大，因此最终选择以 up 为准。\n具体操作步骤：\n1. 运行 `scripts\u002Fmoefication\u002Fsplit\u002Frun_split_clustering.sh`，设置 `proj_type=up_proj`，获取 up 的聚类结果文件。\n2. 修改 `scripts\u002Fmoefication\u002Fconvert\u002Frun_convert.sh`，将 `split_file_path` 指向上述结果路径，并设置 `proj_type=up_proj`，运行后即可得到划分好的模型。核心代码位于 `smoe\u002Futils\u002Fexpert_construction\u002Fconvert_llama_moe.py`。","https:\u002F\u002Fgithub.com\u002Fpjlab-sys4nlp\u002Fllama-moe\u002Fissues\u002F56",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},39343,"运行脚本时遇到 \"srun: command not found\" 或 slurm 相关错误怎么办？","项目默认使用 Slurm 集群调度系统（依赖 `sbatch` 和 `srun` 命令）。如果您不在 Slurm 环境中运行，需要手动修改脚本，移除或注释掉相关的 `srun` 命令以适应本地环境。同时检查并删除不适用的参数（如 `--quotatype` 或特定的 gres 配置）。","https:\u002F\u002Fgithub.com\u002Fpjlab-sys4nlp\u002Fllama-moe\u002Fissues\u002F54",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},39344,"将稠密模型转换为 MoE 模型后，可以直接使用吗？还是需要进一步训练？","转换后的模型虽然可以加载并进行文本生成，但其预测质量无法保证。为了恢复语言能力，必须对转换后的模型进行持续预训练（Continual Pre-training, CPT）。直接加载未经过持续预训练的随机初始化专家模型通常效果不佳。","https:\u002F\u002Fgithub.com\u002Fpjlab-sys4nlp\u002Fllama-moe\u002Fissues\u002F65",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},39345,"如何在单张 A100 (80G) 上进行持续预训练？遇到 CUDA Out Of Memory 错误如何解决？","在单卡上训练大模型容易显存不足。除了尝试设置环境变量 `export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32` 外，更有效的方案是调整显存优化策略：\n1. 启用或升级 DeepSpeed ZeRO 策略（如从 ZeRO-1 升级到 ZeRO-3）。\n2. 使用 FSDP (Fully Sharded Data Parallel) 并开启 `full_shard` 选项。\n3. 减小 `per_device_train_batch_size` 并增加 `gradient_accumulation_steps` 以保持等效批量大小。\n4. 开启混合精度训练（bf16 或 fp16）。","https:\u002F\u002Fgithub.com\u002Fpjlab-sys4nlp\u002Fllama-moe\u002Fissues\u002F73",[148,153,158,163],{"id":149,"version":150,"summary_zh":151,"released_at":152},315269,"v1.0.0-publish","一切似乎都准备好了。","2023-12-25T03:02:12",{"id":154,"version":155,"summary_zh":156,"released_at":157},315270,"v0.3.2-cpt","- 添加剪切骆驼的最终数据部分\n- 在配置中添加 gate_network_type、moe_calculator_score_scale_factor 和 update prob_map 参数\n- 添加执行脚本","2023-11-22T07:24:09",{"id":159,"version":160,"summary_zh":161,"released_at":162},315271,"v0.3.1-cpt-dynamic_batch_loading","- 基于4096上下文长度训练的Llama2 CPT。- 采用ShearedLlama实现的动态批量加载。","2023-11-17T09:09:28",{"id":164,"version":165,"summary_zh":74,"released_at":166},315272,"v0.2.1-cpt-13b","2023-10-07T05:30:39"]