Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

**Miner guide for the BASE prism challenge — HTTP AutoModel patch submit.**

Recipe **2.1.0** is a **new competition** (`prism-v2.1`). Old 2.0 scores do not pay; weights burn until the first eligible 2.1 run.

[![BASE](https://img.shields.io/badge/BASE-subnet-black.svg)](https://github.com/BaseIntelligence/base)
[![Bittensor](https://img.shields.io/badge/Bittensor-subnet-black.svg)](https://bittensor.com/)
[![License](https://img.shields.io/github/license/BaseIntelligence/prism)](LICENSE)
Expand All @@ -25,17 +27,18 @@ PRISM is a research challenge on a pinned
[NeMo AutoModel](https://github.com/NVIDIA-NeMo/Automodel) base: you fork the
operator pin, edit under that tree, and submit a **unified git diff**. The
operator applies your patch fail-closed, then re-executes training on a
miner-funded Lium GPU pod against a pinned FineWeb-Edu shard. Score is pure
**bits-per-byte** (bpb, lower is better). There is **no** miner Docker image,
no CVM, no on-chain write from miners — HTTP submit only.
miner-funded **4-GPU** Lium pod against a pinned FineWeb-Edu shard. Live leaf
score is the **equal-weight G2 public-suite mean** (`scoring_version` 4).
There is **no** miner Docker image, no CVM, no on-chain write from miners —
HTTP submit only.

| | |
|---|---|
| Challenge id | `prism` |
| Production gateway | `https://chain.joinbase.ai` |
| Staging gateway | `http://staging.api.joinbase.ai` |
| Submit path | `/challenge/prism/v1/submissions` |
| Recipe | **2.0.0** — AutoModel pin + patch (`automodel@v0.5.0`) |
| Recipe | **2.1.0** — AutoModel pin + patch (`automodel@v0.5.0`), 4-GPU CUDA 13/TE |
| Live GPU | Miner-funded Lium — pass `X-Lium-Api-Key` |

This repository holds **miner documentation and examples only**. Control-plane
Expand All @@ -46,9 +49,10 @@ source lives in [BaseIntelligence/base](https://github.com/BaseIntelligence/base
1. Read [Getting started](docs/getting-started.md) (or the [full guide](docs/prism.md)).
2. `GET /v1/recipe` — copy `automodel_pin_id`, `automodel_git_commit`, and caps.
3. Checkout that AutoModel commit → edit → `git diff <commit> > automodel.patch`.
4. Pack `automodel.base` + `automodel.patch` (+ optional `prism.toml`) and submit
with your hotkey + **`X-Lium-Api-Key`** — see [Submit](docs/submit.md).
5. Poll events until `terminated`, then check your bpb — see [API](docs/api.md).
4. Pack `automodel.base` + `automodel.patch` (+ optional `prism.toml` /
`requirements.txt`) and submit with your hotkey + **`X-Lium-Api-Key`** —
see [Submit](docs/submit.md). Worked example: [LoopMoE](examples/loopmoe/).
5. Poll events until `terminated`, then check G2 benches — see [API](docs/api.md).

```bash
export GATEWAY=https://chain.joinbase.ai
Expand All @@ -68,8 +72,8 @@ curl -sS -X POST "$GATEWAY/challenge/prism/v1/submissions" \
## The three things miners get wrong

1. **Legacy 1.x ZIPs** — `architecture.py` + `training.py` (or training-only
`arch_id`) return `400 unsupported_layout` / `recipe_version` on live 2.0.
Ship `automodel.base` + `automodel.patch` only.
`arch_id`) return `400 unsupported_layout` / `recipe_version` on live 2.1.
Ship `automodel.base` + `automodel.patch` only.
2. **Wrong pin / stale diff** — `automodel.base` must equal live
`automodel_pin_id` (`automodel@v0.5.0`); regenerate the patch against the
exact `automodel_git_commit` from `/v1/recipe`.
Expand Down
5 changes: 4 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
# PRISM miner docs

Live recipe is **2.0.0**: submit an AutoModel pin id + unified git diff
Live recipe is **2.1.0**: submit an AutoModel pin id + unified git diff
(`automodel.base` + `automodel.patch`), not a free-form two-script ZIP.
Pods expose **4 GPUs** (CUDA 13 / Transformer Engine). Caps: **≤ 1B params**,
**3.0e18 attested FLOPs** + 5 h wall. Leaf scoring is **G2 benchmarks**
(`scoring_version` 4) unless operators flip a documented knob.

| Page | What it covers |
|------|----------------|
Expand Down
13 changes: 8 additions & 5 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Getting started

## The contract (recipe v2.0.0)
## The contract (recipe v2.1.0)

You do **not** ship a free-form `architecture.py` / `training.py` project.
Live recipe **2.0.0** accepts only a pin id plus your unified diff against that
Live recipe **2.1.0** accepts only a pin id plus your unified diff against that
pin:

```text
Expand All @@ -25,9 +25,12 @@ prism.toml # optional — entry / model-config knobs
5. Write `automodel.base` as a single line equal to `automodel_pin_id`, pack
the ZIP, and `POST /v1/submissions` with your hotkey + **`X-Lium-Api-Key`**.

Models must stay **≤ 350M parameters**. The pod has **no network**
(`unshare --net`) beyond the operator-owned dataset pull — do not call Hub
downloads from miner code.
Models must stay **≤ 1B parameters**. Recipe-v10 pods expose four GPUs;
train from `ctx["train_stream"]` (rank 0 owns the stream under DDP). Miner
**model** code has **no network** (`unshare --net`, loopback up for rendezvous)
beyond the operator-owned dataset pull — do not call Hub downloads from
`build_model` / `train`. You may ship `requirements.txt` or `pyproject.toml`
for a network-on install phase before that sandbox.

**Legacy recipe 1.x is rejected on live.** Two-script ZIPs
(`architecture.py` + `training.py`), 1.3 source-tree ZIPs, and training-only
Expand Down
Loading
Loading