Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 4,497 Bytes
5acd9c3 f26b729 5acd9c3 f26b729 5acd9c3 f26b729 5acd9c3 f26b729 5acd9c3 f26b729 5acd9c3 59e0f6a 5acd9c3 59e0f6a 5acd9c3 ef8ee9e 5acd9c3 ef8ee9e 5acd9c3 ef8ee9e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
## Deploying aitube2 to https://aitube.at
Note: this document is meant for aitube administrators only, not the general public.
Aitube is not an app/tool but a website, it is not designed to be cloned (technically you can, but since this is not a goal it is not documented).
### Setup the domain
TODO
### Seting up the Python virtual environment
```bash
python3 -m venv .python_venv
source .python_venv/bin/activate
python3 -m pip install --no-cache-dir --upgrade -r requirements.txt
```
### Local testing
First you need to build the app:
$ flutter build web
Then run the server.
See paragraph "Running the gateway scheduler"
### Deployment to production
To deploy the aitube2 api to production:
$ flutter build web
$ git add .
$ got commit -m "<description>"
$ git push public main
and upload the assets to:
https://huggingface.co/spaces/jbilcke-hf/aitube2/tree/main/public
#### Running a rendering node
Current aitube uses `jbilcke-hf/LTX-Video-0-9-6-HFIE` as a rendering node.
aitube uses a round-robin schedule implemented on the gateway.
This helps ensuring a smooth attribution of requests.
What works well is to use the target number of users in parallel (eg. 3) and use 50% more capability to make sure we can handle the load, so in this case about 5 servers.
```bash
# note: you need to replace <YOUR_ACCOUNT_NAME>, <ROUND_ROBIN_INDEX> and <YOUR_HF_TOKEN>
curl https://api.endpoints.huggingface.cloud/v2/endpoint/<YOUR_ACCOUNT_NAME> -X POST -d '{"cacheHttpResponses":false,"compute":{"accelerator":"gpu","instanceSize":"x1","instanceType":"nvidia-l40s","scaling":{"maxReplica":1,"measure":{"hardwareUsage":80},"minReplica":0,"scaleToZeroTimeout":120,"metric":"hardwareUsage"}},"model":{"env":{},"framework":"custom","image":{"huggingface":{}},"repository":"jbilcke-hf/LTX-Video-0-9-6-HFIE","secrets":{},"task":"custom","fromCatalog":false},"name":"ltx-video-0-9-6-round-robin-<ROUND_ROBIN_INDEX>","provider":{"region":"us-east-1","vendor":"aws"},"tags":[""],"type":"protected"}' -H "Content-Type: application/json" -H "Authorization: Bearer <YOUR_HF_TOKEN>"
```
#### Running the gateway scheduler
```bash
# load the environment
# (if you haven't done it already for this shell session)
source .python_venv/bin/activate
PRODUCT_NAME="AiTube" \
MAX_NODES="3" \
MAINTENANCE_MODE=false \
HF_TOKEN="<USE YOUR OWN HF TOKEN>" \
SECRET_TOKEN="<USE YOUR OWN AITUBE SECRET>" \
VIDEO_ROUND_ROBIN_SERVER_1="https:/<USE YOUR OWN SERVER>.endpoints.huggingface.cloud" \
VIDEO_ROUND_ROBIN_SERVER_2="https://<USE YOUR OWN SERVER>.endpoints.huggingface.cloud" \
VIDEO_ROUND_ROBIN_SERVER_3="https://<USE YOUR OWN SERVER>.endpoints.huggingface.cloud" \
VIDEO_ROUND_ROBIN_SERVER_4="https://<USE YOUR OWN SERVER>.endpoints.huggingface.cloud" \
VIDEO_ROUND_ROBIN_SERVER_5="https://<USE YOUR OWN SERVER>.endpoints.huggingface.cloud" \
VIDEO_ROUND_ROBIN_SERVER_6="https://<USE YOUR OWN SERVER>.endpoints.huggingface.cloud" \
HF_IMAGE_MODEL="https://<USE YOUR OWN SERVER>.endpoints.huggingface.cloud" \
HF_TEXT_MODEL="https://<USE YOUR OWN SERVER>.endpoints.huggingface.cloud" \
python3 api.py
```
### Run the client (web)
```bash
# For local development with default configuration
flutter run --dart-define=CONFIG_PATH=assets/config/aitube_low.yaml -d chrome
# For production build to be deployed on a server
flutter build web --dart-define=CONFIG_PATH=assets/config/aitube_low.yaml
```
### WebSocket Connection
The application automatically determines the WebSocket URL:
1. **Web Platform**:
- Automatically uses the same host that serves the web app
- Handles HTTP/HTTPS protocol correctly (ws/wss)
- No configuration needed for deployment
2. **Native Platforms**:
- Production: Automatically uses `wss://aitube.at/ws` when built with production flag
- Development: Uses `ws://localhost:8080/ws` by default
- Custom: Can override with `API_WS_URL` environment variable (highest priority)
#### Production Native Build
For production builds (connecting to aitube.at):
```bash
flutter build apk --dart-define=CONFIG_PATH=assets/config/aitube_low.yaml --dart-define=PRODUCTION_MODE=true
```
#### Custom API Server
For connecting to a different server:
```bash
flutter build apk --dart-define=CONFIG_PATH=assets/config/aitube_low.yaml --dart-define=API_WS_URL=ws://custom-api.example.com/ws
```
Note: The `API_WS_URL` parameter takes precedence over the production setting.
|