marimo-batch-mlflow¶
Terminology rule (zh-TW pages)
技術名詞首次出現以「中文 (English original)」格式呈現,例:依賴注入
(dependency injection)。不自創翻譯——若無公認譯名直接保留英文
(如 embedding、tokenizer)。代碼、API 名、CLI flag、套件名、檔名一律不翻。
marimo-team/skills/marimo-batch 的有意見 (opinionated) fork,置換三件事:
| 關注點 | upstream marimo-batch |
這個 skill |
|---|---|---|
| CLI 解析 | mo.cli_args() + 手寫 rich.Table 做 --help |
tyro.cli(ModelParams) —— 自動 --help、type coercion、validation |
| Param 模型 | Pydantic BaseModel |
dataclass (主要) 或 pydantic.BaseModel (替代) |
| Tracking | Weights and Biases | MLflow (mlflow + 可選的 mlflow-widgets 做即時圖表) |
當使用者已經在 (或樂於用) MLflow、且偏好 strongly-typed CLI 時用這個 skill。當使用者已經在 W&B 上時用 upstream。
出貨內容 (What ships)¶
- 完整 SKILL.md (skills/local/marimo-batch-mlflow/SKILL.md) 含跟 upstream 的決策矩陣、雙模式 pattern 配方、以及給 params / EnvConfig / training loop / live chart 的 cell-level template。
- 一份 reference notebook
(starting-point.py)
—— 完整 PyTorch 訓練 notebook,含 dataclass param、Tyro CLI、
MLflow logging、以及在 script 模式下被 gate off 的即時
MlflowChartcell。 - Pydantic 變體片段 (params-pydantic.py) —— 只有 params cell 不同;notebook 其餘部分相同。
- grid-search launcher
(grid.py)
—— 透過 Hugging Face Jobs 做隨機化 sweep,注入 MLflow secret。
預設 dry-run;
--launch才實際 submit。
雙模式 pattern (the core idiom)¶
import marimo as mo
import tyro
is_script_mode = mo.app_meta().mode == "script"
if is_script_mode:
params = tyro.cli(ModelParams) # CLI flag
else:
mo.stop(form.value is None, mo.md("*Submit form to start.*"))
params = ModelParams(**form.value) # UI form
# 底下每個 cell 用 `params.epochs`、`params.batch_size`、...
# 不知道是哪個分支產生的。
同一份 notebook 既是快速迭代用的 UI、又是 uv run notebook.py
--epochs 50 batch job 的進入點。零程式碼複製。
為什麼是 fork 而不是 vendor¶
upstream 的 marimo-batch skill 對 W&B 跟 mo.cli_args() 有特定意見。
Vendor + patch 會在每次 sync 被蓋掉;在 skills/local/ 中做 local fork
讓分歧 (divergence) 安全且顯式。SKILL.md 也 cross-reference upstream,
讓使用者選對變體。
Cross-references¶
- Upstream
marimo-batch—— W&B 變體;如果使用者已經在 W&B 上就選這個。 marimo-notebook—— 通用 marimo 撰寫 pattern (從 marimo-team vendor)。anywidget-generator—— 當mlflow-widgets涵蓋不到時,用來建客製化 live-chart widget (從 marimo-team vendor)。mlflow-widgets——starting-point.py即時圖表 cell 中使用的、以 anywidget 為基礎的 MLflow 圖表 / 表格 / parallel-coordinate component。- Tyro docs —— CLI 生成 reference; 支援 dataclass、Pydantic、attrs。