browser-chess / README.md
JackHopkinsGSL's picture
Front-end only; weights fetched from browser-chess-weights model repo
15ade26 verified
|
Raw
History Blame Contribute Delete
1.59 kB
---
title: 1650-Elo Browser Chess
emoji: ♟️
colorFrom: blue
colorTo: indigo
sdk: static
app_file: index.html
pinned: false
short_description: Grafted BT4 to Qwen3-1.7B chess, self-playing on WebGPU
custom_headers:
# credentialless (not require-corp) so the cross-origin model weights fetched from the
# HF model repo load under cross-origin isolation WITHOUT needing a CORP header on them.
# Still enables SharedArrayBuffer / crossOriginIsolated, which WebGPU + threaded WASM need.
cross-origin-embedder-policy: credentialless
cross-origin-opener-policy: same-origin
---
# 1650-Elo browser chess — Latent Grafting
A frozen **Lc0 BT4** chess trunk is grafted into **Qwen3-1.7B** as soft-prompt tokens; the
LLM reads the graft and plays. Everything — the BT4 trunk, the graft stem, and the quantized
LLM — runs **entirely client-side on WebGPU** via onnxruntime-web. No server inference.
Three games self-play simultaneously (batched on the GPU), each streaming the model's
`<think>` reasoning and its stated win probability per move.
## How it's served
This is a **static** Space. The `custom_headers` block above sets COOP/COEP so the browser
grants `SharedArrayBuffer` (required by ORT-web's threaded WASM + WebGPU). The pre-built
front-end and the ~1.6 GB of model weights are committed under `dist/` (weights via Git LFS)
and served as-is; `app_file` points at `dist/index.html`.
## Requirements (for visitors)
A WebGPU browser (Chrome/Edge 113+, Safari 18+) and a ~1.6 GB one-time download (cached after
first load). Click **Load model**, then **Self-play**.