ContextLab / ContextLab/llm-geometry

Pin the community ONNX mirrors to their own commit revisions

Open
#5 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
1
Forks
0
PR merge metrics
No merged PRs in 30d

Description

## What

In the static build, in-browser generation resolves the community ONNX mirror (e.g. `onnx-community/gpt2-ONNX`) at **`main`**. Everything else the site fetches is pinned: the tokenizer and the safetensors weight windows both use the model repo's recorded commit SHA.

This is the one path where the bytes executed in a visitor's browser can change without a code change here.

## Why it isn't already fixed

The obvious fix — pass the recorded `revision` through to `pipeline(...)` — is **wrong**, and was measured to be wrong:

```
Could not locate file: "https://huggingface.co/onnx-community/gpt2-ONNX/resolve/607a30d783dfa663caf39e06633721c8d4cfcd7e/tokenizer.json"
```

`607a30d7…` is `gpt2`'s commit. The ONNX mirror is a **different repository with its own commit history**, so the model repo's SHA 404s against it. Attempting this broke generation entirely until it was reverted.

## What a real fix looks like

Record each mirror's *own* revision:

1. Resolve the mirror's head SHA at export time (`GET https://huggingface.co/api/models/` → `sha`), for the mirrors listed in `ONNX_REPOS` (`code/frontend/src/lib/staticClient/arch.ts`).
2. Write it into the per-model `meta.json` the exporter emits (e.g. `onnx_repo` + `onnx_revision`), so the mapping lives with the data rather than hard-coded in the frontend.
3. Pass that SHA to `pipeline(..., { revision })` in `transformersRuntime.ts`.

Step 2 is the substantive one: it also removes the hard-coded `ONNX_REPOS` map from the frontend, which is currently a second place the curated model list has to be kept in sync.

## Acceptance

- Generation resolves a pinned SHA, verified in a browser (not just in types).
- A stale/incorrect SHA fails loudly at load with a plain-language error, not a hang.
- The curated model list has exactly one source of truth.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.