GPU算力服务器裸机的容器共享化架构的用户视角

0.1 摘要

本文对我校A100服务器进行配置,利用 Docker容器 实现多用户的共享使用,同时实现远程运维、硬件资源监控等高权限管理操作。

文中部分敏感信息不予公布,本文仅用作技术日志,不作为服务器维护参考。

0.2 更新日志

  • 2024.10.28 考察当前对高性能算力服务器单机/集群的多人共享方案
  • 2024.10.29 抛弃开源管理平台,转入手撕Docker。
  • 2024.10.30 搭建基本完成,准备投入灰度上线。
  • 2024.10.31 简化用户使用流程,完善用户视角文档。
  • 2024.12.06 更新Jupyter Lab

0.3 背景依托

博0阶段横向

0.4 服务器配置

  • 浪潮NF5280M6
  • 2*Intel Xeon Platinum 8352V(32C,2.1GHz)
  • 4*32G DDR4
  • 2*960GB SSD(SATA) 后续会扩展SSD
  • 出厂Raid1已关闭
  • 2千兆电口+2千兆光口
  • 2*1300W 380V电源供给
  • A100 80G

0.5 资源申请与技术支持

请电联15065889121 崔锴华(临潼校区15-101)

目录

1 终端基本连接配置

1.1 SSH连接(返单验收步骤)

本文推荐使用MobaXterm 软件安装过程略。 请填写返单中的IP地址、SSH外漏端口,检查无误后点击OK建立连接。 首次连接需要验证秘钥,单击Accept即可。 在终端对话框中,login as输入返单中的用户名并回车,一般情况下为root

然后输入返单中的管理密码,默认密码为xustckh

注意:密码的输入过程并不显示,输入完毕后直接回车即可。 请输入命令

nvidia-smi

若有以下输出,则为环境配置正常,通过验收。 若出现以下输出,请联系技术支持并提供返单中的容器名,我方协助修复。

Failed to initialize NVML: Unknown Error

请注意,以上异常我方称之为掉驱动,经过实际测试发现,这属于官方docker基础镜像配置的Bug,但扔不排除用户在使用中由于错误的程序释放、爆显存等情况导致的容器自保护措施。

此章节完成了对下发资源的验收、终端的连接,请保留此连接,后续步骤将经常使用。

1.2 MobaXterm的使用技巧

  • 复制:选中文本后自动复制,不能使用Ctrl+C
  • 粘贴:右键点选Paste,可在设置中手动设置粘贴快捷键。

1.3 科研常用命令

1.3.1 修改密码

passwd root

1.3.2 安装所需库

基础环境中已经包含CUDA、Pytorch、Matplotlib等常用深度学习库,不建议对自带库进行升级,此处仅针对基础环境中不包含的库

 pip install XXX

已经配置好清华源。

1.3.3 数据集与冗余文件

请将代码、数据集等较大文件放到返单中的数据盘挂载点目录下,若将数据文件存放在容器的其它位置,出现数据丢失、空间告警等情况暂不提供技术支持,届时请及时备份文件到本地,并重新提起资源申请流程。

2 Jupyter服务器

2.12.2小节均为启动方法,请先按照[2.3](#23-安装中文语言包和代码补全}小节配置中文语言包和代码补全功能。

2.1 Jupyter Lab(推荐)

请在终端中输入

jupyter lab --notebook-dir=/workdata

按照提示 按照输出提示,请记录Token值 然后在浏览器中访问

http://返单IP:Jupyter宿主机端口

例如本文演示服务器的返单IP为59.74.191.171,Jupyter宿主机端口为8988,则访问地址为

http://59.74.191.171:8988

注意,若使用Vscode中的终端,可以直接使用vscode转发的端口地址

出现如下界面 有两种访问方式:

  1. 输入上文记录的Token。
  2. 推荐使用: 使用上文记录的Token设置密码,后续在上图密码框中输入设定的密码即可登录。

2.2 Jupyter Notebook

jupyter notebook --notebook-dir=/workdata

按照提示 按照输出提示,请记录Token值 然后在浏览器中访问

http://返单IP:Jupyter宿主机端口

例如本文演示服务器的返单IP为59.74.191.171,Jupyter宿主机端口为8988,则访问地址为

http://59.74.191.171:8988

注意,若使用Vscode中的终端,可以直接使用vscode转发的端口地址

出现如下界面 有两种访问方式:

  1. 输入上文记录的Token。
  2. 推荐使用: 使用上文记录的Token设置密码,后续在上图密码框中输入设定的密码即可登录。

2.3 安装中文语言包和代码补全

请在终端中输入以下命令

pip3 install jupyterlab-language-pack-zh-CN -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install jupyterlab-lsp -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install -U jedi-language-server -i https://pypi.tuna.tsinghua.edu.cn/simple

重新运行Jupyter后,在设置中手动切换语言

对Jupyter的具体使用不属于本文范围,但提供技术支持。

3 VS Code

首先请安装以下扩展 然后打开侧边栏中的远程资源管理器 添加一个SSH链接,并输入SSH连接命令 SSH连接命令格式为root@返单IP,例如本文示例为root@59.74.191.171,并回车。 此处选择默认的第一项即可。

右下角弹出提示,单击“打开配置” 默认配置为

Host 59.74.191.171
  HostName 59.74.191.171
  User root

请增加配置项Port,内容为返单端口,例如本文示例为

Host 59.74.191.171
  HostName 59.74.191.171
  User root
  Port 1234

其中的Host配置项为自定义命名,可以按需修改,此处修改为CKH-Server-Test Ctrl+S保存,并刷新。 刷新后列表中出现新添加的主机,单击箭头建立连接 Platform选择Linux 然后输入密码 连接成功后点击“打开文件夹”,选择远程目录。 确定后会提示再次输入密码,然后弹出以下提示,勾选后信任。 链接成功后可以在SSH远程安装Python、Jupyter插件等

  • 技巧
    • Python解释器的选择无差别,两者均有完整的环境,若需要自己安装新库,请选择安装库的解释器。
    • 下方的终端可以代替前文的MobaXterm

对VS Code的后续使用不属于本文范围,但提供技术支持。

4 Pycharm

请使用专业版,我校西科电邮可以用于申请学生专业版授权,具体申请方法可参考计算机学院创新创业中心实验室2022-09任务

4.1 连接

点击工具->部署->配置 增加SFTP连接

服务器名称随意

按下图填写完成后点击测试连接 若出现以下提示,则表明配置正确,否则请重点检查端口、密码

确定后选择刚刚新建的SSH配置,然后指定根路径为/

4.2 添加解释器

选择现有SSH连接并选择对应服务器。

对Pycharm的后续使用不属于本文范围,但提供技术支持。

5 提供的预置镜像

5.1 说明

提供的预置镜像以NGC镜像为底座,增加SSH、Jupyter、深度学习常用库,能够满足常见CV、LLM的训练需求。

  • 容器映射

    默认情况下需要映射容器内的端口有

    服务 容器内端口
    SSH 22
    Jupyter 8888

映射后宿主机端口在返单中标注,如需映射其它端口请在申请中单独说明。

5.2 当前可提供的环境配置

提供以下基础镜像作为底座

REPOSITORY TAG IMAGE ID CREATED SIZE
nvidia/cuda 12.6.2-cudnn-devel-ubuntu24.04 7cb2db509a78 2 weeks 8.21GB
nvcr.io/nvidia/pytorch 24.10-py3 295f8a46d16e 4 weeks 21GB
nvcr.io/nvidia/tensorflow 24.10-tf2-py3 2a8ae2ab109c 4 weeks 16.1GB
nvcr.io/nvidia/pytorch 24.09-py3 112a05617efe 8 weeks 21GB
nvcr.io/nvidia/tensorflow 24.09-tf2-py3 3e7732fa6910 8 weeks 16.1GB
nvcr.io/nvidia/pytorch 24.08-py3 c4c51e501ca9 2 months 20.4GB
nvcr.io/nvidia/pytorch 23.11-py3 64e55e092216 11 months 21.9GB

注意: 实际创建容器的镜像由本人重新编译,以满足5.1小节的说明,若需要NGC或Docker Hub-Nvidia中的其它镜像作为底座,可以单独提交申请,本人进行编译。


GPU算力服务器裸机的容器共享化架构的用户视角

http://blog.ckh-cn.site/index.php/2024/10/31/69.html

作者

CKH

发布时间

2024-10-31

许可协议

CC BY 4.0

OS: Windows NT 10_0_4_9 6.3 build 9600 (Windows Server 2012 R2 Datacenter Edition) AMD64
CPU Info: Name Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz
Memory Info: TotalPhysicalMemory 2146938880
评论