Reproducible setups.
WHY IT MATTERS MORE HERE THAN ELSEWHERE
Numerical libraries have tight version interdependencies, and hardware drivers add another layer.
WHAT BREAKS
Framework versions incompatible with driver versions Libraries requiring conflicting versions of a shared dependency Behaviour differing between versions, silently
WHAT TO USE
A virtual environment per project, always.
WHAT TO PIN
Every dependency, with exact versions.
WHY EXACT
Ranges resolve differently over time, and results stop reproducing.
WHAT A LOCK FILE PROVIDES
The exact resolved set, reproducible elsewhere.
WHAT CONTAINERS ADD
The system libraries and drivers, not only Python packages.
WHY THAT MATTERS FOR ACCELERATED HARDWARE
Driver and library compatibility is where most failures occur.
WHAT TO USE FOR TRAINING ON SHARED OR CLOUD HARDWARE
A container image, built and versioned.
WHAT TO RECORD ALONGSIDE ANY RESULT
The environment that produced it.
WHAT TO SEPARATE
Development dependencies from runtime dependencies.
WHY
Serving images should be small and contain nothing unnecessary.
WHAT TO TEST
That a clean environment reproduces the result.