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_heuristic、add-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 群集及多種資料集混合。
快速上手
- 閱讀安裝指南:
docs/tutorials/installation.md。 - 執行小型模型教學(
docs/tutorials/first-experiment.md)。 - 跟隨大規模訓練指南(
docs/tutorials/train-an-lm.md)。 - 浏覽實驗目錄(
docs/reports/index.md)。 - 加入 Discord 社群以取得支援與協作。
社群與支援
- 核心貢獻者來自史丹福 CRFM 與 Open Athena。
- 受 Google TPU Research Cloud、Jen-Hsun & Lori Huang 基金會、Siegel Family Endowment 與 Schmidt Sciences 支援。
為何重要 Marin 致力於使前沿規模的 LLM 研究具備可重現性與透明性。透過開源完整的訓練堆疊——包含資料流程、擴展定律與 MoE 平衡——研究人員無需重新發明底層基礎設施,即可建構、比較與擴展大型模型。
連結
相關
- 專案
- 專案
- 專案
- 專案
- 專案