bash
$$
$ kubectl version
Client Version: v1.24.0
Server Version: v1.24.0
$$
容器运行时
bash
$$
$ docker version
Docker version 20.10.17
$$
KubeSphere版本信息
v3.3.0,在线安装,使用kk部署在已有K8s上
问题是什么
在K8s集群中运行PyTorch训练任务时,DataLoader开启多进程(num_workers > 0)后频繁报错:
text
$$
RuntimeError: DataLoader worker (pid 12345) is killed by signal: Bus error
$$
单进程(num_workers=0)时正常。
排查过程
首先怀疑是共享内存不足,检查Pod内/dev/shm大小只有64MB
PyTorch的DataLoader多进程需要通过共享内存传递数据,默认64MB不够用
解决方案
在Pod的Deployment中添加emptyDir挂载,增大共享内存:
yaml
$$
volumes:
- name: dshm
emptyDir:
medium: Memory
sizeLimit: 2Gi
volumeMounts:
- name: dshm
mountPath: /dev/shm
$$
重新部署后问题解决。
补充
顺便推荐一个不错的AI入门实战仓库,北邮老师开源的《人工智能入门实践》配套代码,地址是https://gitee.com/flycity/ai_tutorial_book,有B站视频,适合想入门PyTorch的同学。
最近看到一些技术岗位,前后端测试都有覆盖,感兴趣可以留意一下。