ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

马林

Documentation License

我不惧怕风暴,因为我正在学习如何驾驶我的船。
– Louisa May Alcott

Marin 是一个用于 foundation models 研究与开发的开源框架。

Marin 的一个关键特性是可复现性:从原始数据到最终模型的每一步都被记录下来,而不仅仅是最终结果。 这包括失败的实验,因此整个研究过程都是透明的。

Marin 的主要用例是训练 Llama、DeepSeek、Qwen 等语言模型。 值得注意的是,这包括数据整理、转换、过滤、分词、训练和评估。

我们使用 Marin 训练了首个性能超越 Llama 3.1 8B 的开源 8B 参数模型。 你可以查看 training script 或阅读 retrospective

Marin 的文档可在 ReadTheDocsdocs/ 文件夹中查阅。

开始使用 Marin:

示例

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/ 提供了添加新数据集的分步指南。