marin-community/marin · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
马林
“我不惧怕风暴,因为我正在学习如何驾驶我的船。”
– Louisa May Alcott
Marin 是一个用于 foundation models 研究与开发的开源框架。
Marin 的一个关键特性是可复现性:从原始数据到最终模型的每一步都被记录下来,而不仅仅是最终结果。 这包括失败的实验,因此整个研究过程都是透明的。
Marin 的主要用例是训练 Llama、DeepSeek、Qwen 等语言模型。 值得注意的是,这包括数据整理、转换、过滤、分词、训练和评估。
我们使用 Marin 训练了首个性能超越 Llama 3.1 8B 的开源 8B 参数模型。 你可以查看 training script 或阅读 retrospective。
Marin 的文档可在 ReadTheDocs 或 docs/ 文件夹中查阅。
开始使用 Marin:
- 安装 Marin。
- 使用 Marin 训练一个小型语言模型。
- 查看如何使用 Marin 运行一个规模大得多的 DCLM 1B/1x 实验。
- 查看我们已运行的实验摘要。
- 加入 Marin Discord 与社区交流。
示例
Marin 实验被定义为一组可以相互依赖的步骤,并按拓扑顺序执行, 类似于 Makefile。
作为如何使用 Marin 的简要示例,以下是一个在 TinyStories 上训练一个小型模型的完整脚本。 你可以查看 完整脚本 以获取更多详细信息。
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
from experiments.llama import llama_nano
from experiments.marin_tokenizer import marin_tokenizer
# 1. Tokenize the dataset as a lazy handle — nothing downloads yet.
tinystories_tokenized = tokenized(
name="tokenized/tinystories",
source="roneneldan/TinyStories",
tokenizer=marin_tokenizer,
sample_count=1000, # cap at 1 000 samples per shard to keep the tutorial fast
)
# 2. Train the model — depends on the tokenized dataset above.
nano_tinystories_model = train_lm(
name="checkpoints/marin-nano-tinystories",
version="v1",
model=llama_nano,
optimizer=AdamConfig(learning_rate=6e-4, weight_decay=0.1),
# Steps can depend on other steps: nano_tinystories_model depends on tinystories_tokenized
datasets={tinystories_tokenized: 1.0},
batch_size=4,
seq_len=2048,
num_train_steps=100,
z_loss_weight=None,
evals=None, # no point evaluating such a tiny model
resources=ResourceConfig.with_cpu(),
)
if __name__ == "__main__":
StepRunner().run([lower(nano_tinystories_model)])
在此,我们创建两个步骤,一个用于对数据集进行分词,另一个用于训练模型。 训练步骤依赖于分词数据集步骤,因此它将在分词步骤完成后执行。
通过稍作修改,你可以将此扩展为在更大的数据集上训练一个更大的模型, 一个数据集的混合,甚至扩展到非常大的 TPU pods (或多切片 TPU,以及,很快,多节点 GPU!)。
Agent Skills
- 参见
.agents/skills/(以及.claude/skills/)了解可加载的 agent skills。例如,.agents/skills/add-dataset/提供了添加新数据集的分步指南。