File size: 3,859 Bytes
b2594db
 
 
 
 
ed6ea78
b2594db
ed6ea78
 
 
 
 
b2594db
 
 
 
 
 
ed6ea78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b2594db
 
 
 
 
ed6ea78
b2594db
2461f82
 
 
 
 
 
 
 
 
 
b2594db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# =============================================================================
# .env.example — schema for environment variables.
# -----------------------------------------------------------------------------
# Copy this file to `.env` (which is gitignored) and fill in real values.
# `pydantic-settings` automatically reads `.env` at startup and validates each
# field.
#
# Two prefixes are read by the application:
#   BACKEND_*               -> backend/app/core/config.py (BackendSettings)
#   CAPTIONING__<sec>__<k>  -> src/captioning/config/schema.py (AppConfig)
# Nested AppConfig fields use a double-underscore delimiter:
#   CAPTIONING__TRAIN__BATCH_SIZE=32  overrides AppConfig.train.batch_size
# =============================================================================

# ---- App-wide ----------------------------------------------------------------
APP_ENV=development                          # development | staging | production
LOG_LEVEL=INFO                               # DEBUG | INFO | WARNING | ERROR

# ---- BackendSettings (FastAPI process) --------------------------------------
BACKEND_CONFIG_PATH=configs/base.yaml
BACKEND_WEIGHTS_PATH=models/v1.0.0/model.h5
BACKEND_TOKENIZER_DIR=models/v1.0.0
BACKEND_MODEL_VERSION=v1.0.0
BACKEND_API_VERSION=0.1.0
BACKEND_WARMUP=true
BACKEND_REQUEST_ID_HEADER=x-request-id

# ---- AppConfig overrides (research-side hyperparameters) --------------------
# CORS allow-list lives in configs/base.yaml under `serve.cors_allowed_origins`.
# Override it for prod by setting the env var below to a JSON list.
# CAPTIONING__SERVE__CORS_ALLOWED_ORIGINS=["https://your-frontend.vercel.app"]
# CAPTIONING__SERVE__MAX_UPLOAD_BYTES=10485760
# CAPTIONING__INFERENCE__DECODE_STRATEGY=beam
# CAPTIONING__INFERENCE__BEAM_WIDTH=3

# ---- TensorFlow runtime tuning (optional, for HF Spaces cpu-basic) ----------
# TF_CPP_MIN_LOG_LEVEL=2          # silence INFO/WARNING from TF
# OMP_NUM_THREADS=2               # match cpu-basic vCPU count
# TF_NUM_INTEROP_THREADS=1
# TF_NUM_INTRAOP_THREADS=2

# ---- HuggingFace Hub (model artefact storage — wired up in WS-A4) -----------
# Public model repo holding the trained weights + vocab.json.
HF_REPO_ID=your-username/captioning-weights
HF_REVISION=v1.0.0                           # Pin a specific tag for reproducibility
# Optional: only needed for private repos or higher rate limits.
# Generate at https://huggingface.co/settings/tokens (read-only is enough).
HF_TOKEN=
# HF_HOME=/home/user/.cache/huggingface

# ---- Backend Hub weights pull (read by BackendSettings) ---------------------
# When BACKEND_WEIGHTS_HUB_REPO is set, the FastAPI lifespan calls
# huggingface_hub.snapshot_download at startup and ignores the local
# BACKEND_WEIGHTS_PATH / BACKEND_TOKENIZER_DIR values. Leave unset to keep
# loading weights from the locally mounted models/ directory.
# BACKEND_WEIGHTS_HUB_REPO=your-username/captioning-weights
# BACKEND_WEIGHTS_HUB_REVISION=v1.0.0
# BACKEND_WEIGHTS_HUB_FILENAME=model.h5
# BACKEND_WEIGHTS_CACHE_DIR=/home/user/.cache/captioning

# ---- Experiment tracking (MLflow) --------------------------------------------
# Local SQLite during dev; DagsHub URL in production.
MLFLOW_TRACKING_URI=sqlite:///mlruns/mlflow.db
# MLFLOW_TRACKING_URI=https://dagshub.com/your-username/captioning.mlflow
# MLFLOW_TRACKING_USERNAME=your-username
# MLFLOW_TRACKING_PASSWORD=your-dagshub-access-token
MLFLOW_EXPERIMENT_NAME=captioning

# ---- Observability (Phase 4) -------------------------------------------------
# Sentry: error tracking. Free tier = 5k errors/mo. Get a DSN at sentry.io.
# SENTRY_DSN=
# SENTRY_TRACES_SAMPLE_RATE=0.1                # 10% of requests traced

# ---- Frontend (Next.js) — also in frontend/.env.local ------------------------
# NEXT_PUBLIC_API_URL=http://localhost:8000    # Backend base URL for client fetches