[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-marin-community--marin":3,"tool-marin-community--marin":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 真正成长为懂上",144730,2,"2026-04-07T23:26:32",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[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},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":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":118,"forks":119,"last_commit_at":120,"license":121,"difficulty_score":122,"env_os":123,"env_gpu":124,"env_ram":123,"env_deps":125,"category_tags":128,"github_topics":77,"view_count":10,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":129,"updated_at":130,"faqs":131,"releases":167},2437,"marin-community\u002Fmarin","marin","Open-source framework for the research and development of foundation models.","Marin 是一个专为大语言模型（Foundation Models）研发设计的开源框架，旨在简化从数据准备到模型训练及评估的全流程工作。它特别适用于希望复现或优化类似 Llama、DeepSeek、Qwen 等主流语言模型的研究人员与开发者。\n\n在人工智能研究中，实验的可复现性一直是个难题。Marin 的核心价值在于其卓越的“可复现性”设计：它不仅记录最终的模型结果，更完整追踪从原始数据处理、清洗、分词到训练每一个步骤的详细日志。即使是失败的实验尝试也会被如实记录，从而确保整个研究过程的透明化，帮助团队快速定位问题并迭代优化。\n\n技术层面，Marin 采用类似 Makefile 的拓扑排序执行机制，将复杂的实验定义为相互依赖的步骤序列。这种设计让数据流转和任务调度变得清晰可控。其实力已得到验证——开发团队曾利用 Marin 训练出首个在性能上超越 Llama 3.1 8B 的开源 80 亿参数模型，证明了其在高效训练大规模模型方面的潜力。\n\n如果你是一名 AI 研究员或工程师，正在寻找一个能够规范实验流程、提升协作效率且功能强大的训练框架，Marin 将是一个值得尝试的选择。无论是进","Marin 是一个专为大语言模型（Foundation Models）研发设计的开源框架，旨在简化从数据准备到模型训练及评估的全流程工作。它特别适用于希望复现或优化类似 Llama、DeepSeek、Qwen 等主流语言模型的研究人员与开发者。\n\n在人工智能研究中，实验的可复现性一直是个难题。Marin 的核心价值在于其卓越的“可复现性”设计：它不仅记录最终的模型结果，更完整追踪从原始数据处理、清洗、分词到训练每一个步骤的详细日志。即使是失败的实验尝试也会被如实记录，从而确保整个研究过程的透明化，帮助团队快速定位问题并迭代优化。\n\n技术层面，Marin 采用类似 Makefile 的拓扑排序执行机制，将复杂的实验定义为相互依赖的步骤序列。这种设计让数据流转和任务调度变得清晰可控。其实力已得到验证——开发团队曾利用 Marin 训练出首个在性能上超越 Llama 3.1 8B 的开源 80 亿参数模型，证明了其在高效训练大规模模型方面的潜力。\n\n如果你是一名 AI 研究员或工程师，正在寻找一个能够规范实验流程、提升协作效率且功能强大的训练框架，Marin 将是一个值得尝试的选择。无论是进行小型模型的教程练习，还是开展如 DCLM 1B 这样的大型实验，Marin 都提供了灵活的配置选项和活跃的社区支持，助你更专注于模型算法本身的创新与研究。","# Marin\n\n\u003Ca href=\"https:\u002F\u002Fmarin.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\">\n    \u003Cimg alt=\"Documentation\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmarin-community_marin_readme_13d664e1afd7.png\">\n\u003C\u002Fa>\n\u003Ca href=\"\">\n    \u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fmarin-community\u002Fmarin?color=blue\" \u002F>\n\u003C\u002Fa>\n\n\u003C!--marin-intro-start-->\n\n> \"*I am not afraid of storms, for I am learning how to sail my ship.*\"\u003Cbr\u002F>\n> – Louisa May Alcott\n\n[Marin](https:\u002F\u002Fmarin.community) is an open-source framework for the research and development of [foundation models](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFoundation_model).\n\nA key feature of Marin is **reproducibility**: every step, from raw data to the final model are recorded, not just the end result.\nThis includes failed experiments, so the entire research process is transparent.\n\nMarin's primary use case is training language model like Llama, DeepSeek, Qwen, etc.\nNotably, this includes data curation, transformation, filtering, tokenization, training, and evaluation.\n\nWe used Marin to train the first open-source 8B parameter model to outperform Llama 3.1 8B.\nYou can see the [training script](https:\u002F\u002Fgithub.com\u002Fmarin-community\u002Fmarin\u002Fblob\u002Fmain\u002Fexperiments\u002Ftootsie\u002Fexp600_tootsie.py)\nor read the [retrospective](docs\u002Freports\u002Fmarin-8b-retro.md).\n\n\u003C!--marin-intro-end-->\n\nThe documentation for Marin is available on [ReadTheDocs](https:\u002F\u002Fmarin.readthedocs.io\u002Fen\u002Flatest\u002F) or in the [`docs\u002F`](docs\u002F) folder.\n\n\u003C!--marin-first-steps-start-->\n\nTo get started with Marin:\n\n- [Install](docs\u002Ftutorials\u002Finstallation.md) Marin.\n- Train a [tiny language model](docs\u002Ftutorials\u002Ffirst-experiment.md) using Marin.\n- See how to run a much larger [DCLM 1B\u002F1x](docs\u002Ftutorials\u002Ftrain-an-lm.md) experiment using Marin.\n- See a [summary of the experiments](docs\u002Freports\u002Findex.md) we've run.\n- Participate in the Marin [Speedrun competition](docs\u002Ftutorials\u002Fsubmitting-speedrun.md) to try to find the most efficient way to train a language model.\n- Join the [Marin Discord](https:\u002F\u002Fdiscord.gg\u002FJ9CTk7pqcM) to chat with the community.\n\n\u003C!--marin-first-steps-end-->\n\n## Example\n\nMarin experiments are defined as a set of steps that can depend on each other and are executed in a topological order,\nlike a Makefile.\n\nAs a brief example of how you can use Marin, here is a complete script for training a tiny model on [TinyStories](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Froneneldan\u002FTinyStories).\nYou can check out the [full script](https:\u002F\u002Fgithub.com\u002Fmarin-community\u002Fmarin\u002Fblob\u002Fmain\u002Fexperiments\u002Ftutorials\u002Ftrain_tiny_model_cpu.py) for more details.\n\n\u003C!--marin-example-start-->\n\n```python\nfrom fray.cluster import ResourceConfig\n\nfrom experiments.defaults import default_tokenize, default_train\nfrom experiments.llama import llama3_tokenizer, llama_nano\nfrom experiments.simple_train_config import SimpleTrainConfig\nfrom marin.execution.executor import executor_main\n\n# 1. Choose a dataset\ntinystories_hf_id = \"roneneldan\u002FTinyStories\"\n\n# 2. Tokenize the dataset\ntinystories_tokenized = default_tokenize(\n    name=tinystories_hf_id,  # path to write tokenized files (tokenized\u002F will be prepended)\n    dataset=tinystories_hf_id,  # HF dataset id\n    tokenizer=llama3_tokenizer,\n)\n\n# 3. Define training configuration\nnano_train_config = SimpleTrainConfig(\n    # Here we define the hardware resources we need.\n    resources=ResourceConfig.with_cpu(),\n    train_batch_size=4,\n    num_train_steps=100,\n    # set hyperparameters\n    learning_rate=6e-4,\n    weight_decay=0.1,\n    # keep eval quick for tutorial\n    max_eval_batches=4,\n)\n\n# 4. Train the model\nnano_tinystories_model = default_train(\n    name=\"marin-nano-tinystories\",\n    # Steps can depend on other steps: nano_tinystories_model depends on tinystories_tokenized\n    tokenized=tinystories_tokenized,\n    model_config=llama_nano,\n    train_config=nano_train_config,\n    # wandb tags\n    tags=[\"llama\", \"nano\", \"tinystories\", \"tutorial\"],\n    # We can run many [eval_harness](https:\u002F\u002Fgithub.com\u002FEleutherAI\u002Flm-evaluation-harness) tasks in the loop\n    # during training, but there's no point in running evals on such a tiny model\n    eval_harness_tasks=[],\n    # to keep tutorial fast, skip default validation sets\n    use_default_validation=False,\n)\n\nif __name__ == \"__main__\":\n    executor_main(steps=[\n        nano_tinystories_model,\n    ])\n```\n\nHere, we create two [steps](docs\u002Fexplanations\u002Fexecutor.md#steps), one for tokenizing the dataset and one for training the model.\nThe training step depends on the tokenized dataset step, so it will be executed after the tokenization step is completed.\n\n\u003C!--marin-example-end-->\n\nWith slight modifications, you can extend this to train a [larger model on a larger dataset](docs\u002Ftutorials\u002Ftrain-an-lm.md),\na [mixture of datasets](docs\u002Ftutorials\u002Ftrain-an-lm.md#mixture-of-sources), even scaling to very large TPU pods\n(or multislice TPU, and, soon, multi-node GPUs!).\n\n## Agent Skills\n\n- See `.agents\u002Fskills\u002F` (also `.claude\u002Fskills\u002F`) for loadable agent skills. For example, `.agents\u002Fskills\u002Fadd-dataset\u002F` has a step-by-step guide to adding new datasets.\n","# Marin\n\n\u003Ca href=\"https:\u002F\u002Fmarin.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\">\n    \u003Cimg alt=\"Documentation\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmarin-community_marin_readme_13d664e1afd7.png\">\n\u003C\u002Fa>\n\u003Ca href=\"\">\n    \u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fmarin-community\u002Fmarin?color=blue\" \u002F>\n\u003C\u002Fa>\n\n\u003C!--marin-intro-start-->\n\n> \"*我不害怕风暴，因为我正在学习如何掌舵我的船。*\"\u003Cbr\u002F>\n> – 路易莎·梅·奥尔科特\n\n[Marin](https:\u002F\u002Fmarin.community) 是一个用于研究和开发 [基础模型](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFoundation_model) 的开源框架。\n\nMarin 的一个关键特性是 **可复现性**：从原始数据到最终模型的每一步都会被记录下来，而不仅仅是最终结果。\n这包括失败的实验，因此整个研究过程都是透明的。\n\nMarin 的主要应用场景是训练语言模型，如 Llama、DeepSeek、Qwen 等。具体来说，涵盖了数据整理、转换、过滤、分词、训练和评估等环节。\n\n我们使用 Marin 训练了首个性能超越 Llama 3.1 8B 的开源 8B 参数模型。你可以查看 [训练脚本](https:\u002F\u002Fgithub.com\u002Fmarin-community\u002Fmarin\u002Fblob\u002Fmain\u002Fexperiments\u002Ftootsie\u002Fexp600_tootsie.py)\n或阅读 [回顾报告](docs\u002Freports\u002Fmarin-8b-retro.md)。\n\n\u003C!--marin-intro-end-->\n\nMarin 的文档可以在 [ReadTheDocs](https:\u002F\u002Fmarin.readthedocs.io\u002Fen\u002Flatest\u002F) 或 [`docs\u002F`](docs\u002F) 文件夹中找到。\n\n\u003C!--marin-first-steps-start-->\n\n要开始使用 Marin：\n\n- [安装](docs\u002Ftutorials\u002Finstallation.md) Marin。\n- 使用 Marin 训练一个 [小型语言模型](docs\u002Ftutorials\u002Ffirst-experiment.md)。\n- 查看如何使用 Marin 运行规模更大的 [DCLM 1B\u002F1x](docs\u002Ftutorials\u002Ftrain-an-lm.md) 实验。\n- 参阅我们已运行的 [实验汇总](docs\u002Freports\u002Findex.md)。\n- 参与 Marin 的 [Speedrun 比赛](docs\u002Ftutorials\u002Fsubmitting-speedrun.md)，尝试找到训练语言模型的最高效方式。\n- 加入 [Marin Discord](https:\u002F\u002Fdiscord.gg\u002FJ9CTk7pqcM)，与社区成员交流。\n\n\u003C!--marin-first-steps-end-->\n\n## 示例\n\nMarin 中的实验被定义为一组可以相互依赖并按拓扑顺序执行的步骤，类似于 Makefile。\n\n作为使用 Marin 的简短示例，这里提供了一个在 [TinyStories](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Froneneldan\u002FTinyStories) 数据集上训练小型模型的完整脚本。更多细节请参阅 [完整脚本](https:\u002F\u002Fgithub.com\u002Fmarin-community\u002Fmarin\u002Fblob\u002Fmain\u002Fexperiments\u002Ftutorials\u002Ftrain_tiny_model_cpu.py)。\n\n\u003C!--marin-example-start-->\n\n```python\nfrom fray.cluster import ResourceConfig\n\nfrom experiments.defaults import default_tokenize, default_train\nfrom experiments.llama import llama3_tokenizer, llama_nano\nfrom experiments.simple_train_config import SimpleTrainConfig\nfrom marin.execution.executor import executor_main\n\n# 1. 选择数据集\ntinystories_hf_id = \"roneneldan\u002FTinyStories\"\n\n# 2. 对数据集进行分词\ntinystories_tokenized = default_tokenize(\n    name=tinystories_hf_id,  # 分词文件的保存路径（会自动加上 tokenized\u002F 前缀）\n    dataset=tinystories_hf_id,  # Hugging Face 数据集 ID\n    tokenizer=llama3_tokenizer,\n)\n\n# 3. 定义训练配置\nnano_train_config = SimpleTrainConfig(\n    # 定义所需的硬件资源\n    resources=ResourceConfig.with_cpu(),\n    train_batch_size=4,\n    num_train_steps=100,\n    # 设置超参数\n    learning_rate=6e-4,\n    weight_decay=0.1,\n    # 为了教程快速完成，限制评估批次\n    max_eval_batches=4,\n)\n\n# 4. 训练模型\nnano_tinystories_model = default_train(\n    name=\"marin-nano-tinystories\",\n    # 步骤之间可以相互依赖：nano_tinystories_model 依赖于 tinystories_tokenized\n    tokenized=tinystories_tokenized,\n    model_config=llama_nano,\n    train_config=nano_train_config,\n    # wandb 标签\n    tags=[\"llama\", \"nano\", \"tinystories\", \"tutorial\"],\n    # 在训练过程中可以运行许多 [eval_harness](https:\u002F\u002Fgithub.com\u002FEleutherAI\u002Flm-evaluation-harness) 任务\n    # 但对于这么小的模型来说，没有必要进行评估\n    eval_harness_tasks=[],\n    # 为了加快教程速度，跳过默认验证集\n    use_default_validation=False,\n)\n\nif __name__ == \"__main__\":\n    executor_main(steps=[\n        nano_tinystories_model,\n    ])\n```\n\n在这里，我们创建了两个 [步骤](docs\u002Fexplanations\u002Fexecutor.md#steps)，一个是用于对数据集进行分词，另一个是用于训练模型。训练步骤依赖于分词步骤，因此会在分词完成后执行。\n\n\u003C!--marin-example-end-->\n\n稍作修改，你就可以将其扩展到在更大规模的数据集上训练更大的模型（[训练大模型指南](docs\u002Ftutorials\u002Ftrain-an-lm.md)），或者处理 [多源混合数据集](docs\u002Ftutorials\u002Ftrain-an-lm.md#mixture-of-sources)，甚至可以扩展到非常大的 TPU Pod（或多切片 TPU，以及不久后的多节点 GPU）。\n\n## 代理技能\n\n- 请查看 `.agents\u002Fskills\u002F`（以及 `.claude\u002Fskills\u002F`）以获取可加载的代理技能。例如，`.agents\u002Fskills\u002Fadd-dataset\u002F` 提供了添加新数据集的分步指南。","# Marin 快速上手指南\n\nMarin 是一个用于基础模型（Foundation Models）研发与训练的开源框架。其核心优势在于**可复现性**：从原始数据到最终模型的每一步（包括数据清洗、分词、训练、评估及失败的实验）都会被完整记录，确保研究过程的透明化。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux 或 macOS（推荐 Linux 以获得最佳兼容性）。\n*   **Python**：建议 Python 3.10 或更高版本。\n*   **硬件资源**：\n    *   **入门\u002F教程**：CPU 即可运行微型模型训练示例。\n    *   **生产\u002F大规模训练**：支持多节点 GPU 集群及 TPU Pods。\n*   **前置依赖**：\n    *   `git`：用于克隆代码库。\n    *   `pip`：Python 包管理工具。\n    *   （可选）`conda` 或 `venv`：建议使用虚拟环境隔离依赖。\n\n> **提示**：由于 Marin 涉及大量数据处理和深度学习依赖，建议配置稳定的网络连接以加速 PyTorch 及相关库的下载。如有条件，可配置国内 PyPI 镜像源加速 pip 安装。\n\n## 安装步骤\n\n1.  **克隆仓库**\n\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fmarin-community\u002Fmarin.git\n    cd marin\n    ```\n\n2.  **创建并激活虚拟环境**\n\n    ```bash\n    python -m venv .venv\n    source .venv\u002Fbin\u002Factivate  # Linux\u002FmacOS\n    # .venv\\Scripts\\activate   # Windows\n    ```\n\n3.  **安装 Marin 及其依赖**\n\n    ```bash\n    pip install -e .\n    ```\n\n    *注：根据具体硬件（如 NVIDIA GPU 或 TPU），可能需要额外安装特定版本的 PyTorch 或 JAX。请参考官方文档中的 [安装指南](docs\u002Ftutorials\u002Finstallation.md) 获取详细配置。*\n\n## 基本使用\n\nMarin 的实验被定义为一系列相互依赖的步骤（Steps），类似于 Makefile，按拓扑顺序执行。以下是一个在 CPU 上使用 TinyStories 数据集训练微型语言模型的完整示例。\n\n### 1. 创建训练脚本\n\n新建一个 Python 文件（例如 `train_tiny.py`），填入以下代码：\n\n```python\nfrom fray.cluster import ResourceConfig\n\nfrom experiments.defaults import default_tokenize, default_train\nfrom experiments.llama import llama3_tokenizer, llama_nano\nfrom experiments.simple_train_config import SimpleTrainConfig\nfrom marin.execution.executor import executor_main\n\n# 1. 选择数据集\ntinystories_hf_id = \"roneneldan\u002FTinyStories\"\n\n# 2. 对数据集进行分词 (Tokenize)\ntinystories_tokenized = default_tokenize(\n    name=tinystories_hf_id,  # 写入分词文件的路径前缀\n    dataset=tinystories_hf_id,  # HuggingFace 数据集 ID\n    tokenizer=llama3_tokenizer,\n)\n\n# 3. 定义训练配置\nnano_train_config = SimpleTrainConfig(\n    # 定义硬件资源，此处使用 CPU\n    resources=ResourceConfig.with_cpu(),\n    train_batch_size=4,\n    num_train_steps=100,\n    # 设置超参数\n    learning_rate=6e-4,\n    weight_decay=0.1,\n    # 为加快教程速度，减少评估批次\n    max_eval_batches=4,\n)\n\n# 4. 训练模型\nnano_tinystories_model = default_train(\n    name=\"marin-nano-tinystories\",\n    # 步骤依赖：训练步骤依赖于分词步骤\n    tokenized=tinystories_tokenized,\n    model_config=llama_nano,\n    train_config=nano_train_config,\n    # WandB 标签\n    tags=[\"llama\", \"nano\", \"tinystories\", \"tutorial\"],\n    # 评估任务列表（微型模型可留空以加快速度）\n    eval_harness_tasks=[],\n    # 跳过默认验证集以加快教程运行\n    use_default_validation=False,\n)\n\nif __name__ == \"__main__\":\n    executor_main(steps=[\n        nano_tinystories_model,\n    ])\n```\n\n### 2. 运行实验\n\n在终端中执行该脚本：\n\n```bash\npython train_tiny.py\n```\n\n### 3. 流程说明\n\n*   **依赖管理**：`default_train` 步骤依赖于 `tinystories_tokenized` 步骤。Executor 会自动先执行分词，待完成后才开始训练。\n*   **扩展性**：通过修改 `ResourceConfig` 和数据集配置，您可以轻松将此示例扩展为在大型 GPU 集群上训练更大规模的模型（如 Llama 3、DeepSeek 等），或混合多种数据源。\n\n更多高级用法，如训练 DCLM 1B 模型或参与 Speedrun 竞赛，请参阅官方文档中的 [训练语言模型教程](docs\u002Ftutorials\u002Ftrain-an-lm.md)。","某 AI 初创公司的算法团队正致力于研发一款垂直领域的 8B 参数大语言模型，需要在有限算力下快速迭代数据清洗策略与训练超参，以追赶开源基线性能。\n\n### 没有 marin 时\n- **实验复现极其困难**：数据预处理、分词和训练脚本分散在不同文件中，一旦模型效果波动，很难回溯是哪一步的数据变换或代码修改导致了差异，往往需要重新手动梳理整个链路。\n- **失败实验成为黑盒**：为了节省存储，团队通常只保留成功模型的权重。那些因超参设置错误导致训练发散的实验记录被丢弃，宝贵的“避坑”经验无法沉淀，新人容易重复犯错。\n- **流程编排依赖人工**：从原始数据清洗到最终评估，各个环节依靠手工执行 Shell 脚本或临时编写的 Python 脚本串联，依赖关系混乱，经常出现在数据未准备就绪时就启动训练的尴尬情况。\n- **协作沟通成本高**：团队成员间同步实验进度主要靠口头或文档，缺乏统一的结构化记录，导致多人同时调整不同变量时难以横向对比结果，研发效率低下。\n\n### 使用 marin 后\n- **全链路自动追踪**：Marin 将数据策展、转换、分词到训练定义为有向无环图（DAG），每一步骤及其依赖关系都被精确记录。任何实验均可一键复现，彻底解决“代码能跑但结果不对”的难题。\n- **透明化研究过程**：即使是失败的实验，其完整的配置、日志和中间产物也被完整保存。团队可以像查阅历史档案一样分析失败原因，将试错成本转化为团队的知识资产。\n- **声明式工作流管理**：类似 Makefile 的拓扑排序执行机制，确保只有在依赖步骤（如数据分词）完成后才触发训练。研究人员只需关注核心逻辑定义，无需维护复杂的调度脚本。\n- **标准化实验对比**：所有实验元数据统一存储，支持通过标签快速筛选和对比不同超参组合的效果，让团队能基于客观数据而非记忆来决策下一步优化方向。\n\nMarin 通过强制性的可复现性和透明化的流程管理，将大模型研发从“手工作坊”升级为“标准化工业流水线”，显著提升了迭代效率与科研严谨性。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmarin-community_marin_0b2a2399.png","marin-community","The Marin Project","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fmarin-community_61d34540.png","",null,"https:\u002F\u002Fmarin.community","https:\u002F\u002Fgithub.com\u002Fmarin-community",[81,85,89,93,97,101,104,107,110,114],{"name":82,"color":83,"percentage":84},"Python","#3572A5",50.2,{"name":86,"color":87,"percentage":88},"HTML","#e34c26",47.7,{"name":90,"color":91,"percentage":92},"Vue","#41b883",0.9,{"name":94,"color":95,"percentage":96},"JavaScript","#f1e05a",0.3,{"name":98,"color":99,"percentage":100},"Jupyter Notebook","#DA5B0B",0.2,{"name":102,"color":103,"percentage":100},"Shell","#89e051",{"name":105,"color":106,"percentage":100},"Rust","#dea584",{"name":108,"color":109,"percentage":100},"TypeScript","#3178c6",{"name":111,"color":112,"percentage":113},"CSS","#663399",0.1,{"name":115,"color":116,"percentage":117},"Makefile","#427819",0,828,103,"2026-04-02T22:46:38","Apache-2.0",4,"未说明","未说明（示例代码演示了 CPU 训练 `ResourceConfig.with_cpu()`，文中提及支持大规模 TPU pods 及即将支持多节点 GPU）",{"notes":126,"python":123,"dependencies":127},"README 中未提供具体的环境配置细节（如 Python 版本、具体依赖库列表）。Marin 是一个用于基础模型研发开源框架，强调实验的可复现性。它支持从数据清洗、分词到训练和评估的全流程。虽然示例展示了在 CPU 上运行微小模型，但其主要设计目标是扩展至大型 TPU 集群和多节点 GPU 环境。详细安装步骤需参考文档中的 installation.md。",[],[35,14],"2026-03-27T02:49:30.150509","2026-04-08T16:25:08.945201",[132,137,141,145,150,155,159,163],{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},11216,"在 DNA 序列预训练中进行反向互补（Reverse-Complement）数据增强对模型缩放定律和过拟合有何影响？","实验结果显示，反向互补增强并没有显著改变缩放定律（scaling laws），但导致结果噪声更大。此外，该增强方法在防止过拟合方面帮助有限，损失函数（loss）仍然会在大约 8-16 个 epoch 时急剧上升。总体而言，核苷酸互补性对缩放行为的影响不大。","https:\u002F\u002Fgithub.com\u002Fmarin-community\u002Fmarin\u002Fissues\u002F2101",{"id":138,"question_zh":139,"answer_zh":140,"source_url":136},11217,"为什么在 PlantCAD2 数据集上拟合缩放定律比在文本数据集上更困难且耗时？","主要原因包括数据质量问题，以及标准的拟合方法\u002F近似值在处理具有高 token\u002F参数缩放不对称性（high token\u002Fparam scaling asymmetry）的数据时，不能很好地从文本领域迁移过来。需要针对这种不对称性调整分析方法。",{"id":142,"question_zh":143,"answer_zh":144,"source_url":136},11218,"如何处理 PlantCAD 预训练数据中的重复项问题？","需要从原始 PlantCAD2 预训练数据中排除大量重复项。去除重复项后，token 数量会减少（例如从 29.6B 降至 21.6B），因此需要相应调整计算预算（compute budgets）以进行公平的 IsoFLOP 扫描比较。",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},11219,"大规模数据 Tokenization 流水线的典型性能指标是多少？","根据 Nemotron-CC 数据集的处理统计，Tokenization 速度可达约 1.07亿 到 1.53亿 tokens\u002F秒，文档处理速度约为 16万 到 29万 docs\u002F秒。整个流水线包括 tokenize 和 consolidate 两个主要阶段，例如处理 8.8亿 文档耗时约 4700-5000 秒。","https:\u002F\u002Fgithub.com\u002Fmarin-community\u002Fmarin\u002Fissues\u002F2829",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},11220,"在 MoE（混合专家）模型中，专家并行（Expert Parallelism, EP）的主要目标和假设是什么？","主要假设是 EP 能增加每个专家分片的有效 token 数量，并提高端到端的 `forward_backward` 吞吐量，特别是在中等或较高的 `topk` 设置下。目标是通过受控对比实验，量化 EP 对训练路径吞吐量的影响，并隔离 EP 效应与其他内核变化的影响。","https:\u002F\u002Fgithub.com\u002Fmarin-community\u002Fmarin\u002Fissues\u002F2710",{"id":156,"question_zh":157,"answer_zh":158,"source_url":154},11221,"MoE 专家并行实现中的“紧凑分发”（compact dispatch）策略是什么？","紧凑分发是一种 EP 实现策略，它基于固定的路由一次性构建每个分片的紧凑 token 缓冲区。这样每个分片只处理本地分配的任务，而不是使用带有虚拟工作（dummy work）的密集全局长度掩码缓冲区，从而提高效率。",{"id":160,"question_zh":161,"answer_zh":162,"source_url":154},11222,"在 MoE 基准测试中，如何配置共享专家（Shared Expert）分支？","共享专家是一个始终开启的密集 MLP 分支，添加到路由专家输出中。配置时需设置 `shared_expert_dim > 0`。还可以使用 `shared_fused` 优化，将共享的 `w1|w3` 投影融合为一个矩阵乘法操作，然后再进行拆分，以提升性能。",{"id":164,"question_zh":165,"answer_zh":166,"source_url":154},11223,"MoE 路由打包策略（Routing Pack Strategy）有哪些常见选项？","常见的路由打包策略包括：\n1. `argsort`：展平专家 ID，然后按专家 ID 进行 argsort 排序。\n2. `tuple_sort`：显式使用 `lax.sort((expert_id, flat_pos, tok_id))` 变体进行排序。\n这些策略用于优化内部调度工作队列的效率。",[168,172,176,180,184,189],{"id":169,"version":170,"summary_zh":77,"released_at":171},61670,"dupekit-0.1.0-40ac799","2026-03-23T18:02:34",{"id":173,"version":174,"summary_zh":77,"released_at":175},61671,"dupekit-0.1.0-84702bd","2026-03-23T17:13:29",{"id":177,"version":178,"summary_zh":77,"released_at":179},61672,"dupekit-0.1.0-e91d587","2026-03-21T23:36:21",{"id":181,"version":182,"summary_zh":77,"released_at":183},61673,"dupekit-0.1.0-099386c","2026-03-21T01:58:08",{"id":185,"version":186,"summary_zh":187,"released_at":188},61674,"dupekit-0.1.0-41b51df","固定了来自 commit 41b51df1ac41de23b6e19cea1da398f607b300d6 的重复轮包。abi3-py311 轮包支持 Python 3.11 及更高版本。","2026-03-19T23:32:27",{"id":190,"version":191,"summary_zh":192,"released_at":193},61675,"dupekit-latest","滚动发布：最新的 dupekit 轮子基于主分支构建。由持续集成自动更新。","2026-03-19T18:49:23"]