使用docker切换任意版本cuda使用GPU

1.现存问题

在主机上运行很多下载来的机器学习代码时,这些大都运行在不同版本的tensorflow-gpu或者pytorch等的包下的。但是,运行代码的过程中,存在匹配的问题:

1.不同的版本的tensorflow-gpu或pytorch对cuda版本的适配也不一样。

2.不同的版本的tensorflow-gpu或pytorch对python版本的适配也不一样。

3.cuda对主机操作系统的版本也有限定。

使用docker切换任意版本cuda使用GPU_第1张图片

使用docker切换任意版本cuda使用GPU_第2张图片

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等。

使用docker切换任意版本cuda使用GPU_第3张图片

3.准备好镜像后,执行类似的代码即可运行一个匹配了特定版本cuda的容器:

docker run -it -p  10022:22 --runtime=nvidia --gpus all  镜像名:版本号 /bin/bash

其中映射容器的22端口,供主机通过ssh访问(可能需要自行在容器里配置一些ssh), 

指定了 runtime 为 nvidia,并把所有的gpu分配给容器。你也可以再添加其他参数,比如容器名,以特权执行等

4.结果

成功。

使用docker切换任意版本cuda使用GPU_第4张图片

使用docker切换任意版本cuda使用GPU_第5张图片

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博客

你可能感兴趣的:(付费服务,docker,容器,运维)