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_heuristicadd-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 集群及多种数据集混合。

快速上手

  1. 阅读安装指南:docs/tutorials/installation.md
  2. 运行小型模型教程(docs/tutorials/first-experiment.md)。
  3. 跟随大规模训练指南(docs/tutorials/train-an-lm.md)。
  4. 浏览实验目录(docs/reports/index.md)。
  5. 加入 Discord 社区获取支持与协作。

社区与支持

  • 核心贡献者来自斯坦福 CRFM 和 Open Athena。
  • 受 Google TPU Research Cloud、Jen-Hsun & Lori Huang 基金会、Siegel Family Endowment 和 Schmidt Sciences 支持。

为何重要 Marin 致力于使前沿规模的大语言模型研究具备可复现性和透明性。通过开源完整的训练栈——包括数据流水线、扩展定律和 MoE 平衡——研究人员无需重新发明底层基础设施,即可构建、比较和扩展大型模型。


链接

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目