AIline docs

Troubleshooting

The problems users hit most, with one diagnostic command and one fix per item. If something is missing here, run ailine doctor --strict --json; it surfaces every config and environment issue AIline can detect locally.

MLflow column stays empty

Symptom: ailine status --verbose shows MLflow Run : None after training finishes. AIline's plugin must be installed in the same Python venv as the training script so MLflow auto-discovers it.

One-line check:

python -c "import ailine.integrations.mlflow_plugin; print('ok')"

If this fails, AIline is not installed in that venv. Install into the same env you run training from:

pip install ailine-core

The plugin is registered as an mlflow.run_context_provider entry point, so reinstalling AIline (or upgrading) is what makes MLflow pick it up. See Concepts → Real-time MLflow linking for the flow.

Wrong tracking server

Symptom: AIline opens an MLflow run on a different backend than your script (e.g. local file://mlruns vs. a real server). AIline resolves the tracking URI from AILINE_MLFLOW_URI, then MLFLOW_TRACKING_URI, then file://<repo>/mlruns.

Print what is actually resolved (and the source label):

ailine init-workspace

The tail of that command prints something like:

Resolved MLflow environment:
  tracking URI: http://10.0.0.5:5000   (source: MLFLOW_TRACKING_URI)
  UI base:      http://10.0.0.5:5000   (source: derived(MLFLOW_TRACKING_URI))
  storage dir:  /work/.ailine/snapshots (source: default(.ailine/snapshots))

Pin both values in your shell rc so AIline and your script always agree:

export AILINE_MLFLOW_URI=http://10.0.0.5:5000
export AILINE_MLFLOW_UI_BASE=http://10.0.0.5:5000

Restore aborts on a dirty tree

ailine restore refuses to overwrite local changes by default. Two ways forward:

  • Preview the diff first with --dry-run:
    ailine restore <snapshot_id> --dry-run
  • Confirm you want to discard local changes with --force:
    ailine restore <snapshot_id> --force

Paths matching .ailineignore are not considered dirty for this check, and are never deleted by the strict-sync. .git and .ailine are always preserved.

Where are my snapshots?

Default: <repo>/.ailine/snapshots/, with content-addressed objects under .ailine/snapshots/objects/. Override the directory in .ailine.yml:

snapshot:
  storage_dir: /mnt/big-disk/ailine-snapshots

Or via environment variable for one-off runs:

export AILINE_STORAGE_DIR=/mnt/big-disk/ailine-snapshots
ailine track -- python train.py

Total size on disk:

du -sh .ailine/snapshots