From fac2b721ee54b44817c7c1365703b019f0f6f3f7 Mon Sep 17 00:00:00 2001 From: echobt <154886644+echobt@users.noreply.github.com> Date: Fri, 21 Aug 2026 06:47:30 +0000 Subject: [PATCH] docs: Verda BYOK headers next to Lium Miners can fund live eval with Lium or Verda; image/cmd stay operator-pinned. --- README.md | 14 +++++++------- docs/api.md | 3 ++- docs/getting-started.md | 17 ++++++++++++++--- docs/prism.md | 24 ++++++++++++++++++------ docs/submit.md | 3 ++- docs/troubleshooting.md | 7 +++++-- 6 files changed, 48 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index a105cce..e2f79ff 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ 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 **1× NVIDIA B200** Lium pod against a pinned FineWeb-Edu shard. -Live leaf score is the **equal-weight G2 public-suite mean** +miner-funded **1× NVIDIA B200** (Lium or Verda) against a pinned FineWeb-Edu +shard. Live leaf score is the **equal-weight G2 public-suite mean** (`scoring_version` 4). This is a **new competition** (`prism-v2.1` / `scoring_generation` 21): old 2.0 scores cannot win. There is **no** miner Docker image, no CVM, no on-chain write from miners — HTTP submit only. @@ -41,7 +41,7 @@ Docker image, no CVM, no on-chain write from miners — HTTP submit only. | Staging gateway | `http://staging.api.joinbase.ai` | | Submit path | `/challenge/prism/v1/submissions` | | Recipe | **2.1.0** — AutoModel pin + patch (`automodel@v0.5.0`), 1× B200 | -| Live GPU | Miner-funded Lium — pass `X-Lium-Api-Key` | +| Live GPU | Miner-funded **Lium** (`X-Lium-Api-Key`) or **Verda** (`X-Verda-Client-Id` + Secret + Inference-Key) | This repository holds **miner documentation and examples only**. Control-plane source lives in [BaseIntelligence/base](https://github.com/BaseIntelligence/base). @@ -52,8 +52,8 @@ source lives in [BaseIntelligence/base](https://github.com/BaseIntelligence/base 2. `GET /v1/recipe` — copy `automodel_pin_id`, `automodel_git_commit`, and caps. 3. Checkout that AutoModel commit → edit → `git diff > automodel.patch`. 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/). + `requirements.txt`) and submit with your hotkey + **`X-Lium-Api-Key`** or + Verda BYOK — 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 @@ -79,5 +79,5 @@ curl -sS -X POST "$GATEWAY/challenge/prism/v1/submissions" \ 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`. -3. **Missing `X-Lium-Api-Key`** — live eval runs on **your** Lium account. - Missing key → `400 missing_lium_api_key`. +3. **Missing compute key** — live eval runs on **your** Lium or Verda account. + Missing headers → `400 missing_lium_api_key`. diff --git a/docs/api.md b/docs/api.md index 311ade7..6492a75 100644 --- a/docs/api.md +++ b/docs/api.md @@ -56,7 +56,8 @@ Precheck errors: same membership/contract codes, plus ## Auth note Miner routes identify you by hotkey (`X-Miner-Hotkey` or JSON `miner_hotkey`). -On live, also send **`X-Lium-Api-Key`** (your funded Lium account). Never send +On live, also send **`X-Lium-Api-Key`** **or** the Verda BYOK triplet +(`X-Verda-Client-Id` / Secret / Inference-Key). Never send challenge signing keys or gateway owner keys from a miner client. ## Next diff --git a/docs/getting-started.md b/docs/getting-started.md index 00b968c..b653b24 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -23,7 +23,9 @@ prism.toml # optional — entry / model-config knobs 4. Produce a unified diff against the pin commit, e.g. `git diff > automodel.patch`. 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`**. + the ZIP, and `POST /v1/submissions` with your hotkey + **`X-Lium-Api-Key`** + **or** Verda BYOK (`X-Verda-Client-Id`, `X-Verda-Client-Secret`, + `X-Verda-Inference-Key`). Models must stay **≤ 1B parameters**. Recipe-v10 pods expose four GPUs; train from `ctx["train_stream"]` (rank 0 owns the stream under DDP). Miner @@ -39,13 +41,22 @@ Do not ship Megatron-Bridge or other non-AutoModel frameworks. ## Pay for your own GPU (required on live) -Create a [Lium](https://lium.io) account, fund it, and pass your API key on -every live submit: +Create a [Lium](https://lium.io) **or** [Verda](https://verda.com) account, +fund it, and pass **one** provider on every live submit: ```http X-Lium-Api-Key: ``` +```http +X-Verda-Client-Id: +X-Verda-Client-Secret: +X-Verda-Inference-Key: +``` + +`X-Verda-Api-Key` aliases the inference token. If both providers are complete, +set `X-Compute-Provider: lium` or `verda`. + The key is held in master memory for that submission and may also land in a **short-TTL encrypted seal file** on the master host (never in Postgres, never logged) so a control-plane restart can still stop your pod. Missing key on diff --git a/docs/prism.md b/docs/prism.md index b534678..7a6dac6 100644 --- a/docs/prism.md +++ b/docs/prism.md @@ -33,7 +33,9 @@ prism.toml # optional — entry / model-config knobs 4. Produce a unified diff against the pin commit, e.g. `git diff > automodel.patch`. 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`**. + the ZIP, and `POST /v1/submissions` with your hotkey + **`X-Lium-Api-Key`** + **or** Verda BYOK (`X-Verda-Client-Id`, `X-Verda-Client-Secret`, + `X-Verda-Inference-Key`). Models must stay **≤ 1B parameters**. Miner **model code** (build/train/ eval) runs with **no network** (`unshare --net`) beyond the operator-owned @@ -110,19 +112,29 @@ this document. It is an example, not a scored baseline. **Diff visibility.** After intake, inspect your applied delta at `GET /v1/submissions/{id}/diff` (full unified diff + diffstat / classification). -Evaluation runs on **miner-funded** Lium GPU pods (you pay the rent). Master -still operates the pod over SSH; you do **not** deploy a miner CVM. CI uses -`SimLiumBackend` and does not need a key. +Evaluation runs on **miner-funded** GPUs (Lium SSH pods or Verda serverless +jobs). You pay the rent. Master still operates the job; you do **not** +deploy a miner CVM. CI uses `SimLiumBackend` and does not need a key. ## Pay for your own GPU (required on live) -Create a [Lium](https://lium.io) account, fund it, and pass your API key on -every live submit: +Create a [Lium](https://lium.io) **or** [Verda](https://verda.com) account, +fund it, and pass **one** provider on every live submit: ```http X-Lium-Api-Key: ``` +```http +X-Verda-Client-Id: +X-Verda-Client-Secret: +X-Verda-Inference-Key: +``` + +`X-Verda-Api-Key` aliases the inference token. If both providers are +complete, set `X-Compute-Provider: lium` or `verda`. You cannot set +`image` / `cmd` / `template` — operator pin only. + The key is held in master memory for that submission and may also land in a **TTL-bounded encrypted seal file** on the master host (default ≥36h; never in Postgres, never logged). Master **re-seals** on measure start and heartbeats diff --git a/docs/submit.md b/docs/submit.md index d539cc9..10dac82 100644 --- a/docs/submit.md +++ b/docs/submit.md @@ -10,7 +10,8 @@ Preferred path: a **ZIP** through the production or staging gateway with | Method / URL | `POST {GATEWAY}/challenge/prism/v1/submissions` | | `Content-Type` | `application/zip` | | `X-Miner-Hotkey` | 64 lowercase hex | -| `X-Lium-Api-Key` | your Lium API key (required on live) | +| `X-Lium-Api-Key` | Lium API key (live, if you pay Lium) | +| `X-Verda-Client-Id` / `X-Verda-Client-Secret` / `X-Verda-Inference-Key` | Verda BYOK (live, if you pay Verda). `X-Verda-Api-Key` aliases the inference token. If both providers are complete, add `X-Compute-Provider: lium` or `verda`. You cannot set `image` / `cmd` / `template`. | | Body | raw zip bytes (`automodel.base` + `automodel.patch` at the root) | ```bash diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 5ca410e..ee3c1bb 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -15,9 +15,12 @@ | `similar: true` on precheck | Would hit intake copy gate | Change the patch vs prior champions; starting from the operator pin is fine | | `429 precheck_quota_exceeded` | 3 prechecks/coldkey/UTC day used | Wait until next UTC day; rotating hotkeys does not reset | | `control_plane_restart` / `harness_detached` | Challenge process restarted mid-pod | Stop the Lium pod if still billing; resubmit with `X-Lium-Api-Key` | -| `400 missing_lium_api_key` | Live path needs miner-funded Lium | Pass `X-Lium-Api-Key` (your Lium account); see [Submit](submit.md) | +| `400 missing_lium_api_key` | Live path needs miner-funded Lium or Verda | Pass `X-Lium-Api-Key` or the Verda header triplet; see [Submit](submit.md) | +| `400 missing_verda_credentials` | Verda headers incomplete | Send client id, secret, and inference key | +| `400 ambiguous_compute_provider` | Both Lium and Verda complete | Add `X-Compute-Provider: lium` or `verda` | +| `400 miner_image_override` | JSON set image/cmd/template | Remove those fields — operator pins the container | | **409 `not_failed`** on `/retry` | Row is not `failed` | `/retry` only recovers **failed** rows. Re-POSTing the identical ZIP is `already-queued` (no new GPU). After infra failure: `POST .../retry` with **`X-Lium-Api-Key`** (hotkey/Bearer alone is not enough) | -| **400 `missing_lium_api_key`** on `/retry` | Need another GPU rent | Pass `X-Lium-Api-Key` on live (same header as submit) | +| **400 `missing_lium_api_key`** on `/retry` | Need another GPU rent | Pass `X-Lium-Api-Key` or Verda BYOK on live | | Non-5090 / slow tok/s vs peers | Marketplace drew another SKU | Prism hard-pins **1× RTX 5090**; non-5090 is rejected at rent (no silent score normalize) | | `403 hotkey_not_in_metagraph` | Hotkey not registered | Check the hex (64 lowercase, no `0x`) | | `409 submission_gated` | 1-max slot already used | One accepted patch per hotkey; identical pin+patch is idempotent |