Configuration Examples
Complete guide to configuring Epochly for your needs.
Configuration Methods
Epochly can be configured through multiple methods, in order of precedence:
- Runtime API -
epochly.configure()(highest priority) - Environment Variables - System environment variables
- Configuration File -
epochly.tomlor.epochly.toml - CLI Flags - Command-line arguments
- Defaults - Built-in sensible defaults (lowest priority)
Environment Variables
Basic Configuration
# Set enhancement level (0-4)export EPOCHLY_LEVEL=2# Set maximum worker threadsexport EPOCHLY_MAX_WORKERS=8# Set optimization modeexport EPOCHLY_MODE=balanced
Disable Epochly
# Disable Epochly completelyexport EPOCHLY_DISABLE=true# Emergency disable (bypasses all checks)export EPOCHLY_EMERGENCY_DISABLE=1
JIT Configuration
# Enable/disable JIT compilationexport EPOCHLY_JIT_ENABLED=true# Select JIT backend (numba, native, pyston)export EPOCHLY_JIT_BACKEND=numba# Set hot path threshold (number of calls before JIT)export EPOCHLY_JIT_HOT_PATH_THRESHOLD=100
GPU Configuration
# Enable GPU accelerationexport EPOCHLY_GPU_ENABLED=true# Set GPU memory limit (MB)export EPOCHLY_GPU_MEMORY_LIMIT=4096# Set workload threshold for GPU (min array size)export EPOCHLY_GPU_WORKLOAD_THRESHOLD=1000000
Logging Configuration
# Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)export EPOCHLY_LOG_LEVEL=INFO# Set log file pathexport EPOCHLY_LOG_FILE=/var/log/epochly.log# Disable loggingexport EPOCHLY_DISABLE_LOGGING=false
Complete Environment Example
# Production configurationexport EPOCHLY_LEVEL=2export EPOCHLY_MAX_WORKERS=4export EPOCHLY_MODE=conservativeexport EPOCHLY_JIT_ENABLED=trueexport EPOCHLY_JIT_BACKEND=numbaexport EPOCHLY_LOG_LEVEL=WARNINGexport EPOCHLY_LOG_FILE=/var/log/epochly.log
Runtime API
Basic Configuration
import epochly# Configure at startupepochly.configure(enhancement_level=2,max_workers=8,mode='balanced')# Your code here@epochly.optimize()def my_function(data):return process(data)
Full Configuration Options
import epochlyepochly.configure(# Core settingsenhancement_level=2,mode='balanced',# Worker settingsmax_workers=8,reserve_cores=2,# JIT settingsjit_enabled=True,jit_backend='numba',jit_hot_path_threshold=100,# GPU settingsgpu_enabled=False,gpu_memory_limit=4096,gpu_workload_threshold=1_000_000,# Monitoring settingsenable_monitoring=True,track_memory=True,# Logging settingslog_level='INFO',log_file=None,log_console=True)
Get Current Status
import epochly# Get configuration statusstatus = epochly.get_status()print(f"Level: {status['enhancement_level']}")print(f"Mode: {status['mode']}")print(f"Workers: {status['max_workers']}")print(f"JIT enabled: {status['jit_enabled']}")print(f"GPU available: {status['gpu_available']}")
Enable/Disable Monitoring
import epochly# Enable monitoringepochly.enable_monitoring()# Run your coderesult = compute_heavy_task()# Get metricsmetrics = epochly.get_metrics()print(f"Total time: {metrics['total_time']:.3f}s")print(f"Function calls: {metrics['total_calls']}")# Disable monitoringepochly.disable_monitoring()
Dynamic Reconfiguration
import epochly# Start with conservative settingsepochly.configure(enhancement_level=1,max_workers=2)# Process small datasmall_data = range(1000)result1 = process(small_data)# Reconfigure for large dataepochly.configure(enhancement_level=3,max_workers=16)# Process large datalarge_data = range(10_000_000)result2 = process(large_data)
CLI Configuration
Show Current Configuration
# Show all configuration settingsepochly config show# Show specific settingepochly config get EPOCHLY_LEVEL
Output:
Current Epochly Configuration:enhancement_level: 2mode: balancedmax_workers: 8jit_enabled: truejit_backend: numbagpu_enabled: falselog_level: INFO
Set Configuration
# Set enhancement levelepochly config set EPOCHLY_LEVEL 3# Set worker countepochly config set EPOCHLY_MAX_WORKERS 16# Set modeepochly config set EPOCHLY_MODE aggressive
Get Specific Setting
# Get enhancement levelepochly config get EPOCHLY_LEVEL# Get max workersepochly config get EPOCHLY_MAX_WORKERS
Output:
2
Reset Configuration
# Reset all settings to defaultsepochly config reset# Reset specific settingepochly config reset EPOCHLY_LEVEL
Export Configuration
# Export to fileepochly config export > my-config.toml# Export to environment variablesepochly config export --format env > epochly.env
Import Configuration
# Import from fileepochly config import my-config.toml# Import and override existingepochly config import --force my-config.toml
Configuration File (epochly.toml)
Create an epochly.toml file in your project directory:
# epochly.toml - Full configuration example[core]# Enhancement level (0-4)enhancement_level = 2# Optimization mode (off, monitor, conservative, balanced, aggressive)mode = "balanced"# Enable/disable Epochlyenabled = true[workers]# Maximum number of workersmax_workers = 8# Reserve cores for systemreserve_cores = 2# Maximum percentage of cores to usemax_cores_percent = 75[jit]# Enable JIT compilationenabled = true# JIT backend (numba, native, pyston)backend = "numba"# Hot path threshold (calls before compilation)hot_path_threshold = 100# Cache compiled functionscache_enabled = true[gpu]# Enable GPU accelerationenabled = false# GPU memory limit in MBmemory_limit = 4096# Minimum array size for GPU (elements)workload_threshold = 1000000# CUDA device IDdevice_id = 0[monitoring]# Enable performance monitoringenabled = true# Track memory usagetrack_memory = true# Track CPU usagetrack_cpu = true# Metrics retention (seconds)metrics_retention = 3600[logging]# Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)level = "INFO"# Log file path (null for no file)file = "/var/log/epochly.log"# Log to consoleconsole = true# Log formatformat = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
Minimal Configuration File
# .epochly.toml - Minimal configuration[core]enhancement_level = 2mode = "balanced"[workers]max_workers = 8[logging]level = "INFO"
Configuration File Location
Epochly searches for configuration files in the following order:
- Current Directory:
./epochly.tomlor./.epochly.toml - User Config:
~/.config/epochly/config.toml(Linux/Mac) - User Config:
%APPDATA%\\epochly\\config.toml(Windows) - System Config:
/etc/epochly/config.toml(Linux/Mac)
Specify Custom Config File
# Use custom config fileepochly --config /path/to/custom.toml script.py# Or with environment variableexport EPOCHLY_CONFIG=/path/to/custom.tomlpython script.py
# In Pythonimport epochlyepochly.load_config('/path/to/custom.toml')
Mode Presets
Epochly provides predefined optimization modes:
| Mode | Level | Workers | JIT | GPU | Use Case |
|---|---|---|---|---|---|
| off | 0 | 1 | No | No | Debugging, testing |
| monitor | 0 | 1 | No | No | Performance monitoring only |
| conservative | 1 | 2-4 | No | No | Production with limited resources |
| balanced | 2 | 4-8 | Yes | No | General-purpose optimization |
| aggressive | 3 | All cores | Yes | Yes | Maximum performance |
Using Mode Presets
import epochly# Use a preset modeepochly.configure(mode='balanced')# Or via environment variable# export EPOCHLY_MODE=aggressive
# Via CLIepochly config set EPOCHLY_MODE balanced
Use Case Examples
Development Environment
Full optimization with debug logging:
import epochlyepochly.configure(enhancement_level=3,max_workers=8,jit_enabled=True,enable_monitoring=True,log_level='DEBUG',log_console=True)
# Or via environmentexport EPOCHLY_LEVEL=3export EPOCHLY_MAX_WORKERS=8export EPOCHLY_LOG_LEVEL=DEBUG
Production Environment
Conservative settings with limited workers:
import epochlyepochly.configure(mode='conservative',max_workers=4,reserve_cores=2,jit_enabled=True,enable_monitoring=True,log_level='WARNING',log_file='/var/log/epochly.log')
# production.toml[core]mode = "conservative"[workers]max_workers = 4reserve_cores = 2[logging]level = "WARNING"file = "/var/log/epochly.log"
CI/CD Pipeline
Disabled for deterministic tests:
# Disable Epochly in CIexport EPOCHLY_DISABLE=true# Or use monitoring mode for metricsexport EPOCHLY_MODE=monitor
# In test setupimport epochlyif os.getenv('CI'):epochly.configure(mode='off')else:epochly.configure(mode='balanced')
GPU Workloads
Level 4 with GPU enabled:
import epochlyepochly.configure(enhancement_level=4,gpu_enabled=True,gpu_memory_limit=8192,gpu_workload_threshold=1_000_000,max_workers=4 # Limit CPU workers when using GPU)
# Via environmentexport EPOCHLY_LEVEL=4export EPOCHLY_GPU_ENABLED=trueexport EPOCHLY_GPU_MEMORY_LIMIT=8192export CUDA_VISIBLE_DEVICES=0,1
Memory-Constrained Environment
Level 1 with few workers:
import epochlyepochly.configure(enhancement_level=1, # Threading onlymax_workers=2, # Minimal workersjit_enabled=False, # Disable JIT to save memorytrack_memory=True # Monitor memory usage)
# memory-constrained.toml[core]enhancement_level = 1[workers]max_workers = 2reserve_cores = 1[jit]enabled = false[monitoring]track_memory = true
Validation
Verify Configuration
# Basic validationepochly doctor# Verbose validationepochly doctor --verbose# JSON output for scriptingepochly doctor --json
Output:
Epochly Configuration Validation:✓ Epochly installed correctly✓ Python version: 3.11.5 (compatible)✓ Configuration file found: ./epochly.toml✓ Enhancement level: 2 (valid)✓ Max workers: 8 (valid, 8 cores available)✓ JIT backend: numba (available)✓ GPU: not configured✓ All dependencies installedConfiguration summary:Mode: balancedWorkers: 8JIT: enabled (numba)GPU: disabledMonitoring: enabledLog level: INFORecommendations:- Consider Level 3 for parallel workloads- GPU available but not enabled
Verbose Validation
epochly doctor --verbose
Output:
Detailed Epochly Configuration:Environment:EPOCHLY_LEVEL: 2EPOCHLY_MAX_WORKERS: 8EPOCHLY_MODE: balancedEPOCHLY_JIT_ENABLED: trueEPOCHLY_JIT_BACKEND: numbaConfiguration file: ./epochly.toml[core]enhancement_level = 2mode = "balanced"[workers]max_workers = 8reserve_cores = 2System:Python: 3.11.5Platform: Linux-5.15.0-x86_64CPU cores: 8Memory: 16.0 GBGPU: NVIDIA GeForce RTX 3080 (available)Dependencies:✓ numpy: 1.24.3✓ numba: 0.58.0✓ cupy: not installed (GPU support disabled)All checks passed!
JSON Output
epochly doctor --json
Output:
{"status": "ok","version": "1.0.0","python_version": "3.11.5","configuration": {"enhancement_level": 2,"mode": "balanced","max_workers": 8,"jit_enabled": true,"jit_backend": "numba","gpu_enabled": false},"system": {"cpu_cores": 8,"memory_gb": 16.0,"gpu_available": true},"dependencies": {"numpy": "1.24.3","numba": "0.58.0","cupy": null},"recommendations": ["Consider enabling GPU acceleration","Level 3 available for parallel workloads"]}
Configuration Best Practices
1. Start with Defaults
import epochly# Let Epochly use defaults initially# Don't configure unless you have a specific need@epochly.optimize()def my_function(data):return process(data)
2. Use Configuration Files for Projects
# Project-specific .epochly.toml[core]enhancement_level = 2mode = "balanced"[workers]max_workers = 8
3. Use Environment Variables for Deployment
# docker-compose.ymlenvironment:- EPOCHLY_LEVEL=2- EPOCHLY_MAX_WORKERS=4- EPOCHLY_MODE=conservative
4. Override in Code When Needed
import epochlyimport os# Different config for different environmentsif os.getenv('ENVIRONMENT') == 'production':epochly.configure(mode='conservative')elif os.getenv('ENVIRONMENT') == 'development':epochly.configure(mode='aggressive', log_level='DEBUG')
5. Validate Configuration
import epochly# Configureepochly.configure(enhancement_level=2, max_workers=8)# Validatestatus = epochly.get_status()assert status['enhancement_level'] == 2assert status['max_workers'] == 8print("Configuration validated successfully")