Solareva Taisia
fix(render): use API-only deps + support fp16 for free-tier RAM
134ff26
services:
- type: web
name: russian-news-classification-api
runtime: python
plan: free
region: oregon
healthCheckPath: /health
buildCommand: |
# Install a lean, API-only dependency set (faster builds + lower RAM).
pip install -r requirements-api.txt
# Download model weights (recommended: GitHub Release asset URL)
if [ -z "$MODEL_URL" ]; then
echo "ERROR: MODEL_URL is not set."
echo "Set MODEL_URL in Render -> Service -> Environment to the direct .pt Release asset URL."
echo "Example: https://github.com/<user>/<repo>/releases/download/<tag>/distilmbert_lora_10k_v1.pt"
exit 1
fi
python scripts/download_model.py \
--model-id distilmbert_lora_10k_v1 \
--url "$MODEL_URL" \
--output-path models/distilmbert_lora_10k_v1.pt \
${MODEL_SHA256:+--sha256 "$MODEL_SHA256"}
startCommand: uvicorn api.main:app --host 0.0.0.0 --port $PORT
envVars:
# Ensure Python can import local top-level packages (api/, models/, utils/, etc.)
- key: PYTHONPATH
value: /opt/render/project/src
- key: PYTHONUNBUFFERED
value: "1"
- key: MODEL_PATH
value: models/distilmbert_lora_10k_v1.pt
- key: THRESHOLDS_PATH
value: config/thresholds.json
- key: TOKENIZER_NAME
value: distilbert-base-multilingual-cased
# Set these in the Render dashboard (do not hardcode secrets here):
# - MODEL_URL: direct URL to .pt file (e.g., GitHub Release asset)
# - MODEL_SHA256: optional integrity check
# - CORS_ALLOW_ORIGINS: comma-separated list of allowed origins for Streamlit Cloud
# - MODEL_DTYPE: optional (float32|float16). Use float16 with an fp16 checkpoint to fit into 512Mi.