marin-community/marin
Open-source framework for the research and development of foundation models.
Marin – 用于构建基础模型的开源平台
是什么
- 专注于大语言模型全生命周期(数据整理、分词、预训练、后训练、评估)的研究级软件栈(及社区)。
- 设计为 开放开发:每个实验、配置甚至失败的运行都会被记录并发布。
核心功能
| 领域 | Marin 提供的内容 |
|---|---|
| 实验定义 | 类似 Makefile 的声明式、分步式流水线,描述数据准备、训练和评估。步骤为惰性生成,可相互依赖。 |
| 扩展套件 – Delphi | 将计算预算映射到模型大小的配方,在 Google TPU Research Cloud 上运行的扩展定律实验,以及复现混合专家(MoE)流水线的代码。检查点和可绘图数据托管在 Hugging Face。 |
| 混合专家支持 | 用于确定性混合公开数据集(Nemotron-CC、StarCoderData、ProofPile 2)和 MoE 负载均衡(分位数均衡)的工具。 |
| 优化与训练工具 | 可配置的 Adam 变体(CompletedAdamHParams)、资源规格(ResourceConfig),以及现成的模型定义(例如 llama_nano)。 |
| 可扩展的代理技能 | 可加载的“技能”(例如 add_scaling_heuristic、add-dataset),用于自动化常见工作流步骤。 |
| 文档与教程 | ReadTheDocs 上的完整文档,训练小型模型的快速入门指南,以及更大规模的示例(1B 参数 DCLM、8B 和 32B 模型)。 |
典型工作流(小型模型示例)
# 1️⃣ 惰性分词数据集
tinystories = tokenized(
name="tokenized/tinystories",
source="roneneldan/TinyStories",
tokenizer=marin_tokenizer,
sample_count=1_000,
)
# 2️⃣ 定义依赖于分词数据的训练步骤
nano_model = train_lm(
name="checkpoints/marin-nano-tinystories",
version="v1",
model=llama_nano,
optimizer=AdamConfig(learning_rate=6e-4, weight_decay=0.1),
datasets={tinystories: 1.0},
batch_size=4,
seq_len=2048,
num_train_steps=100,
resources=ResourceConfig.with_cpu(),
)
# 3️⃣ 执行流水线
StepRunner().run([lower(nano_model)])
相同模式可扩展至多 GPU/TPU 集群及多种数据集混合。
快速上手
- 阅读安装指南:
docs/tutorials/installation.md。 - 运行小型模型教程(
docs/tutorials/first-experiment.md)。 - 跟随大规模训练指南(
docs/tutorials/train-an-lm.md)。 - 浏览实验目录(
docs/reports/index.md)。 - 加入 Discord 社区获取支持与协作。
社区与支持
- 核心贡献者来自斯坦福 CRFM 和 Open Athena。
- 受 Google TPU Research Cloud、Jen-Hsun & Lori Huang 基金会、Siegel Family Endowment 和 Schmidt Sciences 支持。
为何重要 Marin 致力于使前沿规模的大语言模型研究具备可复现性和透明性。通过开源完整的训练栈——包括数据流水线、扩展定律和 MoE 平衡——研究人员无需重新发明底层基础设施,即可构建、比较和扩展大型模型。
链接
相关
- 项目
- 项目
- 项目
- 项目
- 项目