我来详细解释一下:
1. Docker 上流行的容器其实都是 Linux 容器(理论上也支持 Windows 容器,但是没见有人用过),这种容器在 Windows 和 Mac 上其实都是自动起了一个 Linux 虚拟机( Windows 上基于 WSL2 的也是虚拟机),然后在虚拟机里运行 Docker 。
2. 基本认同 @
ysc3839 的方案,我也采用自己跑个 Linux 虚拟机的方案,但是本质上区别不大。
3. 关于内存问题,如果指的是整个 Docker 的内存占用(其实就是虚拟机的内存占用)确实有可能没法立马恢复(这要看他虚拟机的具体设计,我确实不太了解)。mac 上 Docker 这种实质上在虚拟机里跑的方案,天生就注定了不太适合做需要很高性能的事情。
4. xgboost 我确实没研究过,但是经常报错可能有以下可能:
( 1 )内存不够,被 Linux 的 OOM kill ,我觉得最大的可能是这个(不可能占满 16G 的,你的 Mac 系统自身就占了不少)
( 2 ) arm 适配不足,可能适配了,但没完全适配,导致某些情况会报错
总结:
1. 用 arm 的 mac 做这个事情确实不太合适(兼容性、性价比)
2. 性价比最高的可能是搞个 Linux 机器,退而求其次 Windows+WSL2 的方案也不错,我就试过在 WSL2+Docker 的环境调用 CUDA ,效果不错