Spaces:
Running on Zero
Running on Zero
| title: GYF GPU Lane | |
| emoji: π | |
| colorFrom: indigo | |
| colorTo: pink | |
| sdk: gradio | |
| app_file: app.py | |
| pinned: false | |
| # GYF GPU serving lane (HF ZeroGPU) | |
| Free-tier GPU lane for GetYourFit (engineering-doctrine **D7**). Serves the fashion | |
| encoder's GPU embedding as a small JSON API the local GYF stack calls through | |
| `perception.remote.RemoteEncoder`. Only the forward pass runs here β retrieval | |
| scoring, ranking, and the M2 bake-off stay on the caller's CPU. | |
| ## API | |
| | api_name | input | output | | |
| | --- | --- | --- | | |
| | `/embed_images` | `model_id: str`, `images_b64: list[str]` (base64 PNG) | `{"embeddings": [[...]], "dim": int}` | | |
| | `/embed_texts` | `model_id: str`, `texts: list[str]` | `{"embeddings": [[...]], "dim": int}` | | |
| | `/estimate_skin_tone` | `image_b64: str` (base64 PNG) | `{"skin_tone": "mstN", "undertone": str, "field_confidence": {...}, "model_version": str}` | | |
| | `/estimate_body` | `image_b64: str` (base64 PNG) | `{"measurements": {...}, "region_quality": {...}, "model_confidence": float, "model_version": str}` | | |
| Embeddings are L2-normalized; only Apache-2.0 `encoder` models in `ALLOWED_MODELS` | |
| are served (keep in sync with `models.registry.json`). `/estimate_body` runs BiRefNet | |
| (MIT silhouette) + RTMW (Apache-2.0 whole-body keypoints) and returns | |
| height-normalized torso widths anchored to the shoulder/hip landmarks β the | |
| `bodyshape` measurement geometry is vendored from `ml/usermodel/body/measurements.py` | |
| (keep in sync). Both photo lanes abstain (`unknown` / `model_confidence: 0`) when no | |
| plausible subject is found. | |
| ## Deploy | |
| See [`docs/deploy/gpu-lane.md`](../../docs/deploy/gpu-lane.md) in the main repo for the | |
| full picture β the free Colab path, the local path, and deploying this folder as a remote | |
| serving lane (HF ZeroGPU / RunPod / Modal) behind `GYF_ENCODER_REMOTE_URL`. | |