Wow, this is amazing!
I first run after leaving the suggested 2GB, and then kept reducing the free memory and got an even better number than you suggested (in MBs):
Left free: 8000
epoch used peak
1       80 6220
2        2  914

left free: 1900
epoch used peak
1       80 1856
2        2  916

left free:  900
epoch used peak
1        8  896
2	 2  806

left free:  800
hit OOM

Kernel was restarted for each test. I didn’t run the 3rd epoch, since it always gave the same numbers as the 2nd.
So looking at these numbers it appears that there needs to be as much free memory left as the 2nd epoch peak. Though even the latter got smaller with less free RAM available.
I reduced bs from 512 to 128 and rerun the tests to validate my observation:
left free: 8000
epoch used peak
1       36 3238
2        0  260


left free:  300
epoch used peak
1       46  294
2        0  226

left free: 200
hit OOM

So, it is the 2nd epoch’s memory peak that’s the required minimum!
This is great!
Thank you, @albanD!