OpenSource-Hub

marin

フレームワーク

marin-community/marin

基礎モデルの研究開発のためのオープンソースフレームワーク。

概要

Marin は、基盤モデルの研究開発のための研究プロジェクト、ソフトウェアプラットフォーム、およびコミュニティです。大規模言語モデルのトレーニングに重点を置き、データキュレーション、トークン化、事前トレーニング、事後トレーニング、評価をカバーしています。オープンな開発を重視しており、音声、DNA、タンパク質のモデルにも活用されています。

README プレビュー

#  Marin\n\n\n    \n\n\n    \n\n\n\n\n> "*I am not afraid of storms, for I am learning how to sail my ship.*"\n> – Louisa May Alcott\n\n[Marin](https://marin.community) is a research program, software platform, and community for the research and development of [foundation models](https://en.wikipedia.org/wiki/Foundation_model).\n\nMarin's concern is training large language models. This includes data curation, transformation, filtering, tokenization, pretraining, posttraining, and evaluation. Beyond the artifacts, software, and infrastructure, behind these models, Marin is committed to openly sharing *all* of the process knowledge required to build these models.\n\nMarin's core value is **[open development](https://openathena.ai/blog/open-development-of-frontier-ai/)**. We document our processes, experiments, and decisions as they happen. Every step, from raw data to the final model, is recorded. Failed experiments are part of that record.\n\nMarin has also been used for building [audio-text models](https://github.com/marin-community/marin/issues/1699), [DNA](https://github.com/Open-Athena/marin-dna), and [protein models](https://github.com/Open-Athena/MarinFold). We encourage this work through the use of Marin as a library, in [marin/experiments](https://github.com/marin-community/marin-experiments).\n\n## Current work\n\n### Frontier mixture-of-experts\n\nOur current focus is pretraining, from scratch, and posttraining a large (5e24 model-FLOPs, 500 billion+ total parameters) mixture-of-experts model to succeed on tasks of importance to scientists and researchers.\n\n### Scaling suite\n\nDelphi is Marin's open scaling suite scaling a LLM recipe from 3e18 to 1e23 FLOPs, inspired by Pythia. It has three parts: a scaling recipe that maps compute budgets to model configurations, a scaling suite trained from that recipe on the Google TPU Research Cloud, and a scaling law that uses the smaller Delphi models to predict the larger ones.\n\nWe released:\n\n- **Checkpoints**

FAQ (5)

トラブル対応
なぜ SWE-rebench は、ExUnit が 0 件の失敗を報告しているにもかかわらず、合格している Elixir のオラクルを 0 とスコアするのですか?

アーカイブされた parse_log_elixir パーサーは test name (...) で始まる行を想定していますが、ExUnit は * test handles arbitrary properties (0.1ms) [L#528] のような行を出力します。先頭の * のため、パーサーは名前付きテストステータスに対して {} を返し、FAIL_TO_PASS のルックアップが失敗してオラクルのスコアが 0 になります。

アーカイブされたパーサーを実行する前に ExUnit の箇条書きマーカーを正規化してトレースを修正します。たとえば experiments/post_training/task_curation/datasets/tasktrove/swe_rebench.py で次のようにします。

import re

def normalize_exunit_line(line: str) -> str:
    return re.sub(r"^\s*\*\s+", "", line)

これを parse_log_elixir を呼び出す前に各ログ行に適用します。この例は test handles arbitrary properties (0.1ms) [L#528] となり、名前付きの合格および失敗レコードが検出できるようになります。ベリファイアを再生成または再ビルドしてから test_state.py::test_patch_resolved を再実行してください。合格したオラクルのスコアは 1 になるはずです。合格および失敗の両方の ExUnit トレースに対するリグレッションテストを追加してください。この修正は PR #10008 で実装されています。

参照 Issue #10003
トラブル対応
MarinSkyRLで「No solution found ... marin-rigging[secrets]>=0.2.123.dev35633925924」というuv lockの失敗を修正するにはどうすればよいですか?

この失敗は、PyPI に互換性のあるリリースが存在するにもかかわらず、uv がピン留めされた Marin Git ワークスペースから marin-rigging 0.2.0 を選択するために発生します。config/external/MarinSkyRL/pyproject.toml にオーバーライドを追加して、uv に公開済みのパッケージを使用するよう強制してください。

[tool.uv]
override-dependencies = ["marin-rigging[secrets]>=0.2.139.dev37117265303"]

ピン留めされた MarinSkyRL/TaskCompendium リビジョンが要求する、より高いバージョン下限を使用してください。最初に報告された MarinSkyRL の下限は >=0.2.123.dev35633925924 でした。その後、再実行します。

uv lock --project config/external/MarinSkyRL --upgrade-package marinskyrl

uv lock -v で、marin-rigging が Marin Git ワークスペースではなく PyPI から解決されていることを確認してください。テストでは、報告されたリビジョンは公開済みの rigging リリースを用いて 198 個のパッケージを解決しました。この修正は PR #9931 で実装されました。

参照 Issue #9929
トラブル対応
reasoning-gym 0.1.25でJSON transportを経た後、正しいARC AGIおよびReArcの回答が1.0ではなく0.05のスコアになるのはなぜですか?

これは、parse_board がグリッドをタプルとして表現するのに対し、json.loads() が metadata['output'] をリストとして復元するために発生します。arc_agi と rearc のスコアラーはこれらの構造を直接比較するため、本来正しいグリッドでも部分点の 0.05 しか得られません。

score_answer() を呼び出す前に、JSONデコードされた正解グリッドをタプルに正規化することで修正します:

metadata = entry["metadata"]
metadata["output"] = tuple(
    tuple(row) for row in metadata["output"]
)

例:

entry = json.loads(json.dumps(entry))
entry["metadata"]["output"] = tuple(
    tuple(row) for row in entry["metadata"]["output"]
)

answer = format_board(entry["metadata"]["output"], dataset.board_format_opts)
print(dataset.score_answer(answer, entry))  # 1.0

この正規化を、arc_agi と rearc の両方について、Verifyit の JSONロード/スコアリング境界に適用してください。修正後は、正しいグリッドは 1.0、誤ったグリッドは 0.05、不正な形式の回答は 0.0 のスコアになります。その後、TaskTrove ARC の除外は解除できますが、以前にステージングされた行は、受け入れられるように個別に再変換する必要があります。

参照 Issue #10004
トラブル対応
Irisネイティブプロキシテストの実行時に`verified_identity`で`job_id`が見つからない問題を修正するには?

この失敗は、ロックされた marin-iris-native==0.1.6.dev31131847556 ホイールが原因で発生しています。このホイールには native proxy のタスクアイデンティティ変更が含まれていません。PR #9994/#10002 で行われたように、ネイティブホイールを marin-iris-native==0.1.11.dev37977873285 以降に更新してロックしてください。lib/iris/pyproject.toml の依存関係を更新し、ロックファイルを再生成(例: uv lock)してから、uv sync で再インストールし、再実行してください:

uv run pytest lib/iris/tests/cluster/controller/test_native_proxy.py -k test_native_listener_stamps_controller_identity_and_strips_caller_credentials

更新されたホイールでは、デコードされた verified_identity に {'job_id': '/alice/train'} が含まれるはずです。

参照 Issue #10005
トラブル対応
macOSでLinux専用のbubblewrap_bin依存関係が原因で発生するrolloutengineのImportErrorを修正する方法

RolloutEngine を PR #9980 を含むバージョンにアップグレードしてください。この修正では、lowering.py と machines.py から shellbox.backends.local.machine(およびローカルの TaskCompendium ランタイム)の即時インポートを削除し、ロック専用の採点パス内でのみインポートするように変更しています。また、isinstance(factory, LocalMachineFactory) によるチェックを factory.backend == Backend.LOCAL に置き換え、委譲型のファクトリーラッパーを使用できるようにしています。

自分でコードにパッチを適用する場合:
1. トップレベルにあるローカルバックエンドのインポートを削除します。
2. ロック専用パスが選択された場合にのみ、_acquire_machine と validate_lowered_task の内部でローカルバックエンドを遅延インポートします。
3. macOS でもパッケージをインポートできるよう bubblewrap_bin のインポートをガードし、ロック専用グレーダーが実際にローカルバックエンドを必要とする場合にのみ、明確なプラットフォームエラーを発生させます。
4. 具象クラスではなく factory.backend == Backend.LOCAL でディスパッチします。

その後、パッケージを更新/再インストールしてテストを再実行します。例:

git pull
pip install -e lib/rolloutengine
pytest

アップグレード前の一時的な回避策:Linux コンテナ内でテストまたは型チェックを実行してください。

参照 Issue #9979