Docker容器内运行Python脚本GPU内存不足,是否使用系统剩余资源?
问题解答
核心疑问解答
容器内运行Python脚本不会绕过容器分配的资源去使用系统剩余资源。默认情况下,NVIDIA Docker容器能看到宿主机的GPU,但GPU资源的隔离需要额外配置;当前GPU内存被占满的原因是宿主机上的/usr/bin/python3进程(PID 2322)占用了39239MiB内存,并非容器内进程导致。
解决步骤
- 释放被占用的GPU内存
直接终止宿主机上的占用进程:
sudo kill -9 2322
执行后再次运行nvidia-smi,确认GPU内存已释放。
- 限制容器的GPU资源使用(可选)
为避免后续容器或宿主机进程过度占用GPU,启动TensorFlow容器时可以指定GPU内存限制:
- 方法一:使用Docker参数限制内存
docker run --gpus all --memory=30g nvidia/tensorflow:latest - 方法二:使用NVIDIA环境变量限制GPU内存配额
(注:docker run --gpus all -e NVIDIA_MEMORY_LIMIT=30720 nvidia/tensorflow:latest30720代表30GB,单位为MiB,可根据需求调整)
- 排查宿主机进程残留
检查宿主机是否有其他未正常退出的Python/CUDA进程,避免再次出现GPU内存被无故占用的情况:
ps aux | grep python | grep -v grep
对残留进程可按需终止。
内容的提问来源于stack exchange,提问作者Nikolay Dyankov
相关产品推荐
相关产品推荐

