File size: 2,980 Bytes
7fb9048 ecc1fa7 7fb9048 | 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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #!/usr/bin/env python3
"""
Universal Model Trainer - Entry Point
Run the FastAPI application with Uvicorn server.
"""
import os
import sys
import uvicorn
import argparse
from pathlib import Path
# Add the project root to Python 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} β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
""")
# Create necessary directories
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)
# Run the server
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() |