| # deployment Specification |
|
|
| ## Purpose |
|
|
| Deploy Lingo Bridge to serverless GPU infrastructure with strict cost controls |
| suitable for a hackathon dev budget, while supporting the GPU features the |
| target models need. |
|
|
| ## Requirements |
|
|
| ### Requirement: Modal serverless deployment |
|
|
| The system SHALL deploy on Modal.com as app `lingo-bridge` (file |
| `modal_app.py`), serving the FastAPI app as an ASGI app, with model weights |
| stored in a Modal Volume named `lingua-models`. |
|
|
| #### Scenario: Deploy and serve |
|
|
| - **WHEN** the app is deployed to Modal |
| - **THEN** the FastAPI app is served as an ASGI web endpoint backed by the |
| `lingua-models` Volume |
| - **AND** it is reachable at the live URL |
| `https://uiharu-kazari--lingo-bridge-web.modal.run` |
|
|
| ### Requirement: Cost guards |
|
|
| The deployment SHALL enforce cost guards: scale-to-zero (`min_containers=0`), |
| `max_containers=1`, and `scaledown_window=120`. The dev budget cap is $50. |
|
|
| #### Scenario: Idle cost is zero |
|
|
| - **WHEN** there are no requests for longer than the scaledown window |
| - **THEN** the container stops and idle cost is zero, never fanning out beyond a |
| single container |
|
|
| ### Requirement: GPU tier supports target models |
|
|
| The deployment SHALL run on a GPU capable of the target workload. It currently |
| runs on **T4** and is moving to **L4**, which is required for Qwen3-TTS / |
| FlashAttention-2 and also speeds up the LLM. |
|
|
| #### Scenario: GPU upgrade for Qwen3-TTS |
|
|
| - **WHEN** Qwen3-TTS (requiring FlashAttention-2) is enabled |
| - **THEN** the deployment runs on an L4 GPU |
|
|
| ### Requirement: Prebuilt CUDA wheel for llama.cpp |
|
|
| `llama-cpp-python` SHALL be installed from a prebuilt CUDA wheel (cu125 index) |
| on a CUDA runtime base image, because compiling from source on a GPU-less |
| builder fails. |
|
|
| #### Scenario: Image build uses prebuilt wheel |
|
|
| - **WHEN** the Modal image is built |
| - **THEN** `llama-cpp-python` is installed from the cu125 prebuilt wheel index |
| on a CUDA runtime base image (no source compilation) |
|
|