[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-lsdefine--simple_GRPO":3,"tool-lsdefine--simple_GRPO":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 真正成长为懂上",156804,2,"2026-04-15T11:34:33",[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":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":75,"owner_location":75,"owner_email":76,"owner_twitter":75,"owner_website":75,"owner_url":77,"languages":78,"stars":83,"forks":84,"last_commit_at":85,"license":86,"difficulty_score":87,"env_os":88,"env_gpu":89,"env_ram":90,"env_deps":91,"category_tags":98,"github_topics":75,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":99,"updated_at":100,"faqs":101,"releases":139},7821,"lsdefine\u002Fsimple_GRPO","simple_GRPO","A very simple  GRPO implement for reproducing r1-like LLM thinking.","simple_GRPO 是一个极简开源的 GRPO（组相对策略优化）实现，旨在复现类似 R1 大模型的推理思考能力。它通过精简代码结构，解决了传统强化学习框架复杂、显存占用高以及难以快速验证新想法的痛点。\n\n该项目核心代码仅约 200 行，不依赖 Ray 等重型组件，仅需 DeepSpeed 和 PyTorch 即可运行。其独特亮点在于将参考模型与训练模型解耦：参考模型可独立部署在另一张显卡甚至不同机器上，有效避免了多进程导致的显存冗余，使得在单张 80G A800 上训练 7B 模型成为可能。实验显示，Qwen2.5 系列模型在短短一小时内即可完成训练，并在早期步骤中展现出显著的“顿悟时刻”。\n\nsimple_GRPO 非常适合希望深入理解 RLHF 流程的研究人员、需要快速原型验证算法改进的开发者，以及受限于显存资源但想尝试大模型强化学习的团队。它不仅是一个高效的训练工具，更是一份优秀的教学代码，帮助用户轻松探索多答案生成、KL 惩罚调整等前沿技术细节。","# 🚀🚀🚀 simple_GRPO 🚀🚀🚀\nA very simple GRPO implement for reproducing r1-like LLM thinking.\nThis is a simple open source implementation that utilizes the core loss calculation formula referenced from Hugging Face's trl. \nWe make the simplest codebase to support: \n- Save the GPU memory to make a feasible and efficient training. \n- Quickly understand RL processes such as GRPO from a teaching perspective. \n- Quickly try a lot of things, such as improved multi-answer generation, regrouping, penalty on KL, and parameter tuning.\n- \"Aha moment\" is observed during the early stages of model training.\n\n## ✨NEW\n- **2025\u002F07\u002F23: 🚀 Check out [LSRL](https:\u002F\u002Fgithub.com\u002Flsdefine\u002Flsrl) - Our next-generation RL framework with custom optimizer and streamlined architecture for better performance!**\n- 2025\u002F02\u002F19: Added a loss triton implementation, which has a little speedup, but you can choose not to use it. See *simple_grpo_v1* fold\n- 2025\u002F02\u002F19: Added regroup version, implemented sampling of generated data on ref_server. See *regroup_ver* fold\n- 2025\u002F02\u002F27: Added vllm package to accelerate the inference.\n- 2025\u002F03\u002F24: Added reinforce++ algorithm.Usage is the same as before.\n\n## 🌟 Features\n### 💡 Simplicity\nThe project code is simple, with only about 200 lines of code spread across 2 files. It only depends on standard libraries such as _deepspeed_ and _torch_, without requiring dependencies like ray. It is designed to allow for more complex interventions.\n\n### 🤖 Splited Reference Model\nThe reference model part is decoupled, which allows it to be run on different GPUs (even on a different machine with 4090). This avoids having the reference model and the training model on the same GPU, preventing multiple copies created by torch’s multiprocessing, and enabling training of a 7B model on 80G A800.\n\n### 💃 Performance\nTraining completed in under 1 hour on 1*A800 GPUs. Both Qwen2.5-7B and Qwen2.5-3B exhibited an \"Aha moment\" within the first 30 optimization steps.\n\n### 🥳 Core Loss Calculation\nThe loss calculation formula is based on Hugging Face's trl. We extend our gratitude to Hugging Face for their contribution.\n\n## 🙌 Environment\nThe runtime environment is in the requirements.txt\nso you can\n``` bash\npip install -r requirements.txt\n```\nAt least two GPUs are needed.\n\n**Warning:** \nYou may need to install datasets and add a http proxy (maybe) to run the example script that simply use GSM8K. \n``` bash\npip install datasets\n```\nThis package is only used for simply loading GSM8K. \nFor real usage, users should prepare their own data, so datasets is not a strict requirement.\n\n**BTW**：if datasets is not installed and you do not load dataset in file, the generate process has no data, so the training process (as well as ref process) is always **waiting for batch**.\n\n## Usage\n### Now, if you have three GPUs or more, you will have a better choice!!!\nRun the following command:\n``` bash\nCUDA_VISIBLE_DEVICES=7 python ref_server.py\n```\nThis just uses one GPU to collect and run the reference model.\n\nIn *grpo_vllm_one.py*, set the generation device index ​relative to the visible devices​ in next step:\n``` bash\ngen_device = 1\n```\nThen, open another bash:\n``` bash\nCUDA_VISIBLE_DEVICES=2,3,4,5,6 deepspeed grpo_vllm_one.py\n```\n## ✨ Experimental Results\n\n1. Runtime Environment\n- Hardware Setup: 2×A800 (80GB) GPUs\n- Configuration:\n  - Training: 1 GPU with Zero-Stage 2 optimization\n  - Inference: Dedicated 1 GPU (3090\u002F4090 compatible)\n\n2. Training Performance\n   \n| Model        | Steps | Time       |\n|--------------|-------|------------|\n| Qwen2.5-3B   | 60    | 12m 34s    |\n| Qwen2.5-7B   | 60    | 16m 40s    |\n\n2.1 Qwen2.5-3B\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flsdefine_simple_GRPO_readme_aa7098ccd51b.jpg\" alt=\"Qwen2.5-3B Accuracy\" width=\"70%\" style=\"display: inline-block; margin-right: 5px;\">  \n\n- Accuracy:\n  - Stabilizes above 60% after 5 optimization steps\n  - Peaks at ~70%\n- Format Compliance:\n  - Reaches ≈100% after 30 steps\n\n2.2 Qwen2.5-7B\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flsdefine_simple_GRPO_readme_f0bfb33bf3f6.jpg\" alt=\"Qwen2.5-3B Accuracy\" width=\"70%\" style=\"display: inline-block; margin-right: 5px;\">  \n\n- Accuracy:\n  - Maintains >90% throughout training\n- Format Compliance:\n  - Achieves 100% within 30 steps\n- Convergence: Both metrics show rapid convergence\n\n## Aha Moment\n1. Qwen2.5-3B (Step 20)\n> `\u003Cthink>`\n> ...\n> To find out how many more eggs Camden painted than Arnold,  we subtract the number of eggs painted by Arnold from the number of eggs painted by Camden. So, 21 - 28 = -7.  **However, this result doesn't make sense in the context of the problem,\n> as Camden cannot have painted fewer eggs than Arnold.\n> Let's reconsider the initial solution steps:\n> we should verify if the initial assumption about the relationship between Camden and Sarah's eggs is correct.**\n> ...\n> `\u003C\u002Fthink>`\n> `\u003Canswer>`-7`\u003C\u002Fanswer>`\n\n2. Qwen2.5-7B (Step 20)\n\n> `\u003Cthink>`\n> ...\n> Therefore, Joanne gathered 350 apples from the average trees.\n> **However, this doesn't seem right because the total should be 500 and we've already accounted for 150,\n> leaving room only for 350 from the average trees, which contradicts the total. Let's reassess.**\n> ...\n> `\u003C\u002Fthink>`\n> `\u003Canswer>`350`\u003C\u002Fanswer>`\n \n## 😊 TODO\n- Answer generation may be invalid due to a group containing all wrong answers or all correct answers. We need group reorganization and better answer generation.\n- GPU memory is still tight if it generates long cots. We have to split the groups to make the batch smaller.\n\nWe have implemented and are testing these features. They will be available soon.\n\n## 🎉🎉🎉 Project Members\n\nThis project is led by Dr. Jiaqing Liang and Professor Yanghua Xiao from KnowledgeWorks Lab, Fudan University. The core development team includes Ph.D. candidate Jinyi Han, Master's student Xinyi Wang, and other contributors. We gratefully acknowledge their dedication to this work.\n\n## 👏👏👏 Citation\n\nIf you find the code in our project useful, please consider citing our work as follows:\n\n```\n@misc{KW-R1,\n  author = {Jiaqing Liang, Jinyi Han, Xinyi Wang, Zishang Jiang, Chengyuan Xiong, Boyu Zhu, Jie Shi, Weijia Li, Tingyun Li, Yanghua Xiao},\n  title = {KW-R1: A Simple Implementation of the GRPO Algorithm},\n  year = {2025},\n  publisher = {GitHub},\n  journal = {GitHub repository},\n  howpublished = {\\url{https:\u002F\u002Fgithub.com\u002Flsdefine\u002Fsimple_GRPO}},\n}\n```\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flsdefine_simple_GRPO_readme_c61d3221c900.png)](https:\u002F\u002Fstar-history.com\u002F#lsdefine\u002Fsimple_GRPO&Date)\n","# 🚀🚀🚀 simple_GRPO 🚀🚀🚀\n一个非常简单的 GRPO 实现，用于复现 r1 类型的 LLM 思考过程。\n这是一个简单的开源实现，采用了 Hugging Face 的 trl 中引用的核心损失计算公式。\n我们构建了最简洁的代码库，以支持以下目标：\n- 节省 GPU 内存，使训练既可行又高效。\n- 从教学角度快速理解 GRPO 等强化学习流程。\n- 快速尝试多种改进，例如多答案生成、分组重组、KL 惩罚以及超参数调优。\n- 在模型训练的早期阶段即可观察到“顿悟时刻”。\n\n## ✨ 新增\n- **2025年7月23日：🚀 请查看 [LSRL](https:\u002F\u002Fgithub.com\u002Flsdefine\u002Flsrl) - 我们的下一代强化学习框架，配备自定义优化器和精简架构，性能更佳！**\n- 2025年2月19日：新增了 loss 的 Triton 实现，速度略有提升，但也可选择不使用。详见 *simple_grpo_v1* 文件夹。\n- 2025年2月19日：新增了分组版本，在 ref_server 上实现了生成数据的采样。详见 *regroup_ver* 文件夹。\n- 2025年2月27日：添加了 vllm 包，以加速推理。\n- 2025年3月24日：新增了 reinforce++ 算法。使用方法与之前相同。\n\n## 🌟 特性\n### 💡 简洁性\n项目代码极为简洁，仅约 200 行代码分散在两个文件中。它仅依赖于 _deepspeed_ 和 _torch_ 等标准库，无需 ray 等依赖项。设计初衷是为了便于进行更复杂的干预。\n\n### 🤖 分离的参考模型\n参考模型部分被解耦，可以在不同的 GPU 上运行（甚至可以放在另一台配备 4090 显卡的机器上）。这样避免了将参考模型和训练模型置于同一块 GPU 上，从而防止 torch 多进程创建多个副本，并允许在 80G A800 上训练 7B 参数量的模型。\n\n### 💃 性能\n在 1 块 A800 GPU 上，训练可在不到 1 小时内完成。无论是 Qwen2.5-7B 还是 Qwen2.5-3B，在前 30 步优化过程中都出现了“顿悟时刻”。\n\n### 🥳 核心损失计算\n损失计算公式基于 Hugging Face 的 trl。我们对 Hugging Face 的贡献表示由衷感谢。\n\n## 🙌 环境\n运行环境列在 requirements.txt 中，因此您可以执行以下命令：\n``` bash\npip install -r requirements.txt\n```\n至少需要两块 GPU。\n\n**警告：**\n您可能需要安装 datasets 并设置 HTTP 代理（或许），才能运行简单使用 GSM8K 数据集的示例脚本。\n``` bash\npip install datasets\n```\n该包仅用于加载 GSM8K 数据集。实际使用时，用户应准备自己的数据，因此 datasets 并非严格必需。\n\n**顺带一提**：如果未安装 datasets 且未在文件中加载数据，则生成过程中没有数据，因此训练过程（以及参考过程）会一直处于 **等待批次** 的状态。\n\n## 使用方法\n### 现在，如果您有三块或更多 GPU，将会有更好的选择！！！\n运行以下命令：\n``` bash\nCUDA_VISIBLE_DEVICES=7 python ref_server.py\n```\n这将仅使用一块 GPU 来收集并运行参考模型。\n\n在 *grpo_vllm_one.py* 中，根据下一步可见的设备设置生成设备索引：\n``` bash\ngen_device = 1\n```\n然后打开另一个终端：\n``` bash\nCUDA_VISIBLE_DEVICES=2,3,4,5,6 deepspeed grpo_vllm_one.py\n```\n\n## ✨ 实验结果\n\n1. 运行环境\n- 硬件配置：2×A800（80GB）GPU\n- 配置：\n  - 训练：1 块 GPU，采用 Zero-Stage 2 优化\n  - 推理：专用 1 块 GPU（兼容 3090\u002F4090）\n\n2. 训练性能\n\n| 模型        | 步数 | 时间       |\n|--------------|-------|------------|\n| Qwen2.5-3B   | 60    | 12分34秒    |\n| Qwen2.5-7B   | 60    | 16分40秒    |\n\n2.1 Qwen2.5-3B\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flsdefine_simple_GRPO_readme_aa7098ccd51b.jpg\" alt=\"Qwen2.5-3B 准确率\" width=\"70%\" style=\"display: inline-block; margin-right: 5px;\">  \n\n- 准确率：\n  - 在 5 步优化后稳定在 60% 以上\n  - 最高达到 ~70%\n- 格式合规性：\n  - 30 步后接近 100%\n\n2.2 Qwen2.5-7B\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flsdefine_simple_GRPO_readme_f0bfb33bf3f6.jpg\" alt=\"Qwen2.5-3B 准确率\" width=\"70%\" style=\"display: inline-block; margin-right: 5px;\">  \n\n- 准确率：\n  - 整个训练过程中保持在 90% 以上\n- 格式合规性：\n  - 30 步内达到 100%\n- 收敛性：两项指标均表现出快速收敛。\n\n## 顿悟时刻\n1. Qwen2.5-3B（第 20 步）\n> `\u003Cthink>`\n> ...\n> 为了找出 Camden 比 Arnold 多画了多少个鸡蛋，我们需要用 Camden 画的鸡蛋数量减去 Arnold 画的鸡蛋数量。所以，21 - 28 = -7。**然而，这个结果在问题的背景下并不合理，\n> 因为 Camden 不可能比 Arnold 画的鸡蛋还少。\n> 让我们重新考虑最初的解题步骤：\n> 应该验证关于 Camden 和 Sarah 鸡蛋数量关系的初始假设是否正确。**\n> ...\n> `\u003C\u002Fthink>`\n> `\u003Canswer>`-7`\u003C\u002Fanswer>`\n\n2. Qwen2.5-7B（第 20 步）\n\n> `\u003Cthink>`\n> ...\n> 因此，Joanne 从平均树上摘了 350 个苹果。\n> **但这似乎不对，因为总数应该是 500，而我们已经计算了 150 个，\n> 所以留给平均树的只有 350 个，这与总数不符。让我们重新评估一下。**\n> ...\n> `\u003C\u002Fthink>`\n> `\u003Canswer>`350`\u003C\u002Fanswer>`\n \n## 😊 待办事项\n- 由于分组中可能出现全部错误答案或全部正确答案的情况，答案生成可能会无效。我们需要进行分组重组并改进答案生成。\n- 如果生成较长的答案，GPU 内存仍然紧张。我们必须拆分分组，以减小批次大小。\n\n我们已实现并正在测试这些功能，它们将很快上线。\n\n## 🎉🎉🎉 项目成员\n\n该项目由复旦大学 KnowledgeWorks 实验室的 Jiaqing Liang 博士和 Yanghua Xiao 教授领导。核心开发团队包括博士生 Jinyi Han、硕士生 Xinyi Wang 及其他贡献者。我们对他们为这项工作所付出的努力表示衷心感谢。\n\n## 👏👏👏 引用\n如果您认为我们项目中的代码有用，请考虑按以下方式引用我们的工作：\n\n```\n@misc{KW-R1,\n  author = {Jiaqing Liang, Jinyi Han, Xinyi Wang, Zishang Jiang, Chengyuan Xiong, Boyu Zhu, Jie Shi, Weijia Li, Tingyun Li, Yanghua Xiao},\n  title = {KW-R1：GRPO 算法的简单实现},\n  year = {2025},\n  publisher = {GitHub},\n  journal = {GitHub 仓库},\n  howpublished = {\\url{https:\u002F\u002Fgithub.com\u002Flsdefine\u002Fsimple_GRPO}},\n}\n```\n\n## 星标历史\n\n[![星标历史图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flsdefine_simple_GRPO_readme_c61d3221c900.png)](https:\u002F\u002Fstar-history.com\u002F#lsdefine\u002Fsimple_GRPO&Date)","# simple_GRPO 快速上手指南\n\nsimple_GRPO 是一个极简的 GRPO（Group Relative Policy Optimization）算法实现，旨在复现类 R1 大模型的推理思考过程。该项目代码精简（仅约 200 行），支持参考模型与训练模型分离部署，显著节省显存，适合教学理解及快速实验。\n\n## 环境准备\n\n### 系统要求\n- **GPU 数量**：至少需要 **2 张** GPU。\n  - 推荐配置：1 张用于训练（如 A800），1 张用于参考模型推理（如 3090\u002F4090 或另一张 A800）。\n- **操作系统**：Linux (推荐 Ubuntu)。\n- **Python 版本**：建议 Python 3.8+。\n\n### 前置依赖\n项目主要依赖 `deepspeed` 和 `torch`，无需 Ray 等复杂框架。\n若需运行内置的 GSM8K 示例脚本，还需安装 `datasets` 库（生产环境使用自有数据可忽略此项）。\n\n> **提示**：国内用户安装 `datasets` 或下载数据时若遇网络问题，建议配置 HTTP 代理或使用国内镜像源。\n\n## 安装步骤\n\n1. 克隆项目代码：\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Flsdefine\u002Fsimple_GRPO.git\ncd simple_GRPO\n```\n\n2. 安装核心依赖：\n```bash\npip install -r requirements.txt\n```\n\n3. （可选）安装数据集库以运行示例：\n```bash\npip install datasets\n```\n> **注意**：如果未安装 `datasets` 且代码中未加载数据，训练进程和参考模型进程将因等待批次数据而一直处于 **waiting for batch** 状态。\n\n## 基本使用\n\n本工具采用**分离式架构**：参考模型（Reference Model）独立运行在一个进程中，训练主程序在另一个进程中运行。以下以拥有 3 张及以上 GPU 为例（假设可见设备索引为 2-7）。\n\n### 第一步：启动参考模型服务\n选择一个独立的 GPU（例如索引 7）运行参考模型服务器：\n```bash\nCUDA_VISIBLE_DEVICES=7 python ref_server.py\n```\n\n### 第二步：配置生成设备\n打开训练脚本 `grpo_vllm_one.py`，找到 `gen_device` 参数，将其设置为相对于下一步启动命令中 `CUDA_VISIBLE_DEVICES` 的设备索引。\n*例如：若下一步指定了 `2,3,4,5,6`，则相对索引 `1` 对应物理显卡 `3`。*\n```python\n# 在 grpo_vllm_one.py 中修改\ngen_device = 1\n```\n\n### 第三步：启动训练\n开启一个新的终端窗口，使用 DeepSpeed 启动训练（使用剩余的多张 GPU，例如 2,3,4,5,6）：\n```bash\nCUDA_VISIBLE_DEVICES=2,3,4,5,6 deepspeed grpo_vllm_one.py\n```\n\n### 运行效果\n- **训练速度**：在单张 A800 上，Qwen2.5-7B 模型可在约 17 分钟内完成 60 步训练。\n- **Aha Moment**：模型通常在前 30 步优化内即可展现出逻辑自我修正能力（即 \"Aha moment\"）。","某初创团队希望在单台双卡服务器上，快速复现类似 o1 的数学推理思维链能力，以验证其自定义奖励函数的有效性。\n\n### 没有 simple_GRPO 时\n- **显存爆炸无法训练**：传统 RL 框架要求参考模型与训练模型共用显存，导致在单张 80G 显卡上连 7B 参数模型都因显存溢出而无法启动。\n- **环境配置极其繁琐**：依赖 Ray 等重型分布式框架，安装配置耗时数小时，且调试困难，严重拖慢实验迭代速度。\n- **代码黑盒难以修改**：现有开源实现代码量巨大且逻辑复杂，研究人员想尝试“多答案生成”或调整 KL 惩罚项时，往往无从下手。\n- **反馈周期过长**：跑完一个完整的训练周期需要数天，无法及时观察到模型是否出现了预期的\"Aha moment\"（顿悟时刻）。\n\n### 使用 simple_GRPO 后\n- **显存分离突破限制**：利用其解耦的参考模型架构，将参考模型部署在另一张消费级显卡（如 4090）甚至独立机器上，成功在单张 A800 上完成了 7B 模型的训练。\n- **轻量依赖极速启动**：仅需 DeepSpeed 和 Torch 等基础库，无需 Ray，几分钟内即可搭建好环境并开始运行 GSM8K 数据集测试。\n- **核心逻辑透明可控**：整个核心逻辑仅约 200 行代码，研究员轻松修改了采样策略和损失计算部分，快速验证了新的奖励机制。\n- **分钟级验证效果**：依托 vLLM 加速推理，仅需不到 20 分钟即可完成 60 步训练，并在前 30 步内清晰观测到模型准确率飙升及格式合规性达到 100%。\n\nsimple_GRPO 通过极致的轻量化设计与显存分离策略，让研究人员能在低成本硬件上以分钟级速度完成大模型推理能力的强化学习验证。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flsdefine_simple_GRPO_11ececbc.png","lsdefine","LJQ","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Flsdefine_9bbff205.jpg",null,"l.j.q.light@gmail.com","https:\u002F\u002Fgithub.com\u002Flsdefine",[79],{"name":80,"color":81,"percentage":82},"Python","#3572A5",100,1641,129,"2026-04-15T10:32:21","Apache-2.0",4,"Linux","必需，至少需要 2 张 NVIDIA GPU。推荐配置：训练端使用 A800 (80GB)，推理\u002F参考模型端可使用 RTX 3090\u002F4090 或另一张 A800。支持将参考模型部署在独立显卡甚至独立机器上以节省显存。","未说明",{"notes":92,"python":90,"dependencies":93},"1. 核心依赖仅为 torch 和 deepspeed，无需 ray 等复杂依赖。\n2. 必须至少配备两张 GPU：一张用于训练（支持 Zero-Stage 2 优化），另一张专用于运行参考模型（可分离部署）。\n3. 若未安装 datasets 库且代码中未加载数据集，训练进程将因无数据而一直等待批次。\n4. 项目代码极简（约 200 行），旨在教学及快速实验 GRPO 算法。\n5. 已集成 vllm 以加速推理过程。",[94,95,96,97],"torch","deepspeed","vllm","datasets (可选，仅用于加载示例数据)",[35,14],"2026-03-27T02:49:30.150509","2026-04-16T01:43:20.192016",[102,107,112,116,121,126,131,135],{"id":103,"question_zh":104,"answer_zh":105,"source_url":106},35027,"训练过程中遇到 NCCL 超时错误（Watchdog caught collective operation timeout）如何解决？","该问题通常与 DeepSpeed 版本或 CUDA 通信配置有关。解决方案包括：\n1. 确保安装匹配的 DeepSpeed 版本（如 deepspeed==0.12.0）。\n2. 设置以下环境变量以优化 NCCL 通信：\n   export NCCL_PROTO='SIMPLE'\n   export NCCL_COLLNET_ENABLE='0'\n   export NCCL_MAX_NCHANNELS='8'\n   export NCCL_P2P_LEVEL='LOC'\n3. 如果不想重新安装包，可以参考相关博客手动编译 CPU Adam 算子。","https:\u002F\u002Fgithub.com\u002Flsdefine\u002Fsimple_GRPO\u002Fissues\u002F20",{"id":108,"question_zh":109,"answer_zh":110,"source_url":111},35028,"使用 A100 40G 训练时出现 OOM（显存不足）错误，即使减小 num_pre_Q 仍然报错怎么办？","可以通过设置 PyTorch 环境变量来解决显存碎片化问题，从而允许更大的 batch size。请在运行脚本前执行：\nexport PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True\n设置后，在 A100 40G 上训练 Qwen2.5-3B 模型时，num_pre_Q 可以从 2 提升到 6（设置为 8 仍可能 OOM）。","https:\u002F\u002Fgithub.com\u002Flsdefine\u002Fsimple_GRPO\u002Fissues\u002F11",{"id":113,"question_zh":114,"answer_zh":115,"source_url":106},35029,"DeepSpeed 初始化时报错 'AttributeError: DeepSpeedCPUAdam object has no attribute ds_opt_adam' 如何处理？","这通常是由于 DeepSpeed 版本不匹配或 CPU Adam 算子未正确编译导致的。解决方法：\n1. 尝试安装推荐的 DeepSpeed 版本（如 0.12.0）。\n2. 如果无法重装，可以手动触发编译加载：\n   python -c 'import deepspeed; deepspeed.ops.adam.cpu_adam.CPUAdamBuilder().load()'\n3. 确保在配置中启用 CPU Offload：\"offload_optimizer\": {\"device\": \"cpu\"}。",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},35030,"训练卡住显示 'waiting for batch' 且无 Loss 输出是什么原因？","这通常是因为数据预处理或异步生成环节阻塞。建议检查：\n1. 数据集长度是否过长，尝试截断数据（如 GSM8K 数据集）。\n2. 确认使用的是同步版本还是异步版本的脚本。如果是异步版本（如 simple_grpo），确保生成器工作正常；也可以尝试切换到同步版本的脚本（如 rl_trunc.py 或 rl_callpy.py），这些脚本不依赖网络发送数据，可能更稳定。","https:\u002F\u002Fgithub.com\u002Flsdefine\u002Fsimple_GRPO\u002Fissues\u002F49",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},35031,"复现时模型的准确率（answer_acc）无法达到文档宣称的 90%，一直在 80% 左右振荡怎么办？","准确率受多种因素影响，请检查以下几点：\n1. 确认使用的模型权重文件是否与作者实验完全一致。\n2. 注意文档中提到的结果是在特定短步数优化下得到的（如 3B 模型在 5 步优化后稳定在 60%-70%），若要进一步提升需精细调整数据和训练参数。\n3. 参考作者提供的 WandB 日志代码位置来核对指标计算逻辑是否正确。","https:\u002F\u002Fgithub.com\u002Flsdefine\u002Fsimple_GRPO\u002Fissues\u002F40",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},35032,"双卡训练启动后一直停留在 'gen worker' 界面，看不到训练 Loss 信息？","这可能是由于 PyTorch 版本兼容性导致的分布式屏障（dist.barrier）问题。建议将 PyTorch 版本升级到 2.4.0 或更高版本后再尝试运行。","https:\u002F\u002Fgithub.com\u002Flsdefine\u002Fsimple_GRPO\u002Fissues\u002F37",{"id":132,"question_zh":133,"answer_zh":134,"source_url":106},35033,"如何在资源受限的情况下调整配置以避免 OOM 并成功训练？","除了设置 expandable_segments 外，还应调整以下配置：\n1. 减小 num_pre_Q（例如从 8 减到 2 或 6）。\n2. 减小 gradient_accumulation_steps。\n3. 务必开启 optimizer offload 到 CPU：\"offload_optimizer\": {\"device\": \"cpu\"}，不要设置为 'none'，否则极易导致显存溢出。",{"id":136,"question_zh":137,"answer_zh":138,"source_url":125},35034,"GRPO 和 Reinforce++ 算法在该任务上的表现有何差异？","根据作者的实验反馈，在他们测试的数据集上，GRPO 和 Reinforce++ 的表现差不多。虽然有讨论认为 Reinforce++ 在小 num_pre_Q 设置下可能更优，但在本项目的具体实验中两者效果相近。",[]]