01-正文
本章节下载: 01-正文 (7.96 MB)
本文档主要介绍H3C百业灵犀大模型(以下简称LinSeer)的安装、部署、卸载等功能。
· 本文档中的设备显示信息和Web页面截图均为举例,请以实际环境为准。
· 为方便您的使用,本文提供了部分组件安装包的下载网址。部分网址可能会变更,如网址失效,请尝试到对应组件官网搜索下载,如无法解决,请联系技术支持。
· H3Linux 2.0.2:H3C自研的Linux2.0.2版本操作系统。
· Matrix:基于Kubernetes,实现了对Docker容器的编排调度。主要用于Kubernetes集群的搭建,微服务的部署,以及系统、Docker容器、微服务等的运维监控。
· Kubernetes:简称K8s,是一个开源的容器编排引擎,用于对容器化应用进行自动化部署、扩缩和管理。
· Docker:是一个开源的容器编排引擎,用于对容器化应用进行自动化部署、扩缩和管理。
· GPU:图形处理器(Graphics Processing Unit),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备上进行图像和图形相关运算工作的微处理器。
· GUI:图形用户界面(Graphical User Interface),是指采用图形方式显示的计算机操作用户界面。
· CPU服务器:CPU服务器是指以中央处理器(CPU)为核心的计算服务器,主要用于串行计算和处理单个线程的计算任务。
· GPU服务器:GPU服务器是指配备了图形处理器(GPU)的计算服务器。GPU服务器专注于高度并行的计算任务,如图形渲染、机器学习、深度学习和科学计算等。GPU服务器价格较为昂贵,适用于对高性能计算要求较高的场景,如大规模数据分析、深度学习训练等。
· Master节点:集群主节点。一个集群必须包含3个Master节点(单机模式下仅需一个Master节点),集群将从3个Master节点中自动选举出一台作为主用Master节点,其它Master节点为备用Master节点。当集群的主用Master节点故障时,将在备用Master节点中重新选出新的主用Master节点,接管原主用Master节点的业务,避免业务中断。主用Master 和备用Master的作用如下:
¡ 主用Master节点:负责管理和监控集群中的所有节点,北向业务虚IP会下发至主用Master节点上,所有Master节点共同承担业务的运行。
¡ 备用Master节点:仅承担业务的运行,不负责管理和监控其它节点。
· Pod:Kubernetes最小的调度和管理单位。Pod是一组运行在同一节点上的容器集合,它们共享相同的网络命名空间、存储资源和其他资源。
· Worker节点:集群业务节点。Worker节点仅承担业务的运行,不参与主用Master节点的选举。Worker节点为可选节点,当Master上的业务已经达到资源和性能瓶颈,如CPU和内存使用率居高不下,业务响应慢,节点上Pod个数达到或接近300个限制等,可通过增加Worker节点提升集群的性能和业务处理能力。
· RDMA:远程直接内存访问(Remote Direct Memory Access)的缩写。它是一种计算机网络技术,允许网络设备直接访问其他设备的内存,而不需要中央处理单元(CPU)的参与。通过使用RDMA技术,数据可以直接从一个设备的内存复制到另一个设备的内存,避免了在传输过程中CPU的额外负载和延迟。
· RoCE:收敛以太网上的RDMA(RDMA over Converged Ethernet),即允许在以太网基础设施上实现RDMA通信。该网络技术允许计算机在不涉及操作系统的情况下,直接在网络上的另一台计算机的内存中读写数据,从而极大地提高了数据传输的效率,并减少了CPU的使用率。RoCE能够结合以太网的普及性和RDMA的高性能,为高速数据传输和低延迟通信的应用提供了一个有效的解决方案。
· YUM源:Linux操作系统中的软件包管理器YUM(Yellowdog Updater, Modified)所使用的软件仓库。YUM源是包含一系列软件包的在线仓库,提供各种软件和工具的安装包。通过配置YUM源,用户可以方便地使用YUM命令来管理软件包,从在线仓库中下载并安装需要的软件包。
· nvidia-container-runtime(NVIDIA运行时工具):在容器化环境中提供GPU加速和管理功能的运行时工具,它的主要作用是提供对NVIDIA GPU的容器级别的访问和管理。
· nvidia-device-plugin(NVIDIA设备插件):Kubernetes容器编排系统的一个插件,用于在Kubernetes集群中管理和调度NVIDIA GPU设备。
· cuDNN(CUDA Deep Neural Network library,NVIDIA开发的深度神经网络库):一种针对GPU加速的深度学习的软件库,提供高性能、低延迟的深度神经网络操作。
· NCCL(NVIDIA Collective Communication Library):NVIDIA Collective Communication Library是由NVIDIA开发的高性能多GPU通信库。它为基于NVIDIA GPU的系统提供高效的并行通信操作,以加速分布式深度学习和通信密集型计算任务的执行。
· k8s-rdma-shared-dev-plugin:在Kubernetes集群上运行的RDMA共享设备插件。它允许多个容器共享RDMA设备,以提供高性能、低延迟的网络通信,适用于需要高性能网络传输的数据密集型应用场景。
· nv_peer_memory:是NVIDIA GPU驱动程序提供的一种特性,用于在多个GPU之间实现直接内存访问(Direct Memory Access,DMA)。它允许多个GPU之间直接访问彼此的内存,而无需通过主机内存进行数据传输,从而提高数据传输的性能和效率。
请确认安装部署环境,确保安装部署LinSeer的条件已经具备。
配置要求 |
检测标准 |
|
服务器 |
硬件检查 |
· 检查硬件是否符合要求(包括CPU、GPU、内存、硬盘、网卡等),请联系技术支持了解硬件配置要求 · 建议使用如下H3C自研服务器: ¡ R5350 G6 ¡ R5500 G6 ¡ R5500 G5 ¡ R5200 G3 ¡ R5300 G5 · 请确认已配置RAID。RAID模式可选 RAID1、RAID5或RAID10,磁盘分区大小均为配置RAID后的磁盘大小 |
软件检查 |
请检查如下几点: · 待安装的操作系统版本是否正确。本文均以H3Linux 2.0.2 SP01为例介绍安装部署步骤 · 请检查系统时间已配置完成。 |
|
客户端 |
用户不需要安装客户端软件,使用浏览器即可访问LinSeer。推荐使用的浏览器为Google Chrome 70、Firefox 78及以上版本,最低分辨率显示宽度为1600 |
· 推荐将服务器的下一次启动模式配置为UEFI模式。
· 安装操作系统时,请勿同时使用KVM给多个服务器安装同一镜像。
· H5 KVM性能不稳定,可能出现加载镜像停止或缓慢等问题,建议使用Java KVM挂载镜像安装操作系统,即H3Linux2.0.2操作系统。
· 安装过程中禁止输入Scroll Lock键,否则可能会导致安装失败。
· 安装过程中异常断电会导致部分服务安装失败,请重新安装以保证功能完整性。
· Matrix安装部署过程中,请勿进行开启或关闭防火墙的操作。
· 集群部署完成后,请勿修改系统时间,否则可能导致集群异常。
LinSeer支持三种部署模式:
· 单机部署模式:使用GPU服务器部署1个Master节点,即可部署Matrix集群,业务规模较小且可靠性要求不高时可以采用本模式。
图2-1 单机部署模式示意图
· 3机集群部署模式:使用GPU服务器部署3个Master节点,再部署Matrix集群,可实现负载均衡和高可用性;适用中小型业务场景。
图2-2 3机集群部署模式示意图
· 3+N机集群部署模式:需要部署3个Master节点和N个Worker节点(N≥1)。请使用GPU服务器部署Worker节点,建议选用CPU服务器部署Master节点的服务器。该模式下,支持按需增加Worker节点以实现扩容。
¡ 该部署模式可将不同用途的业务模块调度到合适的服务器节点上执行,即Worker节点可以分摊Master节点的压力。Master节点主要负责任务调度并处理指令复杂的任务(如集群资源的管理和调度),Worker节点负责处理高度并行的计算子任务(如AI大模型的推理、训练和评估)。
¡ 该部署模式可支持CPU和GPU服务器混合部署,实现更高的性能和可扩展性,适用大规模业务场景。
图2-3 3+N机集群部署模式示意图
单机部署模式、3机集群部署模式和3+N机集群部署模式差异如表2-2所示:
部署模式 |
节点个数 |
推荐组网 |
推荐场景 |
单机部署模式 |
1个Master节点(1台GPU服务器) |
业务规模较小且可靠性要求不高时可以采用本模式 |
|
3机集群部署模式 |
3个Master节点(3台GPU服务器) |
对负载均衡和高可靠性有一定要求的部署场景 |
|
3+N机集群部署模式 |
3个Master节点(3台CPU服务器)和N个Worker节点(N台GPU服务器,N≥1) |
可实现负载均衡和高可靠性,支持按需增加或减少Worker节点以实现灵活部署,适用各种规模业务场景 |
百业灵犀大模型支持分布式训练组网和集中式训练组网。分布式训练组网适用于处理大规模数据集和复杂的模型训练任务,集中式训练组网适用于处理规模较小的数据集和较为简单的模型训练任务。
分布式训练组网允许将模型和数据存储在多个计算节点上,通过多台计算设备的协同工作,提供了高度扩展性、大规模任务处理能力和并行计算能力。
同时满足以下两个条件时,建议采用分布式训练组网。
· 部署模式为3机集群部署模式或3+N机集群部署模式,部署模式相关内容请参见“2.2 部署模式规划”。
· 服务器GPU为模组形态,确认方式如下:
在服务器上执行lspci | grep -i nvidia命令查询服务器上的GPU形态。
¡ 如果显示信息包含“Bridge”信息,表示GPU通过nvlink桥互连,即GPU为模组形态。
¡ 如果显示信息不包含“Bridge”信息,表示GPU通过PCIe桥互连,即GPU为PCIe板卡形态。
[root@localhost ~]# lspci | grep -i nvidia
1c:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
1d:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
1e:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
1f:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
20:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
21:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
25:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
2b:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
63:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
68:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
9f:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
a4:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
e2:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
e8:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
组建分布式训练网络,请确保网络中服务器型号及网卡型号均相同,建议优先使用R5500 G5或R5500 G6服务器。
分布式训练组网建议把不同GPU服务器上相同编号的RDMA网卡加入同一个网络,这样可以提供高速度、低延迟的通信通道,以实现快速数据传输和协同计算。
例如,采用3机集群部署模式时,分布式训练组网示意图如图2-4所示。组网中部署3台GPU服务器用于执行计算服务,每台GPU服务器均配备有8张RDMA网卡,这3台GPU服务器通过相同编号的RDMA网卡加入同一个网络,以实现高效的节点间通信。同时,还部署了3台存储服务器,负责提供数据存储和访问服务。这些计算单元和存储单元均通过接入交换机相连,实现高速通信和协同计算。此外,所有服务器通过各自的网管口接入管理网络,允许管理员对整个网络进行监控、管理和维护。
表2-3 IP地址规划示例
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Access Switch |
Vlan-int1001 |
10.10.1.1/24 |
Computing Server C |
ens11f1np1 |
10.10.1.4/24 |
|
Vlan-int1002 |
10.10.2.1/24 |
|
ens12f1np1 |
10.10.2.4/24 |
|
Vlan-int1003 |
10.10.3.1/24 |
|
ens13f1np1 |
10.10.3.4/24 |
|
Vlan-int1004 |
10.10.4.1/24 |
|
ens14f1np1 |
10.10.4.4/24 |
|
Vlan-int1005 |
10.10.5.1/24 |
|
ens15f1np1 |
10.10.5.4/24 |
|
Vlan-int1006 |
10.10.6.1/24 |
|
ens16f1np1 |
10.10.6.4/24 |
|
Vlan-int1007 |
10.10.7.1/24 |
|
ens17f1np1 |
10.10.7.4/24 |
|
Vlan-int1008 |
10.10.8.1/24 |
|
ens18f1np1 |
10.10.8.4/24 |
|
Vlan-int1009 |
10.10.9.1/24 |
|
ens21f1np1(网管口) |
192.168.0.4 |
|
Vlan-int1010 |
10.10.10.1/24 |
Storage Server A |
ens11f1np1 |
10.10.9.2/24 |
|
MGE1/0/0/0(网管口) |
192.168.0.1 |
|
ens12f1np1 |
10.10.10.2/24 |
Computing Server A |
ens11f1np1 |
10.10.1.2/24 |
|
eno1(网管口) |
192.168.0.5 |
|
ens12f1np1 |
10.10.2.2/24 |
Storage Server B |
ens11f1np1 |
10.10.9.3/24 |
|
ens13f1np1 |
10.10.3.2/24 |
|
ens12f1np1 |
10.10.10.3/24 |
|
ens14f1np1 |
10.10.4.2/24 |
|
eno2(网管口) |
192.168.0.6 |
|
ens15f1np1 |
10.10.5.2/24 |
Storage Server C |
ens11f1np1 |
10.10.9.4/24 |
|
ens16f1np1 |
10.10.6.2/24 |
|
ens12f1np1 |
10.10.10.4/24 |
|
ens17f1np1 |
10.10.7.2/24 |
|
eno3(网管口) |
192.168.0.7 |
|
ens18f1np1 |
10.10.8.2/24 |
Management Switch |
Vlan-int1011 |
192.168.0.10 |
|
ens21f1np1(网管口) |
192.168.0.2 |
|
|
|
Computing Server B |
ens11f1np1 |
10.10.1.3/24 |
|
|
|
|
ens12f1np1 |
10.10.2.3/24 |
|
|
|
|
ens13f1np1 |
10.10.3.3/24 |
|
|
|
|
ens14f1np1 |
10.10.4.3/24 |
|
|
|
|
ens15f1np1 |
10.10.5.3/24 |
|
|
|
|
ens16f1np1 |
10.10.6.3/24 |
|
|
|
|
ens17f1np1 |
10.10.7.3/24 |
|
|
|
|
ens18f1np1 |
10.10.8.3/24 |
|
|
|
|
ens21f1np1(网管口) |
192.168.0.3 |
|
|
|
图2-4中分布式训练组网的基本配置思路如下:
· GPU服务器基本配置:
¡ 部署3台GPU服务器作为计算节点。
¡ 每台GPU服务器装配8张支持RDMA的网络接口卡。
¡ 每个RDMA网卡应配置独立的IP地址,确保RDMA通信高效安全。
¡ 所有GPU服务器上相同编号的RDMA网卡应加入同一个VLAN,实现高速通信和协同计算。
¡ 通过接入交换机与存储服务器连接。
· 存储服务器基本配置:
¡ 部署3台存储服务器作为存储节点。
¡ 通过接入交换机与GPU服务器连接。
¡ 配置存储服务器网卡的IP地址和VLAN,使其与GPU服务器处于不同的VLAN网络中,可以提高系统的安全性和可靠性。
· 接入交换机基本配置:
¡ 选用具备高速数据端口的三层交换机。
¡ 根据网络规划创建相应的VLAN,例如,创建用于承载GPU服务器计算流量的VLAN 1001、用于处理存储服务器数据流量的VLAN 1009。
¡ 确保交换机的端口链路类型为Trunk,允许跨VLAN通信。
¡ 配置交换机支持ROCE技术。
· 管理交换机配置:
¡ 设置一个单独的管理VLAN,用于连接所有服务器的网管口。
¡ 为管理VLAN分配一个独立的IP地址段,并在交换机上配置管理VLAN的接口,为网络管理提供专用的通信路径。
集中式训练组网是指将所有的数据和计算资源都集中在单个计算节点上进行处理,可以更好地利用单个计算节点的计算资源,简化管理和维护工作。
集中式训练组网中,一台服务器负责加载并训练模型,通过连接到网络的计算设备(如GPU)进行计算,数据传输则是在服务器内部进行。
在集中式训练组网模式中,整个训练过程主要在一台服务器上进行,该服务器充当了数据处理和模型训练的中心节点。与分布式训练不同,集中式训练不需要多台服务器之间进行复杂的网络通信和数据同步,从而避免了涉及RDMA网卡等高速网络组件的配置。
在这种设置中,中心服务器通常会配备高性能的计算资源,如多个GPU卡,以提供必要的计算能力来处理训练任务。服务器通过内部高速总线(如PCI Express)连接这些计算设备,确保数据传输速度和效率。
同时,中心服务器还会连接到存储设备或存储服务器,该存储资源用于存放训练数据集、模型参数、日志和其他相关文件。在训练过程中,服务器会从存储设备加载数据,进行处理和计算,并将结果保存回存储设备。
为了便于网络管理和监控,中心服务器也会通过一个管理网络接口与网络中的其他设备相连,允许网络管理员进行系统监控、配置更新、性能分析和故障排除。这个管理网络接口通常是一个标准的以太网连接,不需要特别的网络配置。
集中式训练组网模式适用于规模较小或计算需求不是特别高的训练任务,它简化了网络架构和配置,降低了维护复杂度,但由于所有计算任务都集中在单一节点上,其扩展性和容错性相对分布式训练会有所限制
图2-5 集中式训练组网示意图
安装部署LinSeer的IP地址规划要求如表2-4所示
表2-4 IP地址规划表
IP地址规划 |
用途 |
备注 |
Master节点1IP地址 |
为安装了操作系统的Master节点分配的IP地址 |
必选 加入同一集群的所有Master节点的IP地址必须处于同一网段 单机部署模式只需要一个Master节点 |
Master节点2IP地址 |
为安装了操作系统的Master节点分配的IP地址 |
|
Master节点3IP地址 |
为安装了操作系统的Master节点分配的IP地址 |
|
北向业务虚IP地址 |
通过Matrix页面部署的应用的统一外部访问地址 |
必选 北向业务虚IP必须在Master节点所处的网段内 |
Worker节点IP地址 |
为Worker节点分配的IP地址 |
可选 Worker节点的IP地址必须与加入同一集群的Master节点的IP地址处于同一网段 |
LinSeer仅支持安装H3C自研的H3Linux操作系统,需要准备的安装包如表2-5所示。其中version为版本号,platform为CPU架构类型。
请按照以下顺序执行安装包:H3Linux操作系统安装包->Matrix安装包->Base安装包->推理组件安装包->训练组件安装包->License server服务安装包。
安装包名称 |
功能说明 |
说明 |
common_Linux-version_platform.iso |
H3C自研的H3Linux操作系统的安装包 |
必选 |
UDTP_Matrix_version_platform.zip |
Matrix集群安装包 |
必选 |
LinSeer_Base_version_platform.zip |
基础安装包,包括大屏显示、监控、角色管理、License Client服务、系统配置等功能 |
必选 |
LinSeer_Inference_version_platform.zip |
推理组件安装包,提供模型仓库、模型推理、知识库挂载等功能 |
必选 |
LinSeer_Training_version_platform.zip |
训练组件安装包,提供数据管理,模型训练,模型评估等功能 |
可选 |
LinSeer_Model_version_platform.zip |
LinSeer_Model安装包 |
可选 |
LinSeer_Model_Lite_version_platform.zip |
LinSeer_Model_Lite安装包 |
可选 |
LinSeer_Dataset_version_platform.zip |
LinSeer Dataset数据集 |
可选 |
LICENSE_SERVER-version.zip |
License server服务安装包 |
必选 |
部署LinSeer,需要包含以下几个主要部署步骤:
· 安装操作系统:为安装和配置其他软件和程序提供基础环境。
· 部署Matrix集群:提供一个大规模计算资源的集群环境,以满足高性能高可靠计算和大规模数据处理的需求。
· 安装GPU驱动及相关工具包:可以确保GPU资源被正确地识别和调用,从而支持AI模型的训练和推断等计算密集型任务,可充分发挥GPU的计算能力。
· 安装部署LinSeer:可实现对已部署模型的监控、调优、管理与升级,帮助管理者更好地监控和管理LinSeer的部署状态,确保其正常运行。
· 部署License Server:为确保LinSeer安装部署后可正常使用。LinSeer提供License client功能,License Server可为LinSeer管理授权。
LinSeer主要部署流程如图3-1所示。
图3-1 LinSeer主要部署流程
(1) 在本地PC机上安装JDK,推荐版本为8u181。
(2) 如图4-1所示,单击[开始]菜单选择“配置Java”,进入JAVA控制面板。
(3) 把HDM的URL加入“例外站点”列表。
a. 选择“安全”页签,单击<编辑站点列表>按钮进入“例外站点”列表。
b. 在“例外站点”列表对话框中单击<添加>按钮,。
c. 输入HDM的URL,单击<确定>按钮完成添加。
d. 单击JAVA控制面板上的<确定>按钮完成设置。
图4-2 更新例外站点列表
HDM(Hardware Device Management,设备管理系统)用于远程管理服务器。
登录HDM操作步骤如下:
(1) 将网线连接到服务器的HDM专用网口,确保本地PC与服务器之间网络可达。
(2) 在本地PC浏览器地址栏中输入“https://HDM专用网口IP地址”,按<Enter>键打开登录页面。输入用户名和密码,单击<登录>按钮登录服务器HDM Web页面。
图4-3 登录服务器HDM Web页面示意图
· HDM Web操作页面、默认HDM专用网口IP地址、默认用户名/密码等与服务器型号和HDM版本有关,详细信息请参见对应版本的服务器HDM用户指南。
· 对于本文示例版本,默认HDM专用网口IP地址为192.168.1.2/24,默认用户名/密码为admin/Password@_。
· 若已修改默认HDM专用网口IP地址、用户名/密码,请以修改后的HDM专用网口IP地址、用户名/密码登录。
本步骤用于使用Java集成远程控制台连接服务器。通过JViewer或KVM远程连接软件,您可以在远程进行配置管理服务器、安装操作系统等操作。
对于R5300 G5/R5500 G5/R5500 G6/R5350 G6服务器,连接远程控制台的操作步骤如下:
(1) 在HDM Web页面单击顶部[远程服务]菜单项,再单击左侧导航树中的[远程控制台]进入远程控制台页签。单击<启动KVM>按钮下载KVM软件,如图4-4所示。
(2) 如图4-5所示,在弹出的提示框中单击<保留>按钮,开始下载KVM软件。
(3) 将已下载的KVM.Jnlp文件拷贝至JDK的安装目录“C:\Program Files\Java\jdk1.8.0_181\bin”下。
(4) 按键盘<Shift>键,同时鼠标右键单击文件夹空白处,在下拉菜单中选择“在此处打开Powershell窗口”,如图4-6所示。
(5) 在命令窗口执行命令javaws KVM.jnlp并按回车键。
图4-7 执行命令
(6) 在安全警告窗口中点击<继续>按钮。
图4-8 安全警告窗口
(7) 成功连接远程控制台,可显示远程控制台窗口,如图4-9所示。
(8) 在远程控制台窗口单击[虚拟介质 -> 虚拟介质向导]菜单项,弹出虚拟介质对话框,如图4-10所示,单击<浏览>按钮。
(9) 选择本地的操作系统镜像文件(.iso格式),单击<打开>按钮。
(10) 如图4-11所示,在弹出的提示信息对话框内单击<确定>按钮,即可成功挂载镜像文件。
图4-12 确认提示信息
对于R5200 G3服务器,连接远程控制台的操作步骤如下:
(1) 如图4-13所示,在HDM Web页面选择[远程控制]菜单项,单击<Launch KVM(Java)>按钮下载Jviewer软件。
图4-13 下载远程连接软件
(2) 如图4-14所示,在弹出的提示框中单击<保留>按钮,开始下载Jviewer软件。
(3) 请参见“4.1.3 连接远程控制台”中的步骤(3)~(7)继续处理。
(4) 在安全警告窗口中点击<运行>按钮,如图4-15所示。
(5) 如图4-16所示,成功连接远程控制台,可显示远程控制台窗口,单击按钮打开远程控制台界面。
(6) 单击远程控制台界面上的[CD/DVD]页签,如图4-17所示。
(7) 如图4-18所示,选择本地的操作系统镜像文件(.iso格式)后,单击远程控制台界面的<Connect>按钮。
(8) 如图4-19所示,在弹出的提示框中单击<OK>按钮完成连接。
· 设置BIOS从CD/DVD启动需通过键盘操作。
· 不同型号服务器参数配置界面有所不同,本节仅以R5500 G5服务器为例。
· 参数配置界面可能会不定期更新,请以设备实际显示为准。
(1) 如图4-20所示,单击选择[电源 -> 立即重启]菜单项,重启服务器。
(2) 如图4-21所示,服务器重启后,按键盘<DEL>键或<ESC>键进入BIOS设置界面。
图4-21 进入BIOS设置界面
(3) 如图4-22所示,通过按键盘<←><→>键移动选择[Boot]菜单项,按<Enter>键设置BIOS。
(4) 设置Boot启动模式。
a. 通过按键盘<↑><↓>键移动选择“Boot mode select”配置项,按<Enter>键设置Boot启动模式,如图4-23所示。
图4-23 设置Boot启动模式(1)
b. 在弹出的“Boot mode select”对话框中,按<Enter>键选择“UEFI”。
图4-24 设置启动Boot 模式(2)
(5) 设置Boot启动项。
a. 通过按键盘<↑><↓>键移动选择“Boot Option #1”配置项,按<Enter>键设置Boot启动项,如图4-25所示。
图4-25 设置Boot启动项(1)
b. 如图4-26所示,在弹出的“Boot Option #1”对话框中,按<Enter>键选择“CD/DVD”。
图4-26 设置Boot启动项(2)
(6) 如图4-27所示,通过键盘<←><→>键选择[Exit]菜单项,按<Enter>键保存设置。
(7) 如图4-28所示,在弹窗的对话框中选择“YES”,保存设置并退出。
(8) 服务器自动启动后,如图4-29所示,选择“*Install H3Linux 2.0.2-SP01”,按<Enter>键后等待进入安装操作系统的界面。
本节以从未安装过任何操作系统的服务器为例,请使用LinSeer安装包中的H3Linux ISO文件安装操作系统。
(1) ISO镜像文件加载完成后,进入语言选择界面。
(2) 如图4-30所示,选择安装语言,此处以“中文/简体中文”为例,单击<继续(C)>按钮,进入安装信息摘要界面。
(3) 如图4-31所示,在安装信息摘要界面的本地化区域单击“日期和时间(T)”链接,进入日期和时间界面。
(4) 设置系统的日期和时间,如图4-32所示。
a. 选择地区为“亚洲”。
b. 选择城市为“上海”。
c. 单击<完成>按钮,返回安装信息摘要界面。
(5) 在图4-31所示安装信息摘要界面的本地化区域单击“键盘(K)”链接,进入键盘布局界面,如图4-33所示。
(6) 单击按钮,添加“汉语”键盘布局,如图4-34所示。
(7) 安装信息摘要界面的软件区域“软件选择”选择基本环境为“虚拟化主机”,如图4-35所示。
(8) 在安装信息摘要界面的系统区域,单击“安装目的地(D)”链接,进入安装目标位置界面。
a. 在本地标准磁盘区域选择目标磁盘。
b. 在存储配置区域选择分区为“自定义(C)”。
c. 单击<完成>按钮,进入手动分区界面。
(1) 手动进行磁盘分区
在“新挂载点将使用以下分区方案(N)”下拉列表中选择分区方案,支持选择“标准分区”和“LVM”,建议选择“LVM”。
¡ 使用“LVM”分区。
删除全部分区后,在“设备类型”下拉列表中选择“LVM”,并依次创建各分区。
¡ 使用“标准分区”。
需手动创建磁盘分区,如图4-37所示。磁盘分区的具体信息如表4-1所示,支持手动修改配置信息。
- 设备类型:选择“标准分区”,并单击图标,在弹出窗口中进行如下配置后,单击<添加挂载点>按钮。
- 挂载点:输入挂载点目录名称。
- 期望容量:输入磁盘容量并指定容量单位,例如“GiB”、“MiB”。
- 文件系统(Y):在下拉列表中选择推荐的文件系统。
- 设备:单击<修改(M)…>按钮,在弹出的配置挂载点窗口中,选择分区所挂载的磁盘后,单击<选择>按钮。
boot相关分区不能设置为LVM,否则分区将会配置失败。
若设备类型选择LVM,操作系统部署完成后,可通过lsblk | grep -v vg命令查看分区
结果。
分区名称 |
预设容量 |
适用模式 |
文件系统 |
备注 |
/ |
1 TB |
BIOS模式/UEFI模式 |
ext4 |
磁盘空间充足时,可适当增大 |
/var/lib/docker |
350 GiB |
BIOS模式/UEFI模式 |
ext4 |
磁盘空间充足时,可适当增大 |
/var/lib/ssdata |
200 GiB |
BIOS模式/UEFI模式 |
ext4 |
- |
/var/lib/etcd |
50 GiB |
BIOS模式/UEFI模式 |
ext4 |
- |
/boot |
1024 MiB |
BIOS模式/UEFI模式 |
ext4 |
- |
swap |
1024 MiB |
BIOS模式/UEFI模式 |
swap |
- |
/boot/efi |
200 MiB |
UEFI模式 |
EFI System Partition |
根据服务器的BIOS启动模型选择创建对应分区,Legacy:/biosboot UEFI:/boot/efi |
/biosboot |
1 MiB |
BIOS模式/UEFI模式 |
Biosboot |
- |
预留磁盘空间 |
3 TB |
BIOS模式/UEFI模式 |
ext4 |
单机环境需要创建该分区,本分区名称可以自定义,磁盘空间充足时,可适当增大 集群环境使用NFS存储,不需要划分该分区 |
各主要分区的作用如下:
¡ /:Matrix使用,包括K8s、Harbor和各组件上传的安装包,该分区的容量和各组件上传的镜像大小有关,需要确定各组件占用的磁盘容量大小,在此基础上扩缩容。
¡ /var/lib/docker/:与Docker的运行相关,需要根据实际运行情况确定容量大小。
¡ /var/lib/ssdata/:供PXC、Kafka、ZooKeeper使用。
¡ 预留磁盘空间:推荐预设容量为3TB。
- 单机部署模式下,服务器需要额外预留本地磁盘空间,本处以/linseerFileShare为例介绍。/linseerFileShare供推理、训练组件使用,作为数据管理、模型仓库、模型评估、模型训练和知识库挂载等业务数据的共享目录。
- 3机集群部署模式、3+N机集群部署模式下,使用外置的NFS存储空间作为服务器预留磁盘空间。
各部署模式下的预留磁盘空间分配详情,如表4-2所示。
组件 |
目录名 |
存储空间大小计算方式 |
默认大小 |
大屏显示 |
/$(sharePath)/widget |
无计算方式,暂不支持动态增加 |
10 GiB(遍历) |
/$(sharePath)/screen |
|||
数据管理 |
/$(sharePath)/training_dataset |
无计算方式,由用户根据数据集合理评估需要的存储空间 |
50 GiB |
模型仓库 |
/$(sharePath)/model_preset |
· LinSeer_Model文件:130 GiB · LinSeer_Model_Lite文件:30 GiB |
300 GiB |
模型训练/微调 |
/$(sharePath)/model-training |
模型文件数*模型所占存储空间大小 |
|
模型评估 |
/$(sharePath)/DATAPROCESS-RS |
无计算方式,由用户根据评估数据集合理评估需要的存储空间 |
300 GiB |
知识库文件存储 |
/$(sharePath)/KNOWLEDGE-RS |
无计算方式,由用户根据知识库文件大小合理评估存储空间 |
1 TB |
milvus向量库 |
/$(sharePath)/milvus |
知识库文件大小*81 |
1 TB |
(2) 如图4-38所示,在弹出的更改摘要窗口中,单击<接受更改>按钮,返回安装信息摘要界面。
(1) 选择管理员帐户设置。使用root用户作为管理员帐户,无需创建新用户。
a. 如图4-31所示,在安装信息摘要界面用户设置区域单击“Root账户”配置项设置root用户作为管理员帐户。
该功能用于选择安装Matrix并创建集群时使用的用户名,如需部署Matrix集群,需为集群中的所有节点选择相同的用户名。
b. 如图4-39所示,选择”启用root账户”并设置root用户密码,单击<完成>按钮,返回安装信息摘要界面。
图4-39 设置root用户密码
c. 在安装信息摘要界面可查看root用户已作为管理员帐户,该用户拥有所有功能的操作权限。
图4-40 使用root用户作为管理员帐户
(2) 在系统区域单击“网络和主机名(N)”链接,进入网络和主机名界面。
(3) 如图4-41所示,在主机名文本框中输入主机名后,单击<应用>按钮。
· 请勿使用默认主机名(localhost、localhost.localdomain、localhost4、localhost4.localdomain4、localhost6、localhost6.localdomain6)。主机名称最长63个字符,仅支持小写字母、数字、连字符和小数点,不能以0开头且全为数字,不能以0x、连字符、小数点开头,以连字符、小数点结尾。
· 建立Matrix集群时,必须保证集群内各个节点的主机名互不相同,且符合主机名的命名规则,否则将会导致集群建立失败。
· Matrix集群部署前,若需要修改节点的主机名,可在节点操作系统的命令行界面,通过hostnamectl set-hostname hostname命令进行修改,其中hostname为修改后的主机名。新主机名将在节点重启后生效。
· Matrix集群部署完成后,请不要再对操作系统的主机名进行修改。
(4) 在网络和主机名配置界面可配置网卡。单击<配置>按钮,在弹出的网络配置窗口中进行网卡配置。单击“常规”页签,勾选“自动以优先级连接(A)”项,“所有用户都可以连接这个网络(U)”项保持默认勾选,如图4-42所示。
(5) 配置Matrix节点的IPv4地址。
单击“IPv4设置”页签,在“方法(M)”下拉框中选择“手动”,在地址区域单击<添加(A)>按钮,配置服务器的IPv4地址(规划的Master节点IP),配置完成后,单击<保存>按钮保存配置,如图4-43所示。
· 配置IPv4地址时必须指定网关,否则在创建集群时可能出现问题。
· Matrix单独使用一个网口,不允许在此网口上配置子接口及子IP。
· Matrix节点其它网口的IP地址,不能和建立集群使用的IP处于同一网段。
· 不允许在操作系统中配置DNS服务器。
(6) 网络配置完成后,手动启用指定物理网卡,如图4-44所示。单击<完成>按钮,返回安装信息摘要界面。
(1) 在本地电脑控制端窗口执行命令ping ip_address,检查配置的IP地址是否连通。其中,ip_address为IPv4设置页签下配置的IP地址。若可ping通,则继续进行后续步骤,否则返回IPv4设置页签,检查掩码网关等信息是否配置正确。
(2) 在图4-31所示的安装信息摘要界面中单击<开始安装>按钮,开始安装操作系统,如图4-45所示。
(3) 安装完成后,服务器会自动重启。请重新进入BIOS设置界面,设置BIOS从Hard Disk启动,即设置Boot启动项时,在弹出的“Boot Option #1”对话框中,按<Enter>键选择“Hard Disk”,如图4-46所示。具体步骤与设置BIOS从CD/DVD启动类似,请参见“4.2 设置BIOS从CD/DVD启动”。
图4-46 设置Boot启动项
完成上述设置并保存退出后,服务器再次自动重启,重启后的界面如图4-47所示,表示操作系统安装成功。
(1) 在服务器上执行systemctl stop firewalld.service命令关闭防火墙。
[root@localhost ~]# systemctl stop firewalld.service
(2) 执行systemctl status firewalld.service命令查看防火墙状态,确保防火墙已关闭。
[root@localhost ~]# systemctl status firewalld.service
○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)//防火墙已关闭
Docs: man:firewalld(1)
(3) 执行systemctl disable firewalld.service命令设置防火墙开机不启动。
[root@localhost ~]# systemctl disable firewalld.service
通过挂载操作系统ISO镜像的方式来配置本地YUM源。
(1) 登录服务器的HDM管理平台,挂载操作系统ISO镜像文件,详细操作步骤请参见“4.1 登录远程控制台”。
(2) 在服务器上执行mount /dev/cdrom/mnt命令将ISO镜像挂载至/mnt目录。
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.//挂载成功
服务器重启后,ISO镜像目录可能会被取消挂载,如果需要继续使用本地YUM源的方式安装依赖包,请重新挂载ISO镜像文件。
(3) 修改服务器/etc/yum.repos.d/路径下H3CLinux.repo文件内容。
a. 进入服务器的目录/etc/yum.repos.d/。
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# vi H3CLinux.repo
b. 通过键盘输入“i”进入编辑界面,增加灰显内容:
[H3Linux_repo]
name=H3Linux_repo
baseurl=file:///mnt
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-H3Linux
enabled=1
[H3Linux_repo_updates]
name=H3Linux_repo
baseurl=file:///mnt
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-H3Linux
enabled=1
c. 按键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
(4) 执行yum clean all && yum makecache命令清空YUM源缓存。
[root@localhost ~]# yum clean all && yum makecache
6 files removed
H3CLinux 369 MB/s | 3.4 MB 00:00
Metadata cache created.
需要安装的Matrix依赖包如表5-1所示。
表5-1 Matrix依赖包版本列表
依赖包名称 |
版本号 |
java openjdk |
1.8.0 |
docker-ce-cli |
20.10.7 |
docker-ce |
20.10.7 |
docker-ce-rootless-extras |
20.10.7 |
docker-scan-plugin |
0.8.0 |
chrony |
4.1-3 |
python |
3.9.9 |
ntpdate |
4.2.8p15 |
(1) 安装Matrix依赖包。
[root@localhost ~]# yum install -y docker-ce-20.10.7* docker-ce-cli-20.10.7*
docker-ce-rootless-extras-20.10.7* docker-scan-plugin-0.8.0*
[root@localhost ~]# yum install java-1.8.0-openjdk
[root@localhost ~]# yum install chrony
[root@localhost ~]# yum install python
[root@localhost ~]# yum install ntpdate
(2) 执行rpm -qa |grep命令依次查询各依赖包是否安装成功(以查询docker依赖包为例)。
[root@localhost ~]# rpm -qa | grep docker
docker-scan-plugin-0.8.0-3.hl202.x86_64
docker-ce-cli-20.10.7-3.hl202.x86_64
docker-ce-rootless-extras-20.10.7-3.hl202.x86_64
docker-ce-20.10.7-3.hl202.x86_64
(3) 取消挂载本地YUM源。
[root@localhost ~]# umount /mnt
(1) 获取Matrix软件安装包,并将软件包通过FTP工具上传至服务器的待安装目录(例如/root)下。
(2) 进入Matrix软件包(.zip文件)的存放路径,解压缩并安装Matrix。软件包的名称格式为UDTP_Matrix_version-platform.zip,其中version为版本号,platform为CPU架构类型。下面以x86_64版本为例进行安装。
[root@localhost ~]# unzip UDTP_Matrix_V900R001B07D013_x86_64.zip
[root@localhost ~]# cd Matrix-V900R001B07D013-x86_64
[root@localhost Matrix-V900R001B07D013_x86_64]# ./install.sh
Installing...
[install] -----------------------------------
[install] Matrix-V900R001B07D013_x86_64
[install]
[install] Linux 5.10.0-136.12.0.86.4.hl202.x86_64
[install] -----------------------------------
[install] CAUTION: Installation failed for OS incompatibility.
Matrix can be installed only on a device running :
H3Linux Release 1.1.2 and 1.3.0,
Linux Release 1.1.2 and 1.3.1,
Red Hat Enterprise Linux Server release 7.6, 7.7(Maipo) and 8.4, 8.6 (Ootpa),
Kylin Linux Advanced Server release V10 (Azalea and Sword),
CentOS Linux release 7.6.1810 and 7.7.1908(Core),
BigCloud Enterprise Linux release 7.7.2005 (Core and AltArch),
Linux 2.0.2 LTS
[INFO] Continue anyway? (Y/N) : Y
…略…
Complete!
(3) 通过命令systemctl status matrix验证Matrix服务是否安装成功。若安装成功,则将在Active 字段后显示运行信息为active (running)。剩余节点执行同样操作即可。
[root@localhost ~]# systemctl status matrix.service
● matrix.service - Matrix Server
Loaded: loaded (/usr/lib/systemd/system/matrix.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-10-24 08:01:46 CST; 2 weeks 5 days ago
Main PID: 702359 (karaf)
Tasks: 549 (limit: 3355442)
Memory: 2.3G
CGroup: /system.slice/matrix.service
├─ 702359 /bin/sh /opt/matrix/bin/karaf server
└─ 703187 /usr/bin/java -XX:+UnlockDiagnosticVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/matrix/heapdumps/ -XX:OnOutOfMemoryError=/opt/matrix/k8s/disaster-reco>
Nov 13 02:56:35 localhost sudo[916772]: pam_unix(sudo:session): session closed for user root
Nov 13 02:56:39 localhost sudo[917311]: root : PWD=/opt/matrix ; USER=root ; COMMAND=/bin/bash -c source /etc/profile; /opt/matrix/k8s/monitorscript/check_node_service_2m.sh
Nov 13 02:56:39 localhost sudo[917311]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=0)
Nov 13 02:56:39 localhost sudo[917311]: pam_unix(sudo:session): session closed for user root
Nov 13 02:57:14 localhost sudo[920771]: root : PWD=/opt/matrix ; USER=root ; COMMAND=/bin/bash -c source /etc/profile; /opt/matrix/k8s/monitorscript/check_config_dir_file_3m.sh
Nov 13 02:57:14 localhost sudo[920771]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=0)
Nov 13 02:57:14 localhost sudo[920771]: pam_unix(sudo:session): session closed for user root
Nov 13 02:57:15 localhost sudo[920998]: root : PWD=/opt/matrix ; USER=root ; COMMAND=/bin/bash -c source /etc/profile; /opt/matrix/k8s/monitorscript/check_docker_config.sh
Nov 13 02:57:15 localhost sudo[920998]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=0)
Nov 13 02:57:15 localhost sudo[920998]: pam_unix(sudo:session): session closed for user root
Matrix所有节点使用一个安装包进行安装,在配置页面进行配置时再区分Master节点与Worker节点。
· 当使用内置NTP服务器作为时钟同步源时,在部署集群之前,需确保所有节点的系统时间和当前时间保持一致。
· 当使用外置NTP服务器作为时钟同步源时,在部署集群之前,需确保外置NTP服务器的时间与当前时间保持一致。
· 如果NTP服务器网络故障或时间不准确,则可能会导致Matrix集群部署失败。
· 可在在服务器上执行以下命令查看、修改节点系统时间:date命令查看系统时间、date -s yyyy-mm-dd命令修改系统时间的年月日、date -s hh:mm:ss命令修改系统时间的时分秒。
(1) 在浏览器中输入Matrix的登录地址,进入如图5-1所示的登录页面。登录地址格式为:https://ip_address:8443/matrix/ui/。其中ip_address为Master节点IP地址,8443为缺省端口号。
未部署集群之前,ip_address可以是任意一个规划为Master节点的IP地址。
图5-1 Matrix登录界面
(2) 输入用户名和密码(默认用户名为admin,密码为Pwd@12345,若安装操作系统设置过密码,则按设置的填写)后,单击<登录>按钮,默认进入Matrix的集群部署向导页面。
在Matrix的集群部署向导页面中配置Matrix集群参数,如图5-2和图5-3所示,集群参数详细介绍如表5-2所示。
图5-2 Matrix集群设置(一)
图5-3 Matrix集群设置(二)
参数 |
说明 |
北向业务虚IP |
集群对外提供服务的IP地址,该地址必须在Master节点所处的网段内 |
Service IP地址 池 |
用于为Service分配IP地址,不能与部署环境中的其它网段冲突。默认地址为10.96.0.0/16,一般保持默认值 |
容器IP地址池 |
用于为容器分配IP地址,不能与部署环境中的其它网段冲突。默认地址为177.177.0.0/16,一般保持默认值 |
虚IP模式 |
取值为内置虚IP、外置虚IP。内置模式下虚IP由Matrix下发到集群内,并由Matrix管理虚IP在集群节点间的漂移;外置模式下,虚IP由第三方平台或软件下发到集群外,不再由Matrix管理。默认为内置模式 |
集群网络模式 |
集群网络模式有两种: 单子网:集群内所有节点、虚IP 必须在相同网段内,否则将无法互相通信。如果使用本地环境部署LinSeer,请选择本模式 单子网-VXLAN:集群内所有节点、虚IP必须在相同网段内,否则将无法互相通信。如果使用云上环境部署LinSeer,请选择本模式,否则Pod之间可能无法通信,会导致部署失败 |
NTP服务器 |
用于保证集群内各节点系统时间的一致性,支持选择内置服务器和外置服务器。选择外置服务器时,需要配置NTP服务器地址,且该地址不可与集群内各节点的IP地址冲突 本文档使用内置服务器作为NTP服务器,则部署集群时会首先进行时间同步,集群部署完成后,三台Master节点会定时同步时间,从而保证集群内各节点的系统时间保持一致 |
外置DNS服务器 |
用于解析K8s集群外部的域名,格式为IP:Port,可根据实际需要配置外置DNS服务器。本文档中不配置此项 容器解析域名时,集群外部的域名无法被内置DNS 服务器解析,本系统将把需要解析的外部域名随机转发给一台外置DNS 服务器来解析 外置 DNS 服务器最多可以配置10 个,各外置DNS 服务器要求具有相同的DNS解析能力,并可以独立满足外部域名解析需求、无主备之分、无先后顺序之分 建议所有的 DNS服务器都能够访问根域,可使用命令行nslookup -port={port}-q=ns . {ip}查看是否可以访问 |
自定义虚IP |
(暂不支持)在南北向业务隔离的情况下,设备需要使用固定的IP和集群通信 |
单机部署模式下,仅需增加一个Master节点即可部署集群。集群部署模式下,需要增加三个Master节点后,再部署集群。
(1) 配置集群参数后,单击<下一步>按钮,进入创建集群页面,如图5-4所示。
(2) 单击Master节点区域的增加图标,弹出增加节点窗口。
(3) 在弹出的节点窗口中,配置节点参数。
¡ 对于单机部署模式,如图5-5所示配置参数后,单击<应用>按钮,完成增加Master节点操作。
- 批量添加:选择“否”。
- 类型:显示为“Master”不可修改。
- IP地址:规划的Master节点的IP地址。支持批量添加Master节点,批量添加模式下,各Master节点的用户名和密码需相同。
- 用户名:节点操作系统的用户名,为安装H3Linux系统时设置的root用户名。
- 密码:节点操作系统的用户密码,为安装H3Linux系统时设置的root用户密码。
¡ 对于3机集群部署模式或3+N机集群部署模式,如图5-6所示配置参数后,单击<应用>按钮,完成增加Master节点操作。
- 批量添加:选择“是”。
- 类型:显示为“Master”,且不可修改。
- IP地址:规划的Master节点的IP地址。支持批量添加Master节点,批量添加模式下,各Master节点的用户名和密码需相同。
- 用户名:节点操作系统的用户名,为安装H3Linux系统时设置的root用户名。
- 密码:节点操作系统的用户密码,为安装H3Linux系统时设置的root用户密码。
(4) 单击<开始部署>按钮,开始部署集群,如图5-7所示。
(5) 部署成功后,会显示各Master节点。
¡ 单机部署成功页面如图5-8所示,Master节点左上角显示标记。
¡ 集群中所有节点的进度达到100%时,表示集群部署成功,如图5-9所示。
集群部署成功后,主Master节点左上角显示标记,其余未被标记的Master节点为备用Master节点。
仅分布式训练网络需要配置MAC VLAN网络。
组建分布式训练网络,请确保服务器型号及网卡型号均相同,建议优先使用R5500 G5或R5500 G6服务器。
(1) 如图5-10所示,在Matrix集群部署页面单击“网络”页签,单击“创建网络”新建网络,根据网络规划设置参数。
¡ 选择网络类型为“macvlan”。
¡ 自定义网络名称,请根据RDMA网卡的个数,创建相同数量的网络。
(2) 如图5-11所示,单击“关联网卡”添加物理网卡。
a. “节点名称”选择节点为GPU服务器。
b. “网卡列表”选择对应GPU服务器的物理网卡(例如ens11f1np1)。
c. 重复上述步骤,将关联所有GPU服务器的物理网卡。
建议将不同服务器上相同编号的RDMA网卡加入同一个网络。参见“6.7 安装网卡驱动”完成RDMA网卡驱动安装后,在GPU服务器上执行ibdev2netdev命令可查看RDMA网卡和物理网卡的对应关系。
(3) 如图5-12所示,单击“创建子网”为MAC VLAN网络创建子网,根据业务需求为分布式训练或推理分别创建子网,不同业务属于不同网段。
a. 输入“子网名称”,分布式训练网络的训练子网名称固定为“distribute-train”,分布式训练网络推理子网名称固定为“distribute-Inference”。
b. 输入子网网段,如果需创建2个子网,请确保网段不重复。
c. 输入网关IP地址。
(4) 所有网络创建完成后,单击<应用>按钮,完成配置,如图5-13所示。
所有GPU的服务器均需要安装GPU驱动及相关工具包。
安装适配的GPU驱动程序能确保显卡在操作系统中被正确识别,可提高深度学习训练速度、提升推理性能,并能提供多任务并行处理、大规模数据处理等功能。
在服务器上执行lspci -k | grep -A 2 -E "(VGA|3D)"命令查看显卡型号。
[root@localhost ~]# lspci -k | grep -A 2 -E "(VGA|3D)"
25:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
Subsystem: NVIDIA Corporation Device 1463
Kernel driver in use: nvidia
--
2b:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
Subsystem: NVIDIA Corporation Device 1463
Kernel driver in use: nvidia
--
63:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
Subsystem: NVIDIA Corporation Device 1463
Kernel driver in use: nvidia
--
68:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
Subsystem: NVIDIA Corporation Device 1463
Kernel driver in use: nvidia
--
74:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41)
DeviceName: Onboard Video
Subsystem: ASPEED Technology, Inc. ASPEED Graphics Family
--
9f:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
Subsystem: NVIDIA Corporation Device 1463
Kernel driver in use: nvidia
--
a4:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
Subsystem: NVIDIA Corporation Device 1463
Kernel driver in use: nvidia
--
e2:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
Subsystem: NVIDIA Corporation Device 1463
Kernel driver in use: nvidia
--
e8:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
Subsystem: NVIDIA Corporation Device 1463
Kernel driver in use: nvidia
登录NVIDIA官网,并进入“驱动程序下载”栏目下载显卡驱动。
(1) 登录NVIDIA官网: https://www.nvidia.cn/Download/index.aspx?lang=cn
(2) 请设置驱动参数。
a. 参见表6-1设置NVIDIA驱动程序下载参数。
b. 请根据实际环境设置操作系统参数,H3Linux 2.0.2操作系统选择“Linux 64-bit”。
c. 单击<搜索>按钮。
图6-1 设置驱动参数
表6-1 显卡与CUDA Toolkit版本对应关系表
产品类型 |
产品系列 |
产品家族(含显卡型号) |
驱动版本 |
CUDA Toolkit版本 |
Tesla |
V-Series |
NVIDIA V100 |
NVIDIA-SMI 515.105.01 |
CUDA 11.7 |
Tesla |
A-Series |
NVIDIA A30 |
NVIDIA-SMI 515.105.01 |
CUDA 11.7 |
Tesla |
A-Series |
NVIDIA A100 |
NVIDIA-SMI 515.105.01 |
CUDA 11.7 |
Tesla |
HGX-Series |
NVIDIA H800 |
NVIDIA-SMI 525.125.06 |
CUDA 12.0 |
(3) 如图6-2所示,搜索到目标显卡驱动后,单击<下载>按钮下载显卡驱动。
Nouveau是Linux自带的显卡驱动,需要禁用,否则安装NVIDIA显卡驱动时会提示冲突。
(1) 输入lsmod | grep nouveau命令,若显示如下信息则表示Nouveau已被启用,需要禁用Nouveau。
[root@localhost ~]# lsmod | grep nouveau
nouveau 1869689 0
mxm wmi 13021 l nouveau
wmi 21636 2 mxm_wmi,nouveau
video 24538 l nouveau
i2c_algo_bit 13413 l nouveau
ttm 114635 2 cirrus,nouveau
drm_kms_helper 179394 2 cirrus,nouveau
drm 429744 5 ttm,drm_kms_helper,cirrus,nouveau
(2) 禁用Nouveau。
a. 执行vi命令分别创建如下两个文件。
[root@localhost ~]# vi /etc/modprobe.d/nvidia-installer-disable-nouveau.conf
[root@localhost ~]# vi /lib/modprobe.d/nvidia-installer-disable-nouveau.conf
b. 通过键盘输入“i”进入编辑界面,输入如下内容:
blacklist nouveau//屏蔽 nouveau
options nouveau modeset=0//如果不加本行,字符界面下,可能导致显示器黑屏,无法安装驱动
c. 按键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
(3) 更新initramfs镜像(img格式)文件
a. 通过mv命令重命名镜像文件(作为备份)。
[root@localhost ~]# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
b. 通过dracut命令更新镜像文件信息。
[root@localhost ~]# dracut /boot/initramfs-$(uname -r).img $(uname -r)
(4) 通过reboot命令重启设备后,再次输入lsmod | grep nouveau命令,显示信息为空,则表示Nouveau已被禁用。
[root@localhost ~]# lsmod | grep nouveau
[root@localhost ~]#
(1) 配置本地YUM源,分别执行如下命令安装相关依赖包。
[root@localhost ~]# yum install gcc
[root@localhost ~]# yum install kernel-devel
[root@localhost ~]# yum install make
(2) 将显卡驱动安装包通过FTP工具上传至服务器的待安装目录(例如/root)下。
(3) 在服务器上执行chmod +x NVIDIA-Linux-x86_64-515.105.01.run命令将显卡驱动安装包的权限改为可执行。
[root@localhost ~]# chmod +x NVIDIA-Linux-x86_64-515.105.01.run
(4) 安装显卡驱动
a. 执行./NVIDIA-Linux-x86_64-515.105.01.run命令安装显卡驱动。
[root@localhost ~]# ./NVIDIA-Linux-x86_64-515.105.01.run
b. 安装过程中各步骤均点击<YES>或者<OK>按钮,直到显卡驱动安装完成。
(5) 执行nvidia-smi命令,若显示信息如下说明显卡驱动安装成功。
[root@localhost ~]# nvidia-smi
Mon Nov 13 03:39:19 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.105.01 Driver Version: 515.105.01 CUDA Version: 11.7 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA A100-SXM... On | 00000000:25:00.0 Off | 0 |
| N/A 31C P0 62W / 400W | 0MiB / 81920MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A100-SXM... On | 00000000:2B:00.0 Off | 0 |
| N/A 34C P0 61W / 400W | 0MiB / 81920MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA A100-SXM... On | 00000000:63:00.0 Off | 0 |
| N/A 34C P0 63W / 400W | 0MiB / 81920MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 3 NVIDIA A100-SXM... On | 00000000:68:00.0 Off | 0 |
| N/A 32C P0 62W / 400W | 0MiB / 81920MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 4 NVIDIA A100-SXM... On | 00000000:9F:00.0 Off | 0 |
| N/A 32C P0 62W / 400W | 0MiB / 81920MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 5 NVIDIA A100-SXM... On | 00000000:A4:00.0 Off | 0 |
| N/A 35C P0 65W / 400W | 0MiB / 81920MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 6 NVIDIA A100-SXM... On | 00000000:E2:00.0 Off | 0 |
| N/A 35C P0 64W / 400W | 0MiB / 81920MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 7 NVIDIA A100-SXM... On | 00000000:E8:00.0 Off | 0 |
| N/A 33C P0 62W / 400W | 0MiB / 81920MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
...
(1) 向技术支持获取离线安装包“nvidiaRuntimeOffline.zip”。
(2) 将NVIDIA运行时工具离线安装包,通过FTP工具上传至服务器的待安装目录(例如/root)下。
(3) 执行unzip命令解压缩离线安装包。
[root@localhost ~]# unzip NvidiaRuntimeOffline.zip
Archive: NvidiaRuntimeOffline.zip
creating: NvidiaRuntimeOffline/
creating: NvidiaRuntimeOffline/rpm/
...
(4) 执行cd命令进入离线安装包文件夹。
[root@localhost ~]# cd NvidiaRuntimeOffline/rpm/
(5) 执行rpm -Uvh --force --nodeps *.rpm命令安装软件包。
[root@localhost rpm]# rpm -Uvh --force --nodeps *.rpm
(6) 执行systemctl restart docker命令重启docker服务,使NVIDIA运行时生效。
[root@localhost ~]# systemctl restart docker
(7) 分别执行如下命令检查NVIDIA运行时工具安装情况。如显示如下信息,则表示该工具安装成功。
[root@localhost ~]# whereis nvidia-container-runtime
nvidia-container-runtime: /usr/bin/nvidia-container-runtime /etc/nvidia-container-runtime
[root@localhost ~]# whereis nvidia-container-runtime-hook
nvidia-container-runtime-hook: /usr/bin/nvidia-container-runtime-hook
仅分布式训练网络需要安装CUDA Toolkit驱动。
6.3.1 安装CUDA Toolkit驱动
(1) 登录网址https://developer.nvidia.com/cuda-toolkit-archive,请下载对应版本的CUDA Toolkit驱动,如图6-3所示,CUDA Toolkit版本与显卡对应关系如表6-1所示。
(2) 通过FTP等工具将CUDA Toolkit安装包上传到服务器(例如/root目录)。
(3) 进入CUDA Toolkit安装包目录下,执行chmod命令修改安装包的权限为可执行。
[root@localhost ~]# chmod +x cuda_12.0.0_525.105.07_linux.run
(4) 执行sh cuda_12.0.0_525.60.13_linux.run命令后回车。
[root@localhost ~]# sh cuda_12.0.0_525.60.13_linux.run
(5) 出现如下显示信息时,手动输入accept。
┌─┐
│ End User License Agreement │
│ - │
│ │
│ NVIDIA Software License Agreement and CUDA Supplement to │
│ Software License Agreement. Last updated: October 8, 2021 │
│ │
│ The CUDA Toolkit End User License Agreement applies to the │
│ NVIDIA CUDA Toolkit, the NVIDIA CUDA Samples, the NVIDIA │
│ Display Driver, NVIDIA Nsight tools (Visual Studio Edition), │
│ and the associated documentation on CUDA APIs, programming │
│ model and development tools. If you do not agree with the │
│ terms and conditions of the license agreement, then do not │
│ download or use the software. │
│ │
│ Last updated: October 8, 2021. │
│ │
│ │
│ Preface │
│ - │
│ │
│─ │
│ Do you accept the above EULA? (accept/decline/quit): │
│ accept │
└─┘
(6) 出现如下显示信息时,通过键盘<Enter>键取消选择Driver。
┌─┐
│ CUDA Installer se Agreement │
│ - [X] Driver │
│ [X] 525.60.13 │
│ + [X] CUDA Toolkit 12.0 │
│ [X] CUDA Demo Suite 12.0 │
│ [X] CUDA Documentation 12.0 │
│ - [ ] Kernel Objects │
│ [ ] nvidia-fs │
│ Options │
│ Install │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ reface │
│ │
│ │
│ │
│ │
│ Up/Down: Move | Left/Right: Expand | 'Enter': Select | 'A': Advanced options │
└─┘
(7) 安装如下组件,标记为X的选项表示已选中,通过键盘<↑><↓>选择“Install”,按回车进行安装。
┌─┐
│ CUDA Installer se Agreement │
│ - [ ] Driver │
│ [ ] 525.60.13 │
│ + [X] CUDA Toolkit 12.0 │
│ [X] CUDA Demo Suite 12.0 │
│ [X] CUDA Documentation 12.0 │
│ - [ ] Kernel Objects │
│ [ ] nvidia-fs │
│ Options │
│ Install │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ reface │
│ │
│ │
│ │
│ │
│ Up/Down: Move | Left/Right: Expand | 'Enter': Select | 'A': Advanced options │
└─┘
(1) 创建并编辑bashrc文件。
a. 在服务器上执行vi命令创建文件。
[root@localhost ~]# vi ~/.bashrc
b. 通过键盘输入“i”进入编辑界面,修改文件增加环境变量(见灰显信息)。
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export OS_TYPE=1
export KUBECONFIG=/etc/kubernetes/kubelet.conf
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}//请根据CUDA版本号更改“cuda-11.7”信息
c. 按键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
(2) 执行ln -s命令,在/usr/bin目录下创建一个名为nvcc的符号链接,指向/usr/local/cuda/bin/nvcc可执行文件,并通过source命令激活配置。
[root@localhost ~]# ln -s /usr/local/cuda/bin/nvcc /usr/bin/nvcc
[root@localhost ~]# source ~/.bashrc
(3) 执行/usr/bin/nvidia-persistenced --verbose命令,启动NVIDIA GPU持久化模式服务。
[root@localhost ~]# /usr/bin/nvidia-persistenced --verbose
(4) 执行命令nvcc -V查看CUDA版本,存在如下显示信息说明CUDA安装成功。
[root@localhost ~]# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_May__3_18:49:52_PDT_2022
Cuda compilation tools, release 11.7, V11.7.64
Build cuda_11.7.r11.7/compiler.31294372_0
集群每个节点都需要将容器默认运行时修改为NVIDIA运行时。
(1) 修改/etc/docker/daemon.json文件。
a. 执行vi命令修改文件。
[root@localhost ~]# vi /etc/docker/daemon.json
b. 通过键盘输入“i”进入编辑界面,在文件开头增加配置(见灰显信息)。
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"live-restore": true,
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": ["matrix-registry.h3c.com:8088", "matrix-registry-master1.h3c.com:8088"],
"bridge": "none",
"log-driver": "json-file",
"log-opts": {"max-size": "50m", "max-file": "3"}
}
c. 按键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
(2) 执行systemctl restart docker命令重启docker服务,使NVIDIA设备插件生效。
[root@localhost ~]# systemctl restart docker
(1) 在任一Master节点的服务器上执行wget命令下载nvidia-device-plugin.yml文件。
[root@localhost ~]# wget https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml
--2023-11-03 09:55:36-- https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml
正在解析主机 raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1894 (1.8K) [text/plain]
正在保存至: “nvidia-device-plugin.yml”
nvidia-device-plugin.yml 100%[=======================================================================================================>] 1.85K --.-KB/s 用时 0s
2023-11-03 09:55:36 (50.1 MB/s) - 已保存 “nvidia-device-plugin.yml” [1894/1894])
(2) 在各GPU服务器上执行docker pull命令下载nvidia-device-plugin镜像。
[root@localhost ~]# docker pull nvcr.io/nvidia/k8s-device-plugin:v0.14.1
v0.14.1: Pulling from nvidia/k8s-device-plugin
56e0351b9876: Pull complete
50292f59408b: Pull complete
bac1f8a1c195: Pull complete
0b0815e859ed: Pull complete
8abd77f1cc9e: Pull complete
d473781522df: Pull complete
76e0ddc91db3: Pull complete
1597e60bbfbb: Pull complete
86dc2aec77cc: Pull complete
c9ab9a167444: Pull complete
Digest: sha256:15c4280d13a61df703b12d1fd1b5b5eec4658157db3cb4b851d3259502310136
Status: Downloaded newer image for nvcr.io/nvidia/k8s-device-plugin:v0.14.1
nvcr.io/nvidia/k8s-device-plugin:v0.14.1
(3) 根据集群部署环境的实际情况选择合适的方式部署nvidia-device-plugin.yml。
¡ 如果集群所有服务器都支持GPU,按照步骤(4)部署。
¡ 如果集群只有部分服务器支持GPU,按照步骤(5)部署。
(4) 集群所有服务器都支持GPU时,请在任一个Master节点上执行kubectl apply –f命令部署nvidia-device-plugin.yml文件,其他节点无需重复部署。例如:
[root@localhost ~]# kubectl apply -f nvidia-device-plugin.yml
(5) 如果集群只有部分服务器支持GPU时,请为每个GPU服务器节点创建yml文件,通过yml文件内的name字段区分。
a. 在任一个Master节点上,为各个GPU服务器节点创建nvidia-device-plugin.yml文件,文件名称不能重复。
b. 执行kubectl get node --show-labels命令查看集群GPU服务器节点的nodeid(灰显信息)。
[root@localhost ~]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
localhost Ready control-plane,master 47d v1.21.14 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=localhost,kubernetes.io/os=linux,master=master1,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=,node=node1,platform=plat,role=master
localhost3 Ready control-plane,master 48d v1.21.14 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=localhost3,kubernetes.io/os=linux,master=master2,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=,node=node2,platform=plat,role=master
localhost5 Ready control-plane,master 48d v1.21.14 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=localhost5,kubernetes.io/os=linux,master=master3,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=,node=node3,platform=plat,role=master
localhost24 Ready <none> 4d22h v1.21.14 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=localhost24,kubernetes.io/os=linux,node=node4,role=worker,worker=worker1
c. 修改各个yml文件的name字段,修改后的文件示例如下(灰显信息为修改后的内容),确认无误后保存。
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nvidia-device-plugin-daemonset-node1 //各GPU服务器节点名称不要重复
namespace: kube-system
spec:
selector:
matchLabels:
name: nvidia-device-plugin-ds
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
name: nvidia-device-plugin-ds
spec:
nodeSelector:
node: node1 //GPU服务器节点的nodeid,通过上一步骤可查询
tolerations:
- key: nvidia.com/gpu
operator: Exists
effect: NoSchedule
# Mark this pod as a critical add-on; when enabled, the critical add-on
# scheduler reserves resources for critical add-on pods so that they can
# be rescheduled after a failure.
# See https://kubernetes.io/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/
priorityClassName: "system-node-critical"
containers:
- image: nvcr.io/nvidia/k8s-device-plugin:v0.14.0
name: nvidia-device-plugin-ctr
env:
- name: FAIL_ON_INIT_ERROR
value: "false"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
volumeMounts:
- name: device-plugin
mountPath: /var/lib/kubelet/device-plugins
volumes:
- name: device-plugin
hostPath:
path: /var/lib/kubelet/device-plugins
d. 在任意一个Master节点上执行kubectl apply –f命令部署各个GPU服务器节点的yml文件。例如:
[root@localhost ~]# kubectl apply -f nvidia-device-plugin-node2.yml
(6) 执行kubectl get pod -n kube-system -o wide | grep plugin命令查询Pod运行状态,如果各GPU服务节点的Pod均为running状态,则表示nvidia-device-plugin插件安装成功。
[root@localhost ~]# kubectl get pod -n kube-system -o wide | grep plugin
nvidia-device-plugin-daemonset-9jrb8 1/1 Running 2 47d 177.177.173.14 localhost <none> <none>
在支持GPU的服务器上执行kubectl describe node命令,查看nvidia.com/gpu字段可显示GPU数量,则表示GPU识别正常。
[root@localhost ~]# kubectl describe node localhost //localhost为服务器主机名称
Name: localhost
Roles: control-plane,master
...
Capacity:
cpu: 255
ephemeral-storage: 3748905484Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 1055870908Ki
nvidia.com/gpu: 8
pods: 300
rdma/hpc_shared_devices_ens11f1np1: 1k
rdma/hpc_shared_devices_ens12f1np1: 1k
rdma/hpc_shared_devices_ens13f1np1: 1k
rdma/hpc_shared_devices_ens14f1np1: 1k
rdma/hpc_shared_devices_ens15f1np1: 1k
rdma/hpc_shared_devices_ens16f1np1: 1k
rdma/hpc_shared_devices_ens17f1np1: 1k
rdma/hpc_shared_devices_ens18f1np1: 1k
Allocatable:
cpu: 240
ephemeral-storage: 3454991288335
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 1045282748Ki
nvidia.com/gpu: 8
pods: 300
rdma/hpc_shared_devices_ens11f1np1: 1k
rdma/hpc_shared_devices_ens12f1np1: 1k
rdma/hpc_shared_devices_ens13f1np1: 1k
rdma/hpc_shared_devices_ens14f1np1: 1k
rdma/hpc_shared_devices_ens15f1np1: 1k
rdma/hpc_shared_devices_ens16f1np1: 1k
rdma/hpc_shared_devices_ens17f1np1: 1k
rdma/hpc_shared_devices_ens18f1np1: 1k
...
GPU形态分为模组形态和PCIe板卡形态,只有模组形态才需要安装nvidia-fabricmanager。
通过nvlink桥或PCIe桥互连,如果GPU通过nvlink桥互连,则必须要安装NVIDIA网络设备管理器nvidia-fabricmanager,否则GPU可能无法正常使用。
(1) 执行lspci | grep -i nvidia命令查询服务器上的GPU形态。
¡ 如果显示信息包含“Bridge”信息,表示GPU通过nvlink桥互连,即GPU为模组形态。需要安装nvidia-fabricmanager,请执行下一步骤安装nvidia-fabricmanager。
[root@localhost ~]# lspci | grep -i nvidia
1c:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
1d:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
1e:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
1f:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
20:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
21:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
25:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
2b:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
63:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
68:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
9f:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
a4:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
e2:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
e8:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
¡ 如果显示信息不包含“Bridge”信息,表示GPU通过PCIe桥互连,即GPU为PCIe板卡形态,不需要安装nvidia-fabricmanager。
[root@localhost ~]# lspci | grep -i nvidia
40:00.0 3D controller: NVIDIA Corporation GA100 [A100 PCIe 80GB] (rev a1)
49:00.0 3D controller: NVIDIA Corporation GA100 [A100 PCIe 80GB] (rev a1)
4a:00.0 3D controller: NVIDIA Corporation GA100 [A100 PCIe 80GB] (rev a1)
59:00.0 3D controller: NVIDIA Corporation GA100 [A100 PCIe 80GB] (rev a1)
(2) 登录网址https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/,下载nvidia-fabricmanager或者向技术支持获取安装包。
请确保下载的nvidia-fabricmanager版本与表6-1所示的显卡驱动版本一致。
图6-4 nvidia-fabricmanager下载页面参考图
(3) 执行rpm -ivh命令安装nvidia-fabricmanager。
[root@localhost ~]# rpm -ivh nvidia-fabric-manager-515.105.01-1.x86_64.rpm
警告:nvidia-fabric-manager-515.105.01-1.x86 64.rpm:头V4 RSA/SHA512 signature,密钥 ID d420045:NOKE
Verifying... ####################[100%]
准备中... ####################[100%]
正在升级/安装... ####################[100%]
1:nvidia-fabric-manager-515.105.01####################[100%]
(4) 执行如下命令启动nvidia-fabricmanager服务,并且设置为开机自动启动。
[root@localhost ~]# systemctl start nvidia-fabricmanager
[root@localhost ~]# systemctl enable nvidia-fabricmanager
(5) 执行systemctl status nvidia-fabricmanager命令查询nvidia-fabricmanager服务状态,如果Active字段显示为“running”表示服务启动正常。
[root@localhost ~]# systemctl status nvidia-fabricmanager
● nvidia-fabricmanager.service - NVIDIA fabric manager service
Loaded: loaded (/usr/lib/systemd/system/nvidia-fabricmanager.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2023-10-18 02:38:11 CST; 3 weeks 5 days ago
Main PID: 3850798 (nv-fabricmanage)
Tasks: 18 (limit: 3355442)
Memory: 15.4M
CGroup: /system.slice/nvidia-fabricmanager.service
└─ 3850798 /usr/bin/nv-fabricmanager -c /usr/share/nvidia/nvswitch/fabricmanager.cfg
Notice: journal has been rotated since unit was started, output may be incomplete.
仅分布式训练网络需要安装cuDNN。
6.6.1 安装Zlib
配置本地YUM源,执行yum install Zlib命令安装Zlib。
[root@localhost ~]# yum install zlib
6.6.2 下载和安装cuDNN
(1) 登录网址https://developer.nvidia.com/rdp/cudnn-archive下载适配CUDA Toolkit的cuDNN。
安装CUDA Toolkit驱动时已确认版本,详细内容请参见“6.3.1 安装CUDA Toolkit驱动”。
图6-5 下载cuDNN
(2) 通过FTP工具将cuDNN安装包上传到服务器。
(3) 执行如下命令解压缩cuDNN压缩包。
[root@localhost ~]# tar -xvf cudnn-linux-x86_64-8.9.4.25_cuda11-archive.tar.xz
(4) 执行如下命令将指定文件拷贝到CUDA Toolkit目录下。
[root@localhost ~]# sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
[root@localhost ~]# sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
[root@localhost ~]# sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
(5) 执行ls命令确认文件已成功拷贝到指定目录下。
[root@localhost ~]# ls /usr/local/cuda/lib64/libcudnn*
/usr/local/cuda/lib64/libcudnn_adv_infer.so /usr/local/cuda/lib64/libcudnn_cnn_infer.so.8 /usr/local/cuda/lib64/libcudnn_ops_infer.so.8.9.4
/usr/local/cuda/lib64/libcudnn_adv_infer.so.8 /usr/local/cuda/lib64/libcudnn_cnn_infer.so.8.9.4 /usr/local/cuda/lib64/libcudnn_ops_infer_static.a
/usr/local/cuda/lib64/libcudnn_adv_infer.so.8.9.4 /usr/local/cuda/lib64/libcudnn_cnn_infer_static.a /usr/local/cuda/lib64/libcudnn_ops_infer_static_v8.a
/usr/local/cuda/lib64/libcudnn_adv_infer_static.a /usr/local/cuda/lib64/libcudnn_cnn_infer_static_v8.a /usr/local/cuda/lib64/libcudnn_ops_train.so
/usr/local/cuda/lib64/libcudnn_adv_infer_static_v8.a /usr/local/cuda/lib64/libcudnn_cnn_train.so /usr/local/cuda/lib64/libcudnn_ops_train.so.8
/usr/local/cuda/lib64/libcudnn_adv_train.so /usr/local/cuda/lib64/libcudnn_cnn_train.so.8
...
[root@beijing-ning22 ~]# ls /usr/local/cuda/include/cudnn.h
/usr/local/cuda/include/cudnn.h
仅分布式训练网络需要安装网卡驱动。
(1) 配置本地YUN源,详细步骤请参见“5.1.2 1. 配置本地YUM源”。
(2) 执行yum命令安装依赖包。
[root@localhost ~]# yum install fuse-devel pciutils-devel tcsh tk lsof
(3) 执行rpm -qa |grep命令依次查询各依赖包是否安装成功(以查询lsof依赖包为例)。
[root@localhost ~]# rpm -qa | grep lsof
lsof-4.96.4-2.nos1.x86_64
6.7.2 安装网卡驱动
(1) 联系技术支持获取网卡驱动离线安装包。
(2) 通过FTP工具将网卡驱动安装包上传到服务器(例如/root目录)。
(3) 执行tar命令进行解压缩。
[root@localhost ~]# tar -zxvf MLNX_OFED_LINUX-5.8-3.0.7.0-openeuler20.03sp3-ext.tgz
(4) 进入安装包解压后的文件夹目录,执行如下命令进行安装。
[root@localhost ~]# ./mlnxofedinstall --without-fw-update --force --distro openeuler20.03sp3
(5) 驱动安装完成后执行ofed_info -s命令可以查看驱动版本信息。
[root@localhost ~]# ofed_info -s
MLNX_OFED_LINUX-5.8-3.0.7.0:
(6) 网卡驱动安装完成后执行systemctl start openibd命令,启动openibd服务加载新驱动。
[root@localhost ~]# systemctl start openibd
(7) 执行systemctl enable openibd命令设置openibd服务开机自动启动。
[root@localhost ~]# systemctl enable openibd
(8) 执行reboot命令重启服务器。
[root@localhost ~]# reboot
(9) 服务器重启完成后,执行mst start命令启动网卡管理服务。
[root@localhost ~]# mst start
(10) 执行ibdev2netdev命令查看网卡信息,显示如下信息则表示网卡驱动安装成功。
[root@localhost ~]# ibdev2netdev
mlx5_0 port 1 ==> ens13f0np0 (Down)
mlx5_1 port 1 ==> ens13f1np1 (Up)
mlx5_10 port 1 ==> ens18f0np0 (Down)
mlx5_11 port 1 ==> ens18f1np1 (Up)
mlx5_12 port 1 ==> ens20f0np0 (Down)
mlx5_13 port 1 ==> ens20f1np1 (Down)
mlx5_14 port 1 ==> ens15f0np0 (Down)
mlx5_15 port 1 ==> ens15f1np1 (Up)
mlx5_16 port 1 ==> ens16f0np0 (Down)
mlx5_17 port 1 ==> ens16f1np1 (Up)
mlx5_2 port 1 ==> ens14f0np0 (Down)
mlx5_3 port 1 ==> ens14f1np1 (Up)
mlx5_4 port 1 ==> ens11f0np0 (Down)
mlx5_5 port 1 ==> ens11f1np1 (Up)
mlx5_6 port 1 ==> ens12f0np0 (Down)
mlx5_7 port 1 ==> ens12f1np1 (Up)
mlx5_8 port 1 ==> ens17f0np0 (Down)
mlx5_9 port 1 ==> ens17f1np1 (Up)
6.7.3 配置RDMA网卡IP地址
(1) 执行ibdev2netdev命令查看待配置RDMA网卡信息。名称前缀为“mlx5”的网卡(例如mlx5_1)均为RDMA网卡,名称前缀为“ens”的网卡(例如ens13f1np1)均为为物理网卡,状态显示为“UP”的网卡表示可配置。
[root@localhost ~]# ibdev2netdev
mlx5_0 port 1 ==> ens13f0np0 (Down)
mlx5_1 port 1 ==> ens13f1np1 (Up)
mlx5_10 port 1 ==> ens18f0np0 (Down)
mlx5_11 port 1 ==> ens18f1np1 (Up)
mlx5_12 port 1 ==> ens20f0np0 (Down)
mlx5_13 port 1 ==> ens20f1np1 (Down)
mlx5_14 port 1 ==> ens15f0np0 (Down)
mlx5_15 port 1 ==> ens15f1np1 (Up)
mlx5_16 port 1 ==> ens16f0np0 (Down)
mlx5_17 port 1 ==> ens16f1np1 (Up)
mlx5_2 port 1 ==> ens14f0np0 (Down)
mlx5_3 port 1 ==> ens14f1np1 (Up)
mlx5_4 port 1 ==> ens11f0np0 (Down)
mlx5_5 port 1 ==> ens11f1np1 (Up)
mlx5_6 port 1 ==> ens12f0np0 (Down)
mlx5_7 port 1 ==> ens12f1np1 (Up)
mlx5_8 port 1 ==> ens17f0np0 (Down)
mlx5_9 port 1 ==> ens17f1np1 (Up)
(2) 根据网络规划配置IP地址。
a. 执行cd /etc/sysconfig/network-scripts/命令进入配置目录。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ll
total 288
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens11f0np0
-rw-r--r-- 1 root root 317 Sep 26 03:48 ifcfg-ens11f1np1
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens12f0np0
-rw-r--r-- 1 root root 317 Sep 26 03:49 ifcfg-ens12f1np1
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens13f0np0
-rw-r--r-- 1 root root 317 Oct 13 07:33 ifcfg-ens13f1np1
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens14f0np0
-rw-r--r-- 1 root root 315 Sep 26 03:51 ifcfg-ens14f1np1
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens15f0np0
-rw-r--r-- 1 root root 317 Sep 26 03:52 ifcfg-ens15f1np1
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens16f0np0
-rw-r--r-- 1 root root 317 Sep 26 03:53 ifcfg-ens16f1np1
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens17f0np0
-rw-r--r-- 1 root root 317 Sep 26 03:54 ifcfg-ens17f1np1
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens18f0np0
-rw-r--r-- 1 root root 317 Sep 26 03:54 ifcfg-ens18f1np1
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens20f0np0
-rw-r--r--. 1 root root 255 Sep 25 22:31 ifcfg-ens20f1np1
b. 执行vi ifcfg-ens11f1np1命令进行网卡配置,内容参考如下,修改完成后保存退出。
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static //配置为静态IP地址
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens11f1np1
UUID=064d8eaa-5196-466a-9dc6-d76dea3378e7
DEVICE=ens11f1np1
ONBOOT=yes //系统启动时自动激活网卡
IPADDR=20.9.21.5 //配置网卡IP地址
NETMASK=255.255.255.0 //配置子网掩码
GATEWAY=20.9.21.254 //配置网关
c. 参考上述步骤完成所有网卡的IP地址配置。
(3) 所有网卡配置完成后执行systemctl restart network命令重启网卡服务使IP生效。
6.7.4 配置网卡链路层模式
(1) 执行ibdev2netdev命令查看待配置RDMA网卡的信息。名称前缀为“mlx5”的网卡(例如mlx5_1)均为RDMA网卡,名称前缀为“ens”的网卡(例如ens13f1np1)均为为物理网卡,状态显示为“UP”的网卡表示可配置。
[root@localhost ~]# ibdev2netdev
mlx5_0 port 1 ==> ens13f0np0 (Down)
mlx5_1 port 1 ==> ens13f1np1 (Up)
mlx5_10 port 1 ==> ens18f0np0 (Down)
mlx5_11 port 1 ==> ens18f1np1 (Up)
mlx5_12 port 1 ==> ens20f0np0 (Down)
mlx5_13 port 1 ==> ens20f1np1 (Down)
mlx5_14 port 1 ==> ens15f0np0 (Down)
mlx5_15 port 1 ==> ens15f1np1 (Up)
mlx5_16 port 1 ==> ens16f0np0 (Down)
mlx5_17 port 1 ==> ens16f1np1 (Up)
mlx5_2 port 1 ==> ens14f0np0 (Down)
mlx5_3 port 1 ==> ens14f1np1 (Up)
mlx5_4 port 1 ==> ens11f0np0 (Down)
mlx5_5 port 1 ==> ens11f1np1 (Up)
mlx5_6 port 1 ==> ens12f0np0 (Down)
mlx5_7 port 1 ==> ens12f1np1 (Up)
mlx5_8 port 1 ==> ens17f0np0 (Down)
mlx5_9 port 1 ==> ens17f1np1 (Up)
(2) 分别执行ibstatus命令查看各UP状态网卡的链路层模式:
¡ 如果link_layer字段值不是Ethernet,则执行步骤(3)进行网卡模式配置。
[root@localhost ~]# ibstatus mlx5_11
Infiniband device 'mlx5_11' port 1 status:
default gid: fe80:0000:0000:0000:966d:aeff:fe8b:e430
base lid: 0x0
sm lid: 0x0
state: 4: ACTIVE
phys state: 5: LinkUp
rate: 100 Gb/sec (4X EDR)
link_layer: InfiniBand
¡ 如果link_layer字段值是Ethernet,跳过步骤(3)。
[root@localhost ~]# ibstatus mlx5_1
Infiniband device 'mlx5_1' port 1 status:
default gid: fe80:0000:0000:0000:966d:aeff:fe8b:e430
base lid: 0x0
sm lid: 0x0
state: 4: ACTIVE
phys state: 5: LinkUp
rate: 100 Gb/sec (4X EDR)
link_layer: Ethernet
(3) 查询各UP状态的网卡的链路详情,并设置网卡链路层模式。
a. 如果显示如下信息,则执行mlxconfig -d命令设置各网卡链路层模式。
# 执行mlxconfig -d mlx5_1 query | grep LINK命令显示网卡链路详情。
[root@localhost ~]# mlxconfig -d mlx5_1 query | grep LINK//以mlx5_1网卡为例
KEEP_ETH_LINK_UP_P1 True(1)
KEEP_IB_LINK_UP_P1 False(0)
KEEP_LINK_UP_ON_BOOT_P1 False(0)
KEEP_LINK_UP_ON_STANDBY_P1 False(0)
AUTO_POWER_SAVE_LINK_DOWN_P1 False(0)
KEEP_ETH_LINK_UP_P2 True(1)
KEEP_IB_LINK_UP_P2 False(0)
KEEP_LINK_UP_ON_BOOT_P2 False(0)
KEEP_LINK_UP_ON_STANDBY_P2 False(0)
AUTO_POWER_SAVE_LINK_DOWN_P2 False(0)
UNKNOWN_UPLINK_MAC_FLOOD_P1 False(0)
UNKNOWN_UPLINK_MAC_FLOOD_P2 False(0)
# 依次执行mlxconfig -d mlx5_1 set KEEP_ETH_LINK_UP_P1=1和mlxconfig -d mlx5_1 set KEEP_ETH_LINK_UP_P2=1命令设置网卡链路层模式。
[root@localhost ~]# mlxconfig -d mlx5_1 set KEEP_ETH_LINK_UP_P1=1
Device #1:
----------
Device type: ConnectX5
Name: MCX516A-CCA_Ax
Description: ConnectX-5 EN network interface card; 100GbE dual-port QSFP28; PCIe3.0 x16; tall bracket; ROHS R6
Device: mlx5_1
Configurations: Next Boot New
KEEP_ETH_LINK_UP_P1 True(1) True(1)
Apply new Configuration? (y/n) [n] : y //输入“y”
Applying... Done!
-I- Please reboot machine to load new configurations.
[root@localhost ~]# mlxconfig -d mlx5_1 set KEEP_ETH_LINK_UP_P2=1
Device #1:
----------
Device type: ConnectX5
Name: MCX516A-CCA_Ax
Description: ConnectX-5 EN network interface card; 100GbE dual-port QSFP28; PCIe3.0 x16; tall bracket; ROHS R6
Device: mlx5_1
Configurations: Next Boot New
KEEP_ETH_LINK_UP_P2 True(1) True(1)
Apply new Configuration? (y/n) [n] : y //输入“y”
Applying... Done!
-I- Please reboot machine to load new configurations.
b. 如果显示如下信息,则执行mlxconfig -d命令设置各网卡链路层模式。
# 执行mlxconfig -d mlx5_1 query | grep LINK命令显示网卡链路详情。
[root@localhost ~]# mlxconfig -d mlx5_1 query | grep LINK
PHY_COUNT_LINK_UP_DELAY DELAY_NONE(0)
LINK_TYPE_P1 ETH(2)
KEEP_ETH_LINK_UP_P1 True(1)
KEEP_IB_LINK_UP_P1 False(0)
KEEP_LINK_UP_ON_BOOT_P1 False(0)
KEEP_LINK_UP_ON_STANDBY_P1 False(0)
AUTO_POWER_SAVE_LINK_DOWN_P1 False(0)
UNKNOWN_UPLINK_MAC_FLOOD_P1 False(0)
# 执行mlxconfig -d mlx5_1 set LINK_TYPE_P1=2命令设置网卡链路层模式。
[root@localhost ~]# mlxconfig -d mlx5_1 set LINK_TYPE_P1=2
Device #1:
----------
Device type: ConnectX6
Name: MCX653105A-HDA_Ax
Description: ConnectX-6 VPI adapter card; HDR IB (200Gb/s) and 200GbE; single-port QSFP56; PCIe4.0 x16; tall bracket; ROHS R6
Device: mlx5_1
Configurations: Next Boot New
LINK_TYPE_P1 ETH(2) ETH(2)
Apply new Configuration? (y/n) [n] : y //输入“y”
Applying... Done!
-I- Please reboot machine to load new configurations.
(4) 执行reboot命令重启服务器使网卡链路层模式生效。
[root@localhost ~]# reboot
(5) 服务器重启完成后,执行ibstatus命令查看各网卡的链路层模式,确认link_layer字段信息均为Ethernet。
[root@localhost ~]# ibstatus mlx5_1
Infiniband device 'mlx5_1' port 1 status:
default gid: fe80:0000:0000:0000:966d:aeff:fe8b:e430
base lid: 0x0
sm lid: 0x0
state: 4: ACTIVE
phys state: 5: LinkUp
rate: 100 Gb/sec (4X EDR)
link_layer: Ethernet
6.7.5 配置ROCE网络
(1) 执行ibdev2netdev命令查看网卡信息。名称前缀为“mlx5”的网卡(例如mlx5_1)均为RDMA网卡,名称前缀为“ens”的网卡(例如ens13f1np1)均为为物理网卡,状态显示为“UP”的网卡表示可配置。
[root@localhost ~]# ibdev2netdev
mlx5_0 port 1 ==> ens13f0np0 (Down)
mlx5_1 port 1 ==> ens13f1np1 (Up)
mlx5_10 port 1 ==> ens18f0np0 (Down)
mlx5_11 port 1 ==> ens18f1np1 (Up)
mlx5_12 port 1 ==> ens20f0np0 (Down)
mlx5_13 port 1 ==> ens20f1np1 (Down)
mlx5_14 port 1 ==> ens15f0np0 (Down)
mlx5_15 port 1 ==> ens15f1np1 (Up)
mlx5_16 port 1 ==> ens16f0np0 (Down)
mlx5_17 port 1 ==> ens16f1np1 (Up)
mlx5_2 port 1 ==> ens14f0np0 (Down)
mlx5_3 port 1 ==> ens14f1np1 (Up)
mlx5_4 port 1 ==> ens11f0np0 (Down)
mlx5_5 port 1 ==> ens11f1np1 (Up)
mlx5_6 port 1 ==> ens12f0np0 (Down)
mlx5_7 port 1 ==> ens12f1np1 (Up)
mlx5_8 port 1 ==> ens17f0np0 (Down)
mlx5_9 port 1 ==> ens17f1np1 (Up)
(2) 配置各RDMA网卡支持RoCE模式为V2。
[root@localhost ~]# cma_roce_mode -d mlx5_1 -p 1 -m 2//以网卡mlx5_1为例
(3) 设置各UP状态物理网卡的QOS信任模式为DSCP。
[root@localhost ~]# mlnx_qos -i ens13f1np1 --trust dscp//以网卡ens13f1np1为例
(4) 设置各UP状态RDMA网卡的ROCE流量报文的ToS值为160。
[root@localhost ~]# cma_roce_tos -d mlx5_1 -t 160//以网卡mlx5_1为例
[root@localhost ~]# echo 160 > /sys/class/infiniband/mlx5_1/tc/1/traffic_class//以网卡mlx5_1为例
(5) 设置各UP状态物理网卡的CNP报文的DSCP 值以及优先级。
[root@localhost ~]# echo 48 > /sys/class/net/ens13f1np1/ecn/roce_np/cnp_dscp//以网卡ens13f1np1为例
[root@localhost ~]# echo 6 > /sys/class/net/ens13f1np1/ecn/roce_np/cnp_802p_prio//以网卡ens13f1np1为例
(6) 开启各UP状态物理网卡RoCE队列的PFC功能。
[root@localhost ~]# mlnx_qos -i ens13f1np1 -p 0,1,2,3,4,5,6,7//以网卡ens13f1np1为例
(7) 设置各UP状态物理网卡的ROCE的PFC优先级。
[root@localhost ~]# mlnx_qos -i ens13f1np1 --pfc 0,0,0,0,0,1,0,0//以网卡ens13f1np1为例
仅分布式训练网络需要安装NCCL。
请确保集群所有GPU服务器的所有RDMA网卡ROCE v2模式的INDEX值一致。
(1) 执行show_gids命令查看网卡的INDEX值。
[root@localhost ~]# show_gids
DEV PORT INDEX GID IPv4 VER DEV
--- ---- ----- --- ------------ --- ---
mlx5_0 1 0 fe80:0000:0000:0000:ba3f:d2ff:fe9d:9bc6 v1 ens13f0np0
mlx5_0 1 1 fe80:0000:0000:0000:ba3f:d2ff:fe9d:9bc6 v2 ens13f0np0
mlx5_1 1 0 fe80:0000:0000:0000:ba3f:d2ff:fe9d:9bc7 v1 ens13f1np1
mlx5_1 1 1 fe80:0000:0000:0000:ba3f:d2ff:fe9d:9bc7 v2 ens13f1np1
mlx5_1 1 2 0000:0000:0000:0000:0000:ffff:1409:1702 20.9.23.2 v1 ens13f1np1
mlx5_1 1 3 0000:0000:0000:0000:0000:ffff:1409:1702 20.9.23.2 v2 ens13f1np1
(2) 在/root目录下创建并编辑deepspeed_env的文件。
a. 执行vi命令创建文件。
[root@localhost ~]# vi .deepspeed_env
b. 通过键盘输入“i”进入编辑界面,添加内容如下。
NCCL_P2P_DISABLE=0
NCCL_DEBUG=INFO
NCCL_SOCKET_IFNAME=net
NCCL_IB_DISABLE=0
NCCL_IB_GID_INDEX=3 //对应上一步骤灰显网卡的INDEX值
NCCL_NET_GDR_READ=1
NCCL_NET_GDR_LEVEL=SYS
NCCL_IB_HCA=mlx5_1,mlx5_3,mlx5_5,mlx5_7,mlx5_9,mlx5_11,mlx5_15,mlx5_17 //RDMA网卡
c. 按键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
6.8.2 下载NCCL
登录如下网站https://developer.nvidia.com/nccl/nccl-legacy-downloads,注册账号后下载与CUDA Toolkit版本适配的NCCL,CUDA Toolkit版本请参见“6.3.1 安装CUDA Toolkit驱动”。
6.8.3 安装NCCL
将已下载的NCCL版本安装包通过FTP工具上传到服务器(例如/root目录)。
进入安装包的目录并执行如下命令进行安装NCCL。
[root@localhost ~]# rpm -ivh nccl-local-repo-rhel7-2.14.3-cuda11.7-1.0-1.x86_64.rpm
[root@localhost ~]# sudo yum install libnccl libnccl-devel libnccl-static
执行ldconfig –p命令,存在以下显示则表示NCCL已成功安装。
[root@localhost ~]# ldconfig -p | grep nccl
libnccl.so.2 (libc6,x86-64) => /usr/lib64/libnccl.so.2
libnccl.so (libc6,x86-64) => /usr/lib64/libnccl.so
仅分布式训练网络需要安装k8s-rdma-shared-dev-plugin。
6.9.1 配置ConfigMap
(1) 执行命令ibdev2netdev查询RDMA网卡和物理网卡的对应关系。
[root@localhost ~]# ibdev2netdev
mlx5_0 port 1 ==> ens13f0np0 (Down)
mlx5_1 port 1 ==> ens13f1np1 (Up)
mlx5_10 port 1 ==> ens18f0np0 (Down)
mlx5_11 port 1 ==> ens18f1np1 (Up)
mlx5_12 port 1 ==> ens20f0np0 (Down)
mlx5_13 port 1 ==> ens20f1np1 (Down)
mlx5_14 port 1 ==> ens15f0np0 (Down)
mlx5_15 port 1 ==> ens15f1np1 (Up)
mlx5_16 port 1 ==> ens16f0np0 (Down)
mlx5_17 port 1 ==> ens16f1np1 (Up)
mlx5_2 port 1 ==> ens14f0np0 (Down)
mlx5_3 port 1 ==> ens14f1np1 (Up)
mlx5_4 port 1 ==> ens11f0np0 (Down)
mlx5_5 port 1 ==> ens11f1np1 (Up)
mlx5_6 port 1 ==> ens12f0np0 (Down)
mlx5_7 port 1 ==> ens12f1np1 (Up)
mlx5_8 port 1 ==> ens17f0np0 (Down)
mlx5_9 port 1 ==> ens17f1np1 (Up)
(2) 执行mst status -v命令查询所有UP状态的网卡对应的PCI号,例如mlx5_11网卡对应的PCI号为ec:00.1。
[root@localhost ~]# mst status -v
MST modules:
------------
MST PCI module is not loaded
MST PCI configuration module loaded
PCI devices:
------------
DEVICE_TYPE MST PCI RDMA NET NUMA
ConnectX5(rev:0) /dev/mst/mt4119_pciconf7.1 ec:00.1 mlx5_11 net-ens18f1np1 1
ConnectX5(rev:0) /dev/mst/mt4119_pciconf7 ec:00.0 mlx5_10 net-ens18f0np0 1
ConnectX5(rev:0) /dev/mst/mt4119_pciconf6.1 eb:00.1 mlx5_9 net-ens17f1np1 1
ConnectX5(rev:0) /dev/mst/mt4119_pciconf6 eb:00.0 mlx5_8 net-ens17f0np0 1
ConnectX5(rev:0) /dev/mst/mt4119_pciconf5.1 a9:00.1 mlx5_17 net-ens16f1np1 1
ConnectX5(rev:0) /dev/mst/mt4119_pciconf5 a9:00.0 mlx5_16 net-ens16f0np0 1
ConnectX5(rev:0) /dev/mst/mt4119_pciconf4.1 a8:00.1 mlx5_15 net-ens15f1np1 1
ConnectX5(rev:0) /dev/mst/mt4119_pciconf4 a8:00.0 mlx5_14 net-ens15f0np0 1
...
(3) 执行命令lspci -n | grep 2e:00.0查询各RDMA网卡的厂商ID和设备ID。
[root@localhost ~]# lspci -n | grep 2e:00.0
2e:00.0 0200: 15b3:1017//厂商ID是15b3,设备ID是1017
(4) 创建并编辑configmap.yml文件。
a. 执行vi命令创建文件。
[root@localhost ~]# vi configmap.yml
b. 通过键盘输入“i”进入编辑界面,在配置文件中增加如下内容,并根据实际设备信息修改灰显部分内容。
本处以配置8张RDMA网卡为例,请根据实际配置网卡的个数进行修改。
apiVersion: v1
kind: ConfigMap
metadata:
name: rdma-devices
namespace: kube-system
data:
config.json: |
{
"periodicUpdateInterval": 300,
"configList": [
{
"resourceName": "hpc_shared_devices_ens13f1np1",//第1张物理网卡名称
"rdmaHcaMax": 1000,
"selectors": {
"vendors": ["15b3"],//第1张RDMA网卡对应的厂商ID
"deviceIDs": ["1017"],//第1张RDMA网卡对应的设备ID,通过上述步骤可查询
"ifNames": ["ens13f1np1"]//填写第1张物理网卡名称
}
},
{
"resourceName": "hpc_shared_devices_ens17f1np1",
"rdmaHcaMax": 1000,
"selectors": {
"vendors": ["15b3"],
"deviceIDs": ["1017"],
"ifNames": ["ens17f1np1"]
}
},
{
"resourceName": "hpc_shared_devices_ens12f1np1",
"rdmaHcaMax": 1000,
"selectors": {
"vendors": ["15b3"],
"deviceIDs": ["1017"],
"ifNames": ["ens12f1np1"]
}
},
{
"resourceName": "hpc_shared_devices_ens11f1np1",
"rdmaHcaMax": 1000,
"selectors": {
"vendors": ["15b3"],
"deviceIDs": ["1017"],
"ifNames": ["ens11f1np1"]
}
},
{
"resourceName": "hpc_shared_devices_ens14f1np1",
"rdmaHcaMax": 1000,
"selectors": {
"vendors": ["15b3"],
"deviceIDs": ["1017"],
"ifNames": ["ens14f1np1"]
}
},
{
"resourceName": "hpc_shared_devices_ens16f1np1",
"rdmaHcaMax": 1000,
"selectors": {
"vendors": ["15b3"],
"deviceIDs": ["1017"],
"ifNames": ["ens16f1np1"]
}
},
{
"resourceName": "hpc_shared_devices_ens15f1np1",
"rdmaHcaMax": 1000,
"selectors": {
"vendors": ["15b3"],
"deviceIDs": ["1017"],
"ifNames": ["ens15f1np1"]
}
},
{
"resourceName": "hpc_shared_devices_ens18f1np1",
"rdmaHcaMax": 1000,
"selectors": {
"vendors": ["15b3"],
"deviceIDs": ["1017"],
"ifNames": ["ens18f1np1"]
}
}
]
}
c. 按键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
(5) 执行kubectl apply -f命令部署configmap.yml。
[root@localhost ~]# kubectl apply -f configmap.yml
configmap/rdma-devices created
6.9.2 部署k8s-rdma-shared-dev-plugin
(1) 在GPU服务器上执行docker pull命令获取镜像文件。
[root@localhost ~]# docker pull mellanox/k8s-rdma-shared-dev-plugin:latest
latest: Pulling from mellanox/k8s-rdma-shared-dev-plugin
a9e23b64ace0: Pull complete
38b71301a1d9: Pull complete
39a1f5c62989: Pull complete
2e15b5a001c5: Pull complete
Digest: sha256:fd4d86864647270720354d247441f97deb76caf258869f1148d2bb6d0bf90754
Status: Downloaded newer image for mellanox/k8s-rdma-shared-dev-plugin:latest
docker.io/mellanox/k8s-rdma-shared-dev-plugin:latest
(2) 在任一个Master节点上执行wget命令获取daemonset.yaml,其他节点无需重复执行。
[root@localhost ~]# wget https://raw.githubusercontent.com/Mellanox/k8s-rdma-shared-dev-plugin/master/deployment/k8s/base/daemonset.yaml
--2023-11-08 12:49:36-- https://raw.githubusercontent.com/Mellanox/k8s-rdma-shared-dev-plugin/master/deployment/k8s/base/daemonset.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.109.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1344 (1.3K) [text/plain]
Saving to: ‘daemonset.yaml’
daemonset.yaml 100%[===================================================================================================
2023-11-08 12:49:36 (227 MB/s) - ‘daemonset.yaml’ saved [1344/1344]
(3) 在任一个Master节点上执行kubectl apply -f命令部署daemonset.yaml,其他节点无需重复执行。
[root@localhost ~]# kubectl apply -f daemonset.yaml
(4) 执行如下命令查询rdma-shared-dp-ds pod状态,如果均为Running,表示部署成功。
[root@localhost ~]# kubectl get pod -A | grep rdma
kube-system rdma-shared-dp-ds-5qznm 1/1 Running 0 22h
kube-system rdma-shared-dp-ds-g52zx 1/1 Running 0 22h
kube-system rdma-shared-dp-ds-m2nfh 1/1 Running 0 22h
kube-system rdma-shared-dp-ds-wb5c9 1/1 Running 0 22h
仅分布式训练网络需要安装nv_peer_memory。
6.10.1 下载nv_peer_memory
登录https://github.com/Mellanox/nv_peer_memory网站,单击导航栏中[Code -> Download ZIP]菜单项下载nv_peer_memory安装包。
图6-6 下载nv_peer_memory
6.10.2 安装nv_peer_memory
(1) 配置本地YUN源,详细步骤请参见“5.1.2 1. 配置本地YUM源”。
(2) 执行yum命令安装依赖包。
[root@localhost ~]# yum install rpm-build
(3) 将nv_peer_memory安装包通过FTP等工具上传到服务器(例如/root目录)。
(4) 进入目录并执行unzip命令解压缩安装包。
[root@localhost ~]# unzip nv_peer_memory-master.zip
(5) 执行cd命令进入安装包解压缩后的目录并执行命令安装nv_peer_memory。
[root@localhost ~]# cd nv_peer_memory-master/
[root@localhost nv_peer_memory-master]# ./build_module.sh
[root@localhost nv_peer_memory-master]# rpmbuild --rebuild /tmp/nvidia_peer_memory-1.3-0.src.rpm
[root@localhost nv_peer_memory-master]# rpm -ivh /root/rpmbuild/RPMS/x86_64/nvidia_peer_memory-1.3-0.x86_64.rpm
(6) nv_peer_memory安装完成后,执行如下命令启用GPU服务器之间的RDMA功能,允许GPU服务器直接进行内存互访。
[root@localhost ~]# sudo modprobe nv_peer_mem
(7) 检查GPU服务器之间的RDMA功能是否启用成功,如果显示包含“nv_peer_mem 16384 0”,则表示启用成功。
[root@localhost ~]# lsmod | grep nv
nvidia_uvm 1249280 0
nv_peer_mem 16384 0
ib_core 495616 9 rdma_cm,ib_ipoib,nv_peer_mem,iw_cm,ib_umad,rdma_ucm,ib_uverbs,mlx5_ib,ib_cm
nvidia_drm 61440 0
nvidia_modeset 1241088 1 nvidia_drm
nvidia 56295424 447 nvidia_uvm,nv_peer_mem,nvidia_modeset
drm_kms_helper 286720 5 drm_vram_helper,ast,nvidia_drm
drm 638976 8 drm_kms_helper,drm_vram_helper,ast,nvidia,drm_ttm_helper,nvidia_drm,ttm
nvme 49152 4
nvme_core 131072 5 nvme
t10_pi 16384 2 sd_mod,nvme_core
仅分布式训练网络需要配置多节点互连。
6.11.1 安装pdsh工具
(1) 向技术支持获取安装包pdsh-2.29.tar.bz2。
(2) 将安装包通过FTP工具上传到所有GPU服务器上(例如/root目录)。
(3) 执行tar命令解压缩安装包。
[root@localhost ~]# tar -xvf pdsh-2.29.tar.bz2
pdsh-2.29/
pdsh-2.29/config.h.in
...
(4) 执行cd命令,进入解压缩后的文件夹路径.
[root@localhost ~]# cd pdsh-2.29/
(5) 依次执行如下命令安装pdsh工具。
[root@localhost pdsh-2.29]# ./configure
[root@localhost pdsh-2.29]# make
[root@localhost pdsh-2.29]# make install
(6) 执行pdsh -V命令查看版本信息,如果出现以下显示信息说明安装成功。
[root@localhost pdsh-2.29]# pdsh -V
pdsh-2.29
rcmd modules: rsh,exec (default: rsh)
misc modules: (none)
(1) 在所有GPU服务器上执行如下命令生成SSH密钥,过程中依次按Enter键完成配置。
[root@localhost ~]# ssh-keygen -t rsa//按Enter键继续
Generating public/private rsa key pair.//按Enter键继续
Enter file in which to save the key (/root/.ssh/id_rsa)://按Enter键保存SSH密钥
(2) 在GPU服务器上拷贝SSH密钥。
a. 执行cat /etc/hosts命令查看集群节点信息,本节以3机集群部署为例。
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.114.164.25 matrix-apiserver
10.114.164.23 matrix-node2
10.114.164.25 matrix-node3
10.114.164.22 matrix-node1
10.114.164.22 matrix-registry.h3c.com
10.114.164.22 etcd.matrix
b. 在各GPU服务器上分别执行如下命令拷贝SSH密钥。
[root@localhost ~]# ssh-copy-id root@matrix-node1
[root@localhost ~]# ssh-copy-id root@matrix-node2
[root@localhost ~]# ssh-copy-id root@matrix-node3
[root@localhost ~]# ssh-copy-id root@localhost
(3) 在各GPU服务器/root目录下创建并编辑hostfile文件。
a. 执行vi命令创建文件。
[root@localhost ~]# vi hostfile
b. 通过键盘输入“i”进入编辑界面,输入如下内容。
matrix-node1 slots=8//matrix-node1表示集群节点的名称,slot表示服务器的GPU显卡总个数
matrix-node2 slots=8
matrix-node3 slots=8
c. 按键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
(4) 确认各服务器之间可以实现免密互访。例如在matrix-node1所在服务器上执行ssh root@matrix-node2命令可以成功登录到matrix-node2服务器上,无需输入密码,则表示免密登录设置成功。
[root@localhost ~]# ssh root@matrix-node2
3机集群部署模式和3+N机集群部署模式下,仅支持NFS文件存储方式。在部署基础安装包之前,必须配置NFS存储服务器。单机部署模式下,仅支持本地磁盘(local)文件存储方式,不涉及本配置。
· 操作系统版本不同,NFS存储服务器配置步骤有所不同。本节仅以操作系统为centos7.9的服务器为例。
· NFS存储空间大小推荐配置为3T,预留磁盘空间分配详情见表4-2。
(1) 请确认作为NFS存储服务端的服务器已经安装了centos7.9的操作系统。
[root@NFSServer ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
(2) 执行yum install nfs-utils rpcbind命令安装软件包nfs-utils和rpcbind。
[root@NFSServer ~]# yum install nfs-utils rpcbind
(3) 依次执行mkdir命令和chmod 755命令创建共享目录linseerFileShare并添加读写权限。
[root@NFSServer ~]# mkdir /linseerFileShare
[root@NFSServer ~]# chmod 775 /linseerFileShare
(4) 创建并编辑/etc/exports配置文件。
a. 执行vi命令创建文件。
[root@NFSServer ~]# vi /etc/exports
b. 通过键盘输入字符“i”进入编辑界面,输入如下内容:
/linseerFileShare *(rw,sync,insecure,no_subtree_check,no_root_squash)
c. 按键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
(5) 执行systemctl start命令启动RPC服务,并执行systemctl enable命令设置开机自动启动RPC服务。
[root@NFSServer ~]# systemctl start rpcbind//rpcbind为服务名称
[root@NFSServer ~]# systemctl enable rpcbind//rpcbind为服务名称
(6) 执行systemctl start命令启动NFS服务,并执行systemctl enable命令设置开机自动启动NFS服务。
[root@NFSServer ~]# systemctl start nfs//nfs为服务名称
[root@NFSServer ~]# systemctl enable nfs//nfs为服务名称
(7) 执行systemctl status命令查看RPC服务状态为active。
[root@NFSServer ~]# systemctl status rpcbind
● rpcbind.service - RPC Bind
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-11-07 22:10:32 CST; 5 days ago
TriggeredBy: ● rpcbind.socket
Docs: man:rpcbind(8)
Main PID: 5336 (rpcbind)
Tasks: 1 (limit: 3355442)
Memory: 2.5M
CGroup: /system.slice/rpcbind.service
└─ 5336 /usr/bin/rpcbind -w -f
11月 07 22:10:32 NFSServer systemd[1]: Starting RPC Bind...
11月 07 22:10:32 NFSServer systemd[1]: Started RPC Bind.
(8) 执行systemctl status命令查看NFS服务状态为active。
[root@NFSServer ~]# systemctl status nfs
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: active (exited) since Tue 2023-11-07 22:10:46 CST; 5 days ago
Process: 5870 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Process: 5877 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
Main PID: 5877 (code=exited, status=0/SUCCESS)
11月 07 22:10:46 NFSServer systemd[1]: Starting NFS server and services...
11月 07 22:10:46 NFSServer systemd[1]: Finished NFS server and services.
(9) 执行showmount -e命令查看是否已正常加载本地共享目录,以下为本地共享目录加载成功后的显示信息,如果没有该显示信息,请执行exportfs -a命令重新加载本地共享目录后再次查看。
[root@NFSServer ~]# showmount -e
Export list for NFSServer:
/linseerFileShare *
(10) 执行systemctl stop firewalld命令关闭防火墙。
[root@NFSServer ~]# systemctl stop firewalld
(11) 执行systemctl disable firewalld命令设置开机时禁用防火墙。
[root@NFSServer ~]# systemctl disable firewalld
(1) 任意选择一台操作系统为centos7.9的服务器作为NFS客户端,确保该服务器和待验证配置的NFS存储服务端网络互通。
(2) 执行yum install nfs-utils命令安装软件包nfs-utils。
[root@localhost ~]# yum install nfs-utils
(3) 安装完成后执行systemctl start nfs命令启动NFS服务。
[root@localhost ~]# systemctl start nfs
(4) NFS客户端可以使用IP地址或域名访问NFS服务端。
¡ 使用域名访问NFS服务端,请确保已正确配置DNS服务器。
# 执行vi命令创建文件/etc/resolv.conf。
[root@localhost ~]# vi /etc/resolv.conf
# 通过键盘输入字符“i”进入编辑界面,输入如下内容:
nameserver NFSServer
# 按键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
# 执行ping NFSServer命令可以正常通信。
[root@localhost ~]# ping NFSServer
PING NFSServer (10.114.164.43) 56(84) bytes of data.
64 bytes from NFSServer (10.114.164.43): icmp_seq=1 ttl=64 time=0.203 ms
64 bytes from NFSServer (10.114.164.43): icmp_seq=2 ttl=64 time=0.908 ms
64 bytes from NFSServer (10.114.164.43): icmp_seq=3 ttl=64 time=0.272 ms
¡ 使用IP地址访问NFS服务端,保证NFS客户端和服务端可以ping通即可
(5) 在NFS客户端上执行mkdir命令创建目录 /nfsclient,并执行mount命令进行挂载。
[root@localhost ~]# mkdir /nfsclient
[root@localhost ~]# mount NFSServer:/linseerFileShare /nfscelint //NFSServer为NFS服务端的域名
(6) 执行df -h命令可查看已成功挂载目录。
[root@localhost ~]# df -h /nfsclient
NFSServer:/linseerFileShare 50G 1.3G 49G 3% /nfsclient
(7) 执行vi命令创建文件。
[root@localhost ~]# vi /nfsclient/test.txt
(8) 键盘上的<ESC>键,再输入“:wq”,退出配置并保存文件。
:wq
(9) 在NFS服务器端,执行cd命令进入/linseerFileShare目录,通过ls命令可查看NFS客户端创建的test.txt文件,NFS客户端可以正常读写共享目录。
[root@NFSServer ~]# cd /linseerFileShare
[root@NFSServer linseerFileShare]# 1s
总用量0
-rw-r--r--. 1 root root 0 9月5 16:36 test.txt
(10) 验证完成后,在NFS客户端执行umount命令取消目录挂载。
[root@localhost ~]# umount /nfsclient/
在部署LinSeer组件包时,根目录需要预留500G磁盘空间。
(1) 在浏览器中输入Matrix的登录地址,进入如图7-1所示的登录页面。登录地址格式为:https://ip_address:8443/matrix/ui/。其中ip_address为Master节点IP地址,8443为缺省端口号。
采用集群部署模式时,未部署集群之前,ip_address可以是任意一个规划为Master节点的IP地址。
图7-1 Matrix登录界面
(2) 输入用户名和密码(默认用户名为admin,密码为Pwd@12345,若安装操作系统设置过密码,则按设置的填写)后,单击<登录>按钮进入概览页面。
图7-2 概览页面
对于较大的组件安装包,可以通过FTP等方式,上传到集群各个Master节点的/opt/matrix/app/install/packages目录下,然后在Matrix页面进行解析完成安装部署。
(1) 在概览页面选择顶部“部署”页签,单击左侧[应用]菜单项进入部署应用页面,如图7-3所示。
图7-3 Matrix集群应用部署页面
(2) 单击<上传>按钮,弹出部署应用对话框。
图7-4 上传安装包页面
(3) 在部署应用对话框中选择LinSeer安装包,并单击<上传>按钮上传安装包。
图7-5 上传安装包页面
(1) 如图7-6所示,选择已上传的LinSeer安装包,单击<下一步>按钮,开始解析安装包。
请按如下顺序解析组件安装包:Base->Inference->Training。
图7-6 解析安装包
LinSeer不同安装包的部署步骤有所不同。
(1) 安装包解析完成后,系统自动选中解析后的组件包,如图7-7所示,单击<下一步>按钮跳过配置共享存储和配置数据库两个步骤,进入配置参数页面。
(2) 在配置参数页面,选择“配置项”区域中的“DataStoreConfig”选项,单击“配置项参数”编辑按钮,修改共享存储的配置项参数。
¡ 对于单机部署模式:
- FileSystemlp:无需修改,保持默认配置即可。
- fileSystemPath:请确认系统默认路径与“4.3.2 磁盘分区”本地预留磁盘空间分区路径(例如/linseerFileShare)是否一致。如果不一致,请根据实际环境修改。
¡ 对于3机集群部署模式和3+N机集群部署模式:
- 将FileSystemlp修改为NFS服务端IP地址或域名。
- 将FileSystemPath:修改为“6.12.1 配置NFS存储服务端”中设置的NFS存储服务端共享路径(例如/linseerFileShare)。
请确保集群服务器节点与NFS服务端网络能正常通信。
图7-8 配置参数
(3) 编辑完成后,单击<部署>按钮,等待基础安装包部署完成,在弹出的对话框中单击<确定>按钮即可。
图7-9 部署LinSeer基础安装包
(1) 安装包解析完成后,系统自动选中解析后的组件包,如图7-10所示,单击<下一步>按钮部署LinSeer。
(2) 连续单击<下一步>按钮跳过中间部署步骤。
(3) 如图7-11所示,单击<部署>按钮,等待安装包部署完成即可。
图7-11 部署LinSeer其他安装包
待所有组件均部署完成后,在服务器上执行kubectl get pod -n linseer-service命令查看各组件的Pod状态均为“Running”,表示系统已正常运行。
[root@h3c7066 ~]# kubectl get pod -n linseer-service
NAME READY STATUS RESTARTS AGE
dashboard-adapter-7469bcdd4c-wcph9 1/1 Running 1 11d
exporter-kernel-kaf-b54df8d78-wgmgk 1/1 Running 5 11d
exporter-redis-d79b6dcff-cxlx6 1/1 Running 1 11d
exporter-zookeeper-5b659d5589-bmw5n 1/1 Running 1 11d
filebeat-jt2wk 1/1 Running 1 11d
inference-manager-deployment-7ff7c4f96b-z59vf 1/1 Running 1 11d
itom-central-login-9bsgn 1/1 Running 4 11d
itom-central-redis-master-556b976fc4-t642t 1/1 Running 1 11d
itom-central-ucd-dztw2 1/1 Running 5 11d
k-commonresource-ui-74794945d-brbdk 1/1 Running 4 11d
k-confcenter-rs-6c964c4d8f-c2gks 1/1 Running 5 11d
k-confcenter-ui-74b8c4974b-tdfxs 1/1 Running 1 11d
k-framework-rs-c47zp 1/1 Running 3 11d
k-framework-ui-zb5r4 1/1 Running 1 11d
...
(1) 在浏览器中输入LinSeer的登录地址“http://ip_address:30000”,其中ip_address为北向业务虚IP,进入LinSeer登录页面,如图7-12所示。
图7-12 Linseer登录页面
(2) 输入用户和密码(默认用户名admin,密码Pwd@12345),单击<立即登录>按钮,进入LinSeer系统主页,如图7-13所示。
图7-13 Linseer系统主页
(1) 登录服务器,将模型包放在集群任意Master节点上的目录下(例如/root)。
(2) 执行unzip命令进行解压缩。
[root@localhost ~]# unzip -d . LinSeer_Model_Lite_E0108_x86.zip
(3) 执行ll –a命令查看解压缩后的目录。模型包解压缩完成后,会产生2个文件(安装脚本install.sh和模型描述文件model.json)和1个模型文件夹LinSeer-Lite-v1.0.0。
[root@localhost ~]# ll -a
总用量 22683520
-rw-r--r-- 1 root root 3389 10月 21 18:23 install.sh
drwxr-xr-x 2 root root 4096 10月 21 18:29 LinSeer-Lite-v1.0.0
-rw-r--r-- 1 root root 23227895742 10月 21 21:17 LinSeer_Model_Lite_E0108_x86.zip
-rw-r--r-- 1 root root 1077 10月 21 18:23 model.json
(4) 执行sh install.sh命令安装LinSeer模型包。
[root@localhost ~]# sh install.sh
+++ dirname install.sh
++ cd .
++ pwd
+ cur_path=/root/0108model/Model
+ model_file=LinSeer-v1.0.0
+ main
++ date
+ echo Thu Nov 2 04:28:06 AM CST 2023 'install model start --'
…
+ echo Thu Nov 2 05:22:51 AM CST '2023 success to install model!'
Thu Nov 2 05:22:51 AM CST 2023 success to install model!
+ '[' true '!=' true ']'
+ break
++ date
+ echo Thu Nov 2 05:22:51 AM CST 2023 'end registry model--'
Thu Nov 2 05:22:51 AM CST 2023 end registry model—
(5) 在LinSeer系统页面,单击“模型”页签,可以查看已安装成功的模型。
关于License Server服务部署的详细介绍,请参见《H3C License Server安装指导》。
如果LinSeer上安装了训练组件包,且有训练任务正在进行,请在卸载LinSeer组件前终止训练任务。
卸载组件有两种操作方式:一键卸载所有组件和依次卸载单个组件。
(1) 在浏览器中输入Matrix的登录地址进入登录页面,输入用户名和密码,单击<登录>按钮登录Matrix。
(2) 如图9-1所示,选择[应用]菜单项打开应用列表,单击“LinSeer”操作行上的按钮,在操作提示框中单击<确定>按钮完成卸载。
(1) 在浏览器中输入Matrix的登录地址进入登录页面,输入用户名和密码,单击<登录>按钮登录Matrix。
(2) 如图9-2所示,选择[应用]菜单项打开应用列表,单击“LinSeer”下挂的各个组件操作行的按钮,在操作提示框中单击<确定>按钮完成卸载。按照training>Inference>management>kernel>portal的顺序依次卸载各个组件。
在服务器上执行lspci | grep -i nvidia命令查询服务器上的GPU形态:
· 如果显示信息包含“Bridge”信息,表示GPU通过nvlink桥互连,即服务器GPU为模组形态。
· 如果显示信息不包含“Bridge”信息,表示GPU通过PCIe桥互连,即服务器GPU为PCIe板卡形态。
[root@localhost ~]# lspci | grep -i nvidia
1c:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
1d:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
1e:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
1f:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
20:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
21:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1)
25:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
2b:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
63:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
68:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
9f:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
a4:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
e2:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
e8:00.0 3D controller: NVIDIA Corporation GA100 [A100 SXM4 80GB] (rev a1)
安装H3Linux2.0.2操作系统时,各主要磁盘分区作用如下:
· /:Matrix使用,包括K8s、Harbor和各组件上传的安装包,该分区的容量和各组件上传的镜像大小有关,需要确定各组件占用的磁盘容量大小,在此基础上扩缩容。
· /var/lib/docker/:与Docker的运行相关,需要根据实际运行情况确定容量大小。
· /var/lib/ssdata/:供PXC、Kafka、ZooKeeper使用。
· 预留磁盘空间:推荐预设容量为3TB。
¡ 单机部署模式下,服务器需要额外预留本地磁盘空间,本处以/linseerFileShare为例介绍。/linseerFileShare供推理、训练组件使用,作为数据管理、模型仓库、模型评估、模型训练和知识库挂载等业务数据的共享目录。
¡ 3机集群部署模式、3+N机集群部署模式下,使用外置的NFS存储空间作为服务器预留磁盘空间。
部署百业灵犀大模型,需要使用NVIDIA显卡驱动。安装NVIDIA显卡驱动前必须禁用Linux自带的显卡驱动Nouveau,否则会提示显卡驱动冲突。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!