使用docker切换任意版本cuda使用GPU
1.现存问题
在主机上运行很多下载来的机器学习代码时,这些大都运行在不同版本的tensorflow-gpu或者pytorch等的包下的。但是,运行代码的过程中,存在匹配的问题:
1.不同的版本的tensorflow-gpu或pytorch对cuda版本的适配也不一样。
2.不同的版本的tensorflow-gpu或pytorch对python版本的适配也不一样。
3.cuda对主机操作系统的版本也有限定。
2.需求
1.以window11操作系统为载体(其他操作系统,供参考),要能在当前主机下运行不同版本的tensorflow(pytorch)或者cuda下的代码。
2.运行时,不重复安装cuda,不重复设置环境变量。
3.解决方案
win11下,使用docker(wsl2)运行不同的容器。
4.具体步骤
1.安装好docker后,需要做一些必要的适配——安装docker-ctk,具体可以请按照Nvidia的官方教程按步骤执行即可:Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.14.3 documentation
2.在制作镜像时,可以选择一步到位,直接pull Nvidia的官方镜像,或者pull其他满足要求且制备好的镜像。也可以自己pull一个纯净的操作系统,然后自行配置安装需要的cuda等。
3.准备好镜像后,执行类似的代码即可运行一个匹配了特定版本cuda的容器:
docker run -it -p 10022:22 --runtime=nvidia --gpus all 镜像名:版本号 /bin/bash
其中映射容器的22端口,供主机通过ssh访问(可能需要自行在容器里配置一些ssh),
指定了 runtime 为 nvidia,并把所有的gpu分配给容器。你也可以再添加其他参数,比如容器名,以特权执行等
4.结果
成功。
5.拓展
1.迁移docker,释放C盘空间
如果是windows里安装docker-desktop,那么它默认的位置会在C盘,然后每次下载镜像等等,都会很吃C盘的空间,所以这里提供我所写的迁移docke的技术方案:
WSL2模式下,将Ubuntu、Docker迁移出C盘并解除Ubuntu、Docker对C盘的空间占用-CSDN博客
2.压缩docker在主机的虚拟磁盘容量
我们在windows里使用docker时会发现,即使我们已经删除了无用的镜像和容器,主机里挂在docker虚拟磁盘的那个盘,可用空间也没有增加,这是因为虚拟磁盘不会自动缩小,这里就需要我们亲自操作一下,所以这里提供我所写的压缩docker在主机的虚拟磁盘容量的技术方案:
压缩docker在主机的虚拟磁盘容量-CSDN博客