58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
import logging
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import mlflow.server
|
|
from mlflow.demo import generate_all_demos
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
def setup():
|
|
# Extract UI build assets into the mlflow package's expected location
|
|
tar_path = Path(__file__).parent.resolve() / "build.tar.gz"
|
|
target_dir = Path(mlflow.server.__file__).parent / "js"
|
|
target_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
_logger.info("Extracting UI assets to %s", target_dir)
|
|
subprocess.check_call(["tar", "xzf", tar_path, "-C", target_dir])
|
|
|
|
# Generate demo data. Always refresh so the preview app reflects the latest
|
|
# demo content (e.g. new trace types) even if the SQLite database persisted
|
|
# from a previous deploy with stale demo data.
|
|
os.environ["MLFLOW_TRACKING_URI"] = "sqlite:///mlflow.db"
|
|
_logger.info("Generating demo data...")
|
|
generate_all_demos(refresh=True)
|
|
_logger.info("Demo data generated.")
|
|
|
|
|
|
def main():
|
|
setup()
|
|
|
|
cmd = [
|
|
sys.executable,
|
|
"-m",
|
|
"mlflow",
|
|
"server",
|
|
"--backend-store-uri",
|
|
"sqlite:///mlflow.db",
|
|
"--default-artifact-root",
|
|
"./mlartifacts",
|
|
"--serve-artifacts",
|
|
"--host",
|
|
"0.0.0.0",
|
|
"--port",
|
|
"8000",
|
|
"--workers",
|
|
"1",
|
|
]
|
|
_logger.info("Starting MLflow server: %s", " ".join(cmd))
|
|
os.execvp(cmd[0], cmd)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|