RUNLOCALAIv38
->Will it run?Best GPUCompareTroubleshootStartLearnPulseModelsHardwareToolsBench
Run check
RUNLOCALAI

Independently operated catalog for local-AI hardware and software. Hand-written verdicts. Source-cited claims. Reproducible commands when we have them.

OP·Fredoline Eruo
DIR
  • Models
  • Hardware
  • Tools
  • Benchmarks
TOOLS
  • Will it run?
  • Compare hardware
  • Cost vs cloud
  • Choose my GPU
  • Prompting kits
  • Quick answers
REF
  • All buyer guides
  • Learn local AI
  • Methodology
  • Glossary
  • Errors KB
  • Trust
EDITOR
  • About
  • Author
  • How we make money
  • Editorial policy
  • Contact
LEGAL
  • Privacy
  • Terms
  • Sitemap
MAIL · MONTHLY DIGEST
Get monthly local AI changes
Monthly recap. No spam.
DISCLOSURE

Some links on this site are affiliate links (Amazon Associates and other first-class retailers). When you buy through them, we earn a small commission at no extra cost to you. Affiliate links do not influence our verdicts — there are cards we rate highly that we don't have affiliate relationships with, and cards that sell well that we refuse to recommend. Read more →

© 2026 runlocalai.coIndependently operated
RUNLOCALAI · v38
  1. >
  2. Home
  3. /Learn
  4. /Courses
  5. /MLOps for Local AI
  6. /Ch. 4
MLOps for Local AI

04. MLflow Tracking Server

Chapter 4 of 24 · 20 min
KEY INSIGHT

The server doesn't run training—it receives logging calls. Your training code still runs locally; it just sends results to the remote server. The client library handles batching and retry logic. Connect clients to the server: ```python import mlflow # Point to your server mlflow.set_tracking_uri("http://localhost:5000") # All logging now goes to the server mlflow.log_param("learning_rate", 0.01) ``` For remote servers (servers on other machines or containers), use the appropriate hostname or IP. For local containerized deployments, use `host.docker.internal` on Docker Desktop or the container's IP on Linux. Authentication isn't built into the basic MLflow server. For air-gapped local networks, this may be acceptable. For environments requiring auth, consider a reverse proxy (nginx with basic auth) or the MLflow Enterprise features. ```bash # Secure the server behind nginx with basic auth # nginx.conf snippet server { listen 443 ssl; server_name mlflow.local; auth_basic "MLflow Access"; auth_basic_user_file /etc/nginx/.htpasswd; location / { proxy_pass http://localhost:5000; } } ```

A tracking server provides a central endpoint for experiment logging. Instead of writing to local files, clients send data to the server over HTTP. This enables multi-process logging, remote execution, and a unified UI regardless of where training runs.

Start the server:

mlflow server \
    --backend-store-uri sqlite:///mlflow.db \
    --default-artifact-root ./artifacts \
    --host 0.0.0.0 \
    --port 5000

The --backend-store-uri specifies the database for metadata. The --default-artifact-root specifies where model artifacts and files are stored. For local-only setups, both can be filesystem-based.

Local verification checkpoint

Run the smallest example from this chapter in a local workspace and record the package version, runtime, data path, and observed output. If the result depends on model size, vector count, CPU/GPU backend, or available memory, note that constraint beside the exercise so the lesson remains reproducible.

EXERCISE

Start an MLflow server with the command above. Open http://localhost:5000 in a browser. Run a training script with mlflow.set_tracking_uri("http://localhost:5000"). Verify the run appears in the UI. Stop the server and restart it—confirm data persists.

← Chapter 3
MLflow Setup
Chapter 5 →
Model Registry