Spaces:
Paused
Paused
|
Download README.md from Beexly/studio-chat: direct link, hf CLI and curl.
- Browser
- Download file 3.35 kB
-
https://huggingface.co/spaces/Beexly/studio-chat/resolve/main/README.md
- Command line
-
hf download hf://spaces/Beexly/studio-chat/README.md
-
curl -L -o README.md https://huggingface.co/spaces/Beexly/studio-chat/resolve/main/README.md
3.35 kB
| title: Beexly Studio Chat | |
| emoji: 🧠 | |
| colorFrom: indigo | |
| colorTo: purple | |
| sdk: gradio | |
| sdk_version: 5.9.1 | |
| app_file: app.py | |
| pinned: false | |
| license: other | |
| license_name: qwen | |
| license_link: https://huggingface.co/Qwen/Qwen2.5-72B-Instruct/blob/main/LICENSE | |
| short_description: Chat with an open-weights model on free ZeroGPU | |
| tags: | |
| - zero-gpu | |
| # Beexly Studio Chat (ZeroGPU) | |
| Personal chat tool. **Not connected to any Galaxy Sports Edge product, data, | |
| or prediction engine — this is Garrett's own tooling, unrelated to GSE.** | |
| - **Model**: `Qwen/Qwen2.5-72B-Instruct`, loaded 4-bit (nf4, bitsandbytes) | |
| - **License**: `qwen` (Alibaba's custom Qwen license, confirmed from the | |
| model card metadata — not Apache-2.0/MIT; read the full terms on the | |
| [model card](https://huggingface.co/Qwen/Qwen2.5-72B-Instruct) before any | |
| commercial or redistribution use, this Space is personal-use only) | |
| - **Measured limits** (live-tested, see the deploy report): packed footprint | |
| 44.5GB, ~13.4 tokens/sec including overhead, max 1024 output tokens per | |
| reply (calibrated so a full-length reply stays under ZeroGPU's 120s grant | |
| with margin — a 1024-token reply measured 84.0s), cold start ~4-5 min | |
| (full weight re-download; no persistent storage on the free tier) | |
| ## Features | |
| - System-prompt picker: General / Code / Writing / Structured JSON output | |
| - Streaming responses | |
| - Copy button on every reply (hover a message) | |
| - Chat history capped at the last 12 turns to bound context growth | |
| ## Tried and reverted: document-grounded chat (RAG) | |
| A Documents tab (upload PDF/DOCX/PPTX, parsed via `docling`, retrieved with | |
| BM25) was built and pushed, then reverted. Real cause, not a code bug: this | |
| Space's own `MODEL_ID` (72B) downloads **145GB** of raw weights before | |
| 4-bit quantization, against a **150GB per-Space storage cap** — docling's | |
| own supplementary models pushed it over, and the container was evicted | |
| ("Workload evicted, storage limit exceeded (150G)"). There isn't enough | |
| storage headroom left on this Space for anything else meaningful. If | |
| document-grounded chat is wanted later, it needs either a smaller base | |
| model here, or to live on a Space that isn't already this close to the | |
| storage ceiling (e.g. `studio-media`, whose models total well under half | |
| that footprint). | |
| ## Fixed: a real gradio_client bug | |
| ZeroGPU force-pins `gradio[oauth]==5.9.1`. Its bundled `gradio_client` | |
| (1.5.2) has a real bug: its JSON-schema parser assumes every schema node is | |
| a `dict`, but valid JSON Schema allows a bare boolean (e.g. | |
| `additionalProperties: true`) — this crashed *every* API call to this | |
| Space with `TypeError: argument of type 'bool' is not iterable`. The | |
| earlier fix (pinning `pydantic==2.10.3`, which happens to avoid generating | |
| that schema shape) was a workaround, not a fix, and it broke `docling`'s | |
| own serialization elsewhere. The real fix, now in `app.py`: a small | |
| monkeypatch on `gradio_client.utils._json_schema_to_python_type` that | |
| handles non-dict schema nodes directly. No pydantic pin needed. | |
| ## Swapping the model | |
| Change `MODEL_ID` in `app.py` to any other instruct-tuned model on the Hub. | |
| Verified working sizes so far (4-bit, packed footprint): 32B → ~20.7GB, | |
| 72B → 44.5GB, both loading and generating cleanly. If a bigger model OOMs | |
| or times out, the previous known-good `MODEL_ID` is | |
| `Qwen/Qwen2.5-32B-Instruct`. | |