|
|
""" |
|
|
Configuration settings for different deployment environments |
|
|
""" |
|
|
|
|
|
import os |
|
|
from pathlib import Path |
|
|
|
|
|
|
|
|
BASE_DIR = Path(__file__).parent.parent |
|
|
|
|
|
|
|
|
ENVIRONMENT = os.environ.get('ENVIRONMENT', 'local') |
|
|
IS_DATABRICKS = os.environ.get('DATABRICKS_RUNTIME_VERSION') is not None |
|
|
|
|
|
|
|
|
LOCAL_CONFIG = { |
|
|
'host': '127.0.0.1', |
|
|
'port': 8050, |
|
|
'debug': True, |
|
|
'model_cache': str(BASE_DIR / 'cache'), |
|
|
'upload_folder': str(BASE_DIR / 'uploads'), |
|
|
'datasets_folder': str(BASE_DIR / 'datasets'), |
|
|
'max_workers': 1, |
|
|
'use_reloader': True |
|
|
} |
|
|
|
|
|
|
|
|
DATABRICKS_CONFIG = { |
|
|
'host': '0.0.0.0', |
|
|
'port': int(os.environ.get('DATABRICKS_APP_PORT', 8080)), |
|
|
'debug': False, |
|
|
'model_cache': '/tmp/model_cache', |
|
|
'upload_folder': '/tmp/uploads', |
|
|
'datasets_folder': '/dbfs/datasets', |
|
|
'max_workers': 4, |
|
|
'use_reloader': False |
|
|
} |
|
|
|
|
|
|
|
|
CONFIG = DATABRICKS_CONFIG if IS_DATABRICKS else LOCAL_CONFIG |
|
|
|
|
|
|
|
|
IS_HUGGINGFACE_SPACE = os.environ.get('SPACE_ID') is not None |
|
|
default_device = 'cpu' if IS_HUGGINGFACE_SPACE else 'cuda' |
|
|
DEVICE = os.environ.get('DEVICE', default_device) |
|
|
|
|
|
|
|
|
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO' if not CONFIG['debug'] else 'DEBUG') |
|
|
LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' |
|
|
LOG_FILE = str(BASE_DIR / 'logs' / 'chronos2_app.log') |
|
|
|
|
|
|
|
|
def setup_directories(): |
|
|
"""Create required directories if they don't exist""" |
|
|
for key in ['model_cache', 'upload_folder', 'datasets_folder']: |
|
|
path = Path(CONFIG[key]) |
|
|
path.mkdir(parents=True, exist_ok=True) |
|
|
|
|
|
|
|
|
Path(LOG_FILE).parent.mkdir(parents=True, exist_ok=True) |
|
|
|
|
|
|
|
|
MODEL_CONFIG = { |
|
|
'warmup_enabled': os.environ.get('MODEL_WARMUP', 'true').lower() == 'true', |
|
|
'warmup_length': 100, |
|
|
'warmup_horizon': 10, |
|
|
'cache_enabled': True, |
|
|
'memory_limit_gb': 6 |
|
|
} |
|
|
|
|
|
|
|
|
APP_METADATA = { |
|
|
'title': 'Chronos 2 Time Series Forecasting', |
|
|
'subtitle': 'Production-Ready ML Model Testing Interface', |
|
|
'version': '1.0.0', |
|
|
'author': 'Your Organization' |
|
|
} |
|
|
|