Marin教程:开源基础模型训练框架,实验定义即Makefile

📅 2026-08-30 · 🏷️ 大模型训练 · 开源框架 · AI研究

项目概览

GitHub: marin-community/marin · 语言: Python · ⭐ 3k+ · 社区驱动

Marin是什么?

一个开源基础模型研发框架,它的核心思想很妙:把训练实验定义成带依赖关系的步骤图(像 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 扩展套件

想研究"更大 = 更好"的边界,Delphi 提供:

社区与生态

Marin 解决"如何组织训练实验",而想让模型真正跑起来服务,可结合vLLM本地部署教程;本地快速训练小模型还有更轻量的方案,参考Unsloth本地微调教程

📚 相关阅读

Unsloth教程:本地高效微调大模型

LLM Universe教程:从零搭建大模型应用

📚 常见问题

Marin是什么?

GitHub: marin-community/marin · 语言: Python · ⭐ 3k+ · 社区驱动

如何上手Marin?

扩展配方:把算力预算映射成模型配置