| |
| """ |
| Universal Model Trainer - Entry Point |
| |
| Run the FastAPI application with Uvicorn server. |
| """ |
|
|
| import os |
| import sys |
| import uvicorn |
| import argparse |
| from pathlib import Path |
|
|
| |
| sys.path.insert(0, str(Path(__file__).parent)) |
|
|
|
|
| def parse_args(): |
| """Parse command line arguments.""" |
| parser = argparse.ArgumentParser( |
| description="Universal Model Trainer - HuggingFace Spaces" |
| ) |
| parser.add_argument( |
| "--host", |
| type=str, |
| default=os.getenv("HOST", "0.0.0.0"), |
| help="Host to bind the server to" |
| ) |
| parser.add_argument( |
| "--port", |
| type=int, |
| default=int(os.getenv("PORT", 7860)), |
| help="Port to bind the server to" |
| ) |
| parser.add_argument( |
| "--workers", |
| type=int, |
| default=int(os.getenv("WORKERS", 1)), |
| help="Number of worker processes" |
| ) |
| parser.add_argument( |
| "--reload", |
| action="store_true", |
| default=os.getenv("RELOAD", "false").lower() == "true", |
| help="Enable auto-reload for development" |
| ) |
| parser.add_argument( |
| "--log-level", |
| type=str, |
| default=os.getenv("LOG_LEVEL", "info"), |
| choices=["critical", "error", "warning", "info", "debug", "trace"], |
| help="Log level" |
| ) |
| return parser.parse_args() |
|
|
|
|
| def main(): |
| """Main entry point.""" |
| args = parse_args() |
| |
| print(f""" |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
| β UNIVERSAL MODEL TRAINER - STARTING... β |
| β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£ |
| β Host: {args.host:<54} β |
| β Port: {args.port:<54} β |
| β Workers: {args.workers:<52} β |
| β Log Level: {args.log_level:<49} β |
| β Reload: {str(args.reload):<53} β |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
| """) |
| |
| |
| directories = [ |
| "uploads", |
| "models", |
| "logs", |
| "cache", |
| "outputs", |
| "checkpoints", |
| "app/static/css", |
| "app/static/js", |
| "app/templates" |
| ] |
| |
| for directory in directories: |
| Path(directory).mkdir(parents=True, exist_ok=True) |
| |
| |
| uvicorn.run( |
| "app.main:app", |
| host=args.host, |
| port=args.port, |
| workers=args.workers, |
| reload=args.reload, |
| log_level=args.log_level, |
| access_log=True, |
| use_colors=True |
| ) |
|
|
|
|
| if __name__ == "__main__": |
| main() |