📅 2026-08-30 · 🏷️ 大模型训练 · 开源框架 · AI研究
项目概览
GitHub: marin-community/marin · 语言: Python · ⭐ 3k+ · 社区驱动
一个开源基础模型研发框架,它的核心思想很妙:把训练实验定义成带依赖关系的步骤图(像 Makefile 一样),步骤之间按拓扑序自动执行。数据预处理、tokenize、训练、评估各自是独立 step,谁依赖谁写清楚,框架自动排程。
它基于 Levanter 和 Fray 构建,从小模型(TinyStories)到大规模 GPU/TPU 集群(含 multislice TPU)都能跑。配合官方 Delphi 扩展套件,能研究如何把一套 LLM 配方从 3e18 FLOPs 扩展到 1e23 FLOPs——即用较小模型预测大模型的训练表现(扩展律)。
# 官方安装教程:docs/tutorials/installation.md
pip install -e . # 或按仓库指引安装依赖(需 Python + PyTorch 环境)
建议先跑通官方教程:tiny language model(TinyStories 小模型)→ DCLM 1B/1x(更大实验)→ 再看其他推理部署验证效果。
在 TinyStories 上训一个小模型(两个 step:先 tokenize 数据集,再训练,后者依赖前者):
from fray.cluster import ResourceConfig
from levanter.optim import AdamConfig
from marin.execution.lazy import lower
from marin.execution.step_runner import StepRunner
from marin.experiment.data import tokenized
from marin.experiment.train import train_lm
tinystories_tokenized = tokenized(
name="tinystories",
source="roneneldan/TinyStories",
tokenizer="gpt2",
)
nano_tinystories_model = train_lm(
name="nano_tinystories_model",
model="gpt2",
optimizer=AdamConfig(learning_rate=6e-4, weight_decay=0.1),
datasets={tinystories_tokenized: 1.0}, # 依赖 tokenize 步骤
batch_size=4,
seq_len=2048,
num_train_steps=100,
resources=ResourceConfig.with_cpu(),
)
if __name__ == "__main__":
StepRunner().run([lower(nano_tinystories_model)])
稍微改动即可扩展到更大的模型/数据集混合(docs/tutorials/train-an-lm.md),甚至拉满 GPU/TPU 大集群。
想研究"更大 = 更好"的边界,Delphi 提供:
CompletedAdamHParams 类与扩展启发式 Agent 技能.agents/skills/、.claude/skills/),例如 add-dataset 技能一步步教你加新数据集Marin 解决"如何组织训练实验",而想让模型真正跑起来服务,可结合vLLM本地部署教程;本地快速训练小模型还有更轻量的方案,参考Unsloth本地微调教程。
GitHub: marin-community/marin · 语言: Python · ⭐ 3k+ · 社区驱动
扩展配方:把算力预算映射成模型配置