"""Backend adapters for the training pipeline ports (see training/ports.py). Each adapter implements a port for one provider. The compute backend itself is selected by entrypoint, not by code: ``modal run training/modal_app.py`` today; a k8s Job manifest or Vertex CustomJob launcher would be new modules here. """