正如标题所示,我在docker容器中运行jupyter,并在下面的scikit learn/numpy库中从python深处获取OSError:
pickler.file_handle.write(chunk.tostring('C'))
我已经做了一些故障排除,而人们似乎遇到的大多数问题是他们的硬盘或RAM实际上耗尽了空间,这对我来说完全不是这样。
这就是我的df的样子:
Filesystem 1K-blocks Used Available Use% Mounted on
udev 16419976 0 16419976 0% /dev
tmpfs 3288208 26320 3261888 1% /run
/dev/sdb7 125996884 72177548 47395992 61% /
tmpfs 16441036 238972 16202064 2% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 16441036 0 16441036 0% /sys/fs/cgroup
/dev/sdb2 98304 32651 65653 34% /boot/efi
tmpfs 3288208 68 3288140 1% /run/user/1000
//192.168.1.173/ppo-server3 16864389368 5382399064 11481990304 32% /mnt/ppo-server3
这就是我自由的样子:
total used free shared buff/cache available
Mem: 32882072 7808928 14265280 219224 10807864 24357276
Swap: 976892 684392 292500
我在看正确的测向和自由输出吗?它们都是从容器内的bash实例运行的。
正如@PeerEZ在comentt中提到的,当sklearn试图并行化jobs时就会发生这种情况。
sklearn尝试通过写入/dev/shm来在进程之间进行通信,docker容器上的/dev/shm限制为64mb。
您可以尝试使用@PeerEZ建议的n_jobs=1运行(如果无法重新启动容器),或者如果需要并行化,则尝试使用
--shm-size
选项运行容器以设置/dev/shm的更大大小。例如-Docker会在周围留下悬挂的图像,这些图像会占用您的空间。要在docker之后清理,请运行以下命令:
或者在旧版本的docker中:
这将删除退出和悬挂的图像,这有望清除设备空间。
Meta:把这个答案放在这里是因为它是这个失败的顶部堆栈溢出结果,这是一个可能的解决方法。
相关问题 更多 >
编程相关推荐