Spaces:
Sleeping
Sleeping
| # Start DCE Intent Classifier Service | |
| # Usage: ./service/run.sh [--reload] [--production] | |
| set -e | |
| # Default configuration | |
| HOST="${HOST:-0.0.0.0}" | |
| PORT="${PORT:-8000}" | |
| WORKERS="${WORKERS:-1}" | |
| MODEL_DIR="${MODEL_DIR:-artifacts/onnx_int8}" | |
| POLICY_PATH="${POLICY_PATH:-artifacts/config/decision_policy.json}" | |
| MAX_LENGTH="${MAX_LENGTH:-64}" | |
| # Scalability configuration | |
| INFERENCE_WORKERS="${INFERENCE_WORKERS:-4}" | |
| ONNX_INTRA_OP_THREADS="${ONNX_INTRA_OP_THREADS:-4}" | |
| ONNX_INTER_OP_THREADS="${ONNX_INTER_OP_THREADS:-1}" | |
| ENABLE_METRICS="${ENABLE_METRICS:-true}" | |
| # Security configuration | |
| REQUIRE_AUTH="${REQUIRE_AUTH:-true}" | |
| API_KEY="${API_KEY:-}" | |
| # Export environment variables | |
| export MODEL_DIR | |
| export POLICY_PATH | |
| export MAX_LENGTH | |
| export INFERENCE_WORKERS | |
| export ONNX_INTRA_OP_THREADS | |
| export ONNX_INTER_OP_THREADS | |
| export ENABLE_METRICS | |
| export REQUIRE_AUTH | |
| export API_KEY | |
| echo "==============================================" | |
| echo "DCE Intent Classifier Service" | |
| echo "==============================================" | |
| echo "Host: $HOST" | |
| echo "Port: $PORT" | |
| echo "Workers: $WORKERS" | |
| echo "Model: $MODEL_DIR" | |
| echo "Policy: $POLICY_PATH" | |
| echo "Max Length: $MAX_LENGTH" | |
| echo "Inference Workers: $INFERENCE_WORKERS" | |
| echo "ONNX Intra-Op Threads: $ONNX_INTRA_OP_THREADS" | |
| echo "Auth Required: $REQUIRE_AUTH" | |
| echo "Metrics Enabled: $ENABLE_METRICS" | |
| echo "==============================================" | |
| # Check if model exists | |
| if [ ! -f "$MODEL_DIR/model.onnx" ]; then | |
| echo "ERROR: Model not found at $MODEL_DIR/model.onnx" | |
| echo "Run 'make train && make export_onnx && make quantize' first" | |
| exit 1 | |
| fi | |
| # Check API key in production | |
| if [ "$REQUIRE_AUTH" = "true" ] && [ -z "$API_KEY" ]; then | |
| echo "WARNING: REQUIRE_AUTH=true but API_KEY is not set!" | |
| echo "Set API_KEY environment variable or set REQUIRE_AUTH=false for development" | |
| fi | |
| # Start server | |
| if [ "$1" = "--reload" ]; then | |
| echo "Starting with hot reload (development mode)..." | |
| uvicorn service.app:app --host "$HOST" --port "$PORT" --reload | |
| elif [ "$1" = "--production" ]; then | |
| echo "Starting production server with Gunicorn..." | |
| gunicorn service.app:app \ | |
| -w "$WORKERS" \ | |
| -k uvicorn.workers.UvicornWorker \ | |
| --bind "$HOST:$PORT" \ | |
| --timeout 30 \ | |
| --graceful-timeout 10 \ | |
| --access-logfile - \ | |
| --error-logfile - | |
| else | |
| echo "Starting server with Uvicorn..." | |
| uvicorn service.app:app --host "$HOST" --port "$PORT" --workers "$WORKERS" | |
| fi | |