【基于docker的深度学习训练环境】关键步骤记录

最近给公司搭建了一个小型的深度学习环境,实现了多人通过SSH对GPU资源的利用,下面对一些关键架构和易用性部分进行记录。

一、整体软硬件框架

1、硬件配置,采用的双GPU的方案,两块消费级显卡。

2、应用层架构

宿主机系统为ubuntu22 采用ssh+docker+路径映射的形式,docker的容器主要提供训练相关环境,实际的代码保存在训练服务器的硬盘上,通过服务器本身的网络与Gitlab同步,数据部分也挂载到训练服务硬盘上。数据和代码路径一同映射到容器中。

数据服务器是只读的,做存档之用,需要copy到训练服务器上,进行处理和训练加载。

二、GPU框架

这里套用Nvidia的图

在宿主机中安装gpu的driver,nvidia-container-toolkit。在容器中安装cuda-toolkit。

三、docker的几个易用性

1、初始环境获取。

我使用的是阿里云提供的初始镜像。https://cr.console.aliyun.com/cn-hangzhou/instances/artifact 按需选择即可,我这里选用了ubuntu22+py310+pytorch23+cu12的镜像

2、镜像的保存与导入。

cpp 复制代码
#1、导出
docker export container_id > /path/to/save/container.tar
#2、导入
docker import - newImage <  /path/to/save/container.tar

3、完成初始环境后有几个易用性可进行配置

1)、ssh开机启动

2)、宿主机与容器之间的路径映射

3)、ssh的端口映射

4)、容器中的时间配置成和宿主机一样(非实时同步)

其中1)需要在容器内配置完再保存成镜像后,重新载入。

2)和3)需要在创建容器时执行。

4)可以在容器运行时执行。

2)3)4)相关指令如下:

cpp 复制代码
docker run -p 2024:22 -it --gpus all -v /home/user/workspace:/home/workspace imageName /bin/bash
# 将ssh的端口映射到2024
# 在该容器中使用全部的gpu资源
# 将宿主机user的workspace映射到容器中的workspace
cpp 复制代码
docker cp /usr/share/zoneinfo/Asia/Shanghai ContainerID:/usr/share/zoneinfo/Asia/Shanghai
docker cp /etc/localtime ContainerID:/etc/localtime
# 将宿主机的时区信息copy到容器中
# 将宿主机的当前时间信息copy到容器中

三、总结

硬件虚拟化的基本步骤是一样的,一层是基本硬件驱动,一层是虚拟化管理。

对于深度学习环境而言,有两大部分需要完成上述管理,简单划分为CPU和GPU,其中CPU又包含了内存和硬盘等。

两者都有其对应的工具,简单画图示意下:

相关推荐
XR风云13 分钟前
docker buildx 忽略容器镜像服务的证书校验的方法
运维·docker·容器
断眉的派大星15 分钟前
CLIP原理详解:图像与文本的跨模态学习
人工智能·深度学习·机器学习
LaughingZhu33 分钟前
Product Hunt 每日热榜 | 2026-08-05
人工智能·深度学习·神经网络·搜索引擎·百度
芸翳&Camellia1 小时前
2026年电赛H题钢珠识别——基于深度学习的视觉目标检测与实时速度估计系统技术分析
嵌入式硬件·深度学习·目标检测·电赛
_codemonster1 小时前
手语识别及翻译项目实战系列--认识CSL2018数据集
人工智能·深度学习
triplemeng1 小时前
AI正在改变“真实”的含义:从《黑客帝国》、鲍德里亚到生成式人工智能
人工智能·深度学习·神经网络·生成式·黑客帝国·鲍德里亚·后真相
bittersuite2 小时前
文本预处理,语言模型
人工智能·深度学习·机器学习
AI人工智能+2 小时前
一种高效、精准的不动产权证书智能识别技术,打通了物理世界与数字世界的信息壁垒
深度学习·计算机视觉·自然语言处理·ocr·不动产权证书识别
萌动的小火苗2 小时前
深度神经网络中,梯度消失和梯度爆炸的根本原因是什么?有哪些解决方法?【文末含面试万能总结】
人工智能·python·深度学习·神经网络·dnn
less_121383 小时前
HarmonyOS WPS Open SDK:OpenFileRequest 只读与可编辑模式控制
深度学习·harmonyos·wps