[not for complete beginners]
I want to mention another much less known (comparing to docker) project,
which simplified my life when I wanted to get the benefits of an isolated setup like in a docker, but still want to keep it more flexible - GitHub - apptainer/singularity: Singularity has been EOL'ed, see Apptainer (it has been rebranded to Apptainer recently (Introduction to Apptainer — Apptainer User Guide main documentation), but I started to use while it was “Singularity”).
There have been posts about it before (Fastai2 in Singularity Container), but it has been also evolved a lot since 2020, so I think worth mentioning it again.
It has been born as HPC containers solution and will take a couple of days learning curve (if you already familiar with a docker), but has a few nice properties which I found useful when you want to play with DL setups, including fastai:
- Truly one single container file (if you want it to be 1 file of course) - copying and organizing different setups easier to me.
- Better support for GPU’s and other ASICs (it is “closer” to PCI devices than docker)
- You can work inside a container like inside a VM (interactive changes = persistent overlays) or/and use definition files. (can import docker containers as well)
- Neat HPC features, MPI support and etc.
- You can actually encrypt your container.
I found it convenient when I am still in experimenting mode (i.e. not ready to finalize a full definition file), but want to move containers easily between boxes or cloud instances or rollback quickly if an environment gets messed up.