创建边缘资源池
边缘部署是指将模型部署到用户的边缘设备上,这些设备通常是用户自行采购的服务器,通过ModelArts服务纳管为边缘资源池,然后利用盘古大模型服务将模型部署到这些边缘资源池中。
ModelArts边缘节点是ModelArts平台提供的用于部署边缘服务的终端设备。创建边缘资源池之前需先创建ModelArts边缘节点。节点创建完成后,同步下载证书和边缘Agent固件,及时将固件复制到节点上,并执行注册命令完成设备的注册。
创建边缘资源池的流程见表1。
操作步骤 |
说明 |
---|---|
说明创建边缘资源池的前期准备。 |
|
说明注册边缘资源池节点步骤。 |
|
说明搭建边缘服务器集群的步骤。 |
|
说明安装Ascend插件指导。 |
|
说明创建负载均衡所需证书步骤。 |
|
说明创建负载均衡步骤。 |
- ModelArts Studio大模型开发平台当前仅部分模型支持边缘部署,详见《产品介绍》“模型能力与规格”章节。
- 使用边缘部署功能需要在ModelArts服务中开通“边缘资源池”功能,该功能为白名单特性,需要联系ModelArts客服进行开通。
- 创建边缘资源池操作较为复杂,建议联系盘古客服进行协助。
准备工作
本章节的边缘部署操作以largemodel集群为例,示例集群信息如下表。
集群名 |
节点类型 |
节点名 |
规格 |
备注 |
---|---|---|---|---|
largemodel |
controller |
ecs-edge-XXXX |
鲲鹏通用计算型|8vCPUs|29GiB|rc3.2xlarge.4镜像 EulerOS 2.9 64bit with ARM for Tenant 20230728 base 2.9.15 |
公网IP:100.85.220.207 root密码:/ CPU架构:aarch64(登录设备,执行arch命令查看) |
worker |
bms-panguXXXX |
CPU:Kunpeng 内存:24*64GB DDR4 RAM(GB) 本地磁盘:3*7.68TB NVMe SSD 扩展配置:2*100GE+8*200GE 类型:physical.kat2e.48xlarge.8.313t.ei.pod101 euler2.10_arm_sdi3_1980b_hc_sdi5_b080_20230831v2 |
公网IP:100.85.216.151 root密码:/ CPU架构:aarch64(登录设备,执行arch命令查看) |
- 依赖包下载。
选择对应cpu架构下载,docker版本选在19.0.3+。
按照对应cpu架构下载二进制文件以及air-gap镜像。
- npu驱动和固件安装。
执行命令npu-smi info查看驱动是否已安装。如果有回显npu卡信息,说明驱动已安装。
详情请参见昇腾官方文档。
- hccn too网卡配置。
- 执行如下命令,查看是否有回显网卡信息。如果有,则说明网卡已经配置,否则继续操作下面步骤。
cat /etc/hccn.conf
- 执行如下命令,查看npu卡数。
npu-smi info
- 执行如下命令(地址自行配置):
hccn_tool -i 0 -ip -s address 192.168.0.230 netmask 255.255.255.0 hccn_tool -i 1 -ip -s address 192.168.0.231 netmask 255.255.255.0 hccn_tool -i 2 -ip -s address 192.168.0.232 netmask 255.255.255.0 hccn_tool -i 3 -ip -s address 192.168.0.233 netmask 255.255.255.0 hccn_tool -i 4 -ip -s address 192.168.0.234 netmask 255.255.255.0 hccn_tool -i 5 -ip -s address 192.168.0.235 netmask 255.255.255.0 hccn_tool -i 6 -ip -s address 192.168.0.236 netmask 255.255.255.0 hccn_tool -i 7 -ip -s address 192.168.0.237 netmask 255.255.255.0
- 执行命令cat /etc/hccn.conf,确保有如下回显网卡信息,则配置完成。
- 执行如下命令,查看是否有回显网卡信息。如果有,则说明网卡已经配置,否则继续操作下面步骤。
- 配置NFS网盘服务。
步骤1:注册边缘资源池节点
- 进入ModelArts服务,选择所需空间。
- 在左侧列表中选择“资源管理 > 边缘资源池 Edge”,在“节点”页签中,单击“创建”。
图1 创建边缘资源池节点
- 在“创建边缘节点”页面中,填写节点名称,配置AI加速卡与日志信息。
- 如果节点有npu设备需选择“AI加速卡 > Ascend”,并选择加速卡类型。
- 如果节点没有加速卡,则选择“AI加速卡 > 不使用”。
图2 配置边缘节点参数 - 基本信息配置完成后,单击“确定”,单击“立即下载”,下载设备证书和Agent固件,并将设备证书与Agent固件分别重命名为license.tgz、hilens-agent.tgz。
图3 下载所需证书
步骤2:搭建边缘服务器集群
- 执行如下命令,生成docker证书。
bash cluster_install-ascend.sh generate_docker_cert --pkg-path=/home/hilens/pkgs
说明:
请注意,该命令只需执行一次,如果已有相关证书,请跳过该步骤。
- 基于准备工作与步骤1:注册边缘资源池节点,按照以下目录结构存放下载文件,注意修改下载文件的命名。其中,docker下的certs证书会自动生成,一般无需修改。
pkgs // 包目录,用户自行命名 docker docker.tgz // docker 二进制文件,要求版本>19.0.3 certs // 使用generate命令生成的证书,指定--pkg-path后会自动创建到certs目录 ca.crt server.crt server.key k3s k3s // k3s可执行文件 agent images k3s-airgap-images-[arm64|amd64].tar.gz //k3s离线镜像 hilens-agent hilens-agent.tgz // hilens agent固件包 license.tgz // hilens 设备license
- 工作节点执行命令如下:
bash -x cluster_install-ascend.sh --pkg-path=/home/hilens/pkgs --node-type=worker --host-ip=192.168.0.209
主控节点执行命令如下:
bash -x cluster_install-ascend.sh --pkg-path=/home/hilens/pkgs --node-type=controller --host-ip=192.168.0.150
- cluster_install-ascend.sh脚本主要用于安装docker、hdad和k3s,请联系盘古客服获取。
- pkg-path是步骤2中整合的安装包文件目录。
- host-ip是设备在集群中的ip,一般为内网ip。
- node-type是集群节点类型。其中,worker表示工作节点,controller表示主控节点。
- 在服务器执行如下命令,判断docker是否安装成功。
systemctl status docker
- 在服务器执行如下命令,判断edge agent是否安装成功。
hdactl info
- 配置NFS网盘服务。
- 安装NFS服务
该步骤需要设备联网下载软件依赖包。
- Ubuntu系统
在线安装:
sudo apt install nfs-kernel-server
- Euler OS系统
在线安装:
sudo yum install nfs-utils
说明:
若需离线安装,请联系盘古客服。
- 防火墙需要打开rpc-bind和nfs的服务(可选):
sudo firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs} sudo firewall-cmd --reload
- Ubuntu系统
- 创建网盘共享目录
该路径的存储空间能够存储大模型文件。此处设置/var/docker/hilens作为网盘根目录 ,将会在容器里访问该路径。执行:
sudo mkdir -p /var/docker/hilens
该路径的访问权限需设置为:1000:100(与/etc/exports配置保持一致),执行:
sudo chmod 750 /var/docker/hilenschown -R 1000:100 /var/docker/hilens
查看权限,执行:
ls -l /var/docker | grep hilens
- 添加网盘访问权限
配置nfs-server访问白名单和网盘共享文件的路径。执行:
sudo vim /etc/exports
添加如下配置:
/var/docker/hilens 172.xxx.0.0/24(rw,no_all_squash,anonuid=1000,anongid=100,fsid=0)
172.xxx.0.0/24为集群内网IP网段(登录主控节点,使用hdactl info命令查看IP地址。比如查得IP地址为172.16.0.22,可配置为172.16.0.0/24网段)。
其中,
- /var/docker/hilens:网盘根目录路径。
- 192.168.0.0/24:客户端IP范围,表示IP在192.168.0.0/24范围的所有节点,都可以访问 /var/docker/hilens 。* 代表所有,即没有限制。也可以填写具体某个节点的IP。
- rw:权限设置,可读可写。
- anonuid:为映射的匿名用户id,anongid为映射的匿名用户组,也就是挂载进容器后,在容器中看到的文件属主。
- no_all_squash:可以使用普通用户授权。
执行:wq命令保存设置后,刷新nfs配置。执行:
exportfs -rv
- 启动NFS和rpcbind
设置服务开机启动、启动服务:
systemctl enable nfs-server && systemctl enable rpcbind && systemctl start rpcbind nfs-server
执行如下命令,验证以上配置内容是否正确。如下图,表示配置正确,即NFS服务安装成功。
showmount -e localhost
- 验证NFS配置(可选)
在非NFS服务节点创建目录:
sudo mkdir ~/data
执行挂载:
sudo mount -t nfs 192.168.xx.xxx:/var/docker/hilens ~/data
挂载后,可以使用以下命令查看:
mount
回显如下,则成功:
... ... 192.168.0.150:/var/docker/hilens on ~/data type nfs4
- 测试NFS功能
在客户端向共享目录创建一个文件:
cd ~/data sudo touch a
在NFS服务端192.168.0.150查看所创建的文件:
cd /var/docker/hilens ls -l
- yum源配置
如果yum install使用正常,请忽略该章节。
- 配置yum内源地址
- 备份yum配置
mkdir -p /etc/yum.repos.d/bak/ mv -f /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
- x86 eulerOS配置
cat> /etc/yum.repos.d/his-mirrors.repo<<"EOF" [EulerOS_2.10_base] name=EulerOS_2.10_base baseurl=http://his-mirrors.huawei.com/install/euleros/2.10/os/x86_64/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EulerOS gpgcheck=0 enabled=1 [EulerOS_2.10_devel_tool] name=EulerOS_2.10_devel_tool baseurl=http://his-mirrors.huawei.com/install/euleros/2.10/devel_tools/x86_64/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EulerOS gpgcheck=0 enabled=1 [EulerOS_2.10_updates] name=EulerOS_2.10_updates baseurl=http://his-mirrors.huawei.com/install/euleros/2.10/updates/x86_64/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EulerOS gpgcheck=0 enabled=1 EOF yum clean all && yum makecache > /dev/null 2>&1
- arm eulerOS系统配置
cat> /etc/yum.repos.d/his-mirrors.repo<<"EOF" [EulerOS_2.10_base] name=EulerOS_2.10_base baseurl=http://his-mirrors.huawei.com/install/euleros/2.10/os/aarch64/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EulerOS gpgcheck=1 enabled=1 [EulerOS_2.10_devel_tool] name=EulerOS_2.10_devel_tool baseurl=http://his-mirrors.huawei.com/install/euleros/2.10/devel_tools/aarch64/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EulerOS gpgcheck=1 enabled=1 [EulerOS_2.10_updates] name=EulerOS_2.10_updates baseurl=http://his-mirrors.huawei.com/install/euleros/2.10/updates/aarch64/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EulerOS gpgcheck=1 enabled=1 EOF yum clean all && yum makecache > /dev/null 2>&1
- 配置DNS
cat >> /etc/resolv.conf<<"EOF" nameserver 10.189.32.59 nameserver 10.72.55.103 nameserver 10.98.48.39 EOF
证书一般自动下载,但是有遇到有的服务器没有自动安装或者已经安装有问题的情况下,直接复制执行即可。
cat > /etc/pki/rpm-gpg/RPM-GPG-KEY-EulerOS <<"EOF" -----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFx4vK4BCACrq4PA8EZEr5XH08bfh9rlms+QDZsJYhqqIXWx4qsZ8dAqdWLH O2Dm0HYk17xVwTZjXUYH9rz1gn2bGa5At4xTpH7FHMDpNG8DfwC6UpMKEmGGvy/S OfL4fl6Yq2tCHAx3LrHXO9PGigafz5XMDtBySI4ixOR4M/w8IaIPEyN0BfGC6DQ5 PZlXMPDOc5VW1NhxwH0u0yHH1lLITKBAEifTQa8+3YZY54PWvBbYxOcCCS63FOTn pk0wWuwm2JqozDBxV/w8Ty0c25+y4FTiUGzOj2e/3K1ls+Zs/tTxf8asKpFH/dYN ffXmdkPLDCHRGkTyrLPdghoFmVg4XhrOhsf/ABEBAAG0LkV1bGVyT1MgKEV1bGVy T1MgMi4wIFNQOCkgPGV1bGVyb3NAaHVhd2VpLmNvbT6JAVQEEwEIAD4WIQS4wSv5 6CWqOEUVIHBxp+kP4ux1vAUCXHi8rgIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgID AQIeAQIXgAAKCRBxp+kP4ux1vN/UB/4jy2kRiFznSXfWz5SX0szLOf1FgDssdRZG xASHonAJqrV19mkG2pNTkgip9LZQsCqLbxj5FV+TMm1o+6jubd9qRPePlV2Tpc0T m3cDmpcZbW/XrFh4dLdN644TwKDAPcK8TK/wOepFVtjhx1Qc8o+8nuoFhmsMoKkf AA1DYDDCZbpbgMQwMV3yKh002CFRlCnVMylqOi8U+FrYfphnsYfujXpKu9g+FmO6 ju0xVhxyFOVCEicamKiel3ZS9z06+PIFL3KP/nKC7pu0tfaxogJjCh8y+ZIF/FJU ygHpZYKQJyJNO8Do7AucudbruOxqGqhD2BIBtX1JNP/hkKj4w+OJuQENBFx4vK4B CAD1SYnEWn0mf3umbucovVYHaywJqhErB3ia+Ykq3InKvIORf1reiCRvVuse2wZr cnPWEKeRE7tTEIZ5hCuLYQzaqngqVkwqLbRR6vtxiDhTWNgJH9+GuokgjotQ3/7T AXH7AwG57OPp6vvaiazCDjhy5t3Vr1snWkiwWkJR2GFRkuwKu7FDLjc1n2dx4zLF zRZJa5TTAR1zrHWgVwkLxgq0+eJHWq7eHFw1SBjmc4Vs4z/QI+Q+3rkVBiqCmr11 /XQz9ZePdOl/8fCuNh4l480c7AFlFt8IvKBP6Kh+jShxbED2NJpRV04MhV6SyA69 ixd/VKtPJMRcRg3phyuuCedrABEBAAGJATwEGAEIACYWIQS4wSv56CWqOEUVIHBx p+kP4ux1vAUCXHi8rgIbDAUJA8JnAAAKCRBxp+kP4ux1vBGeB/4ubYvxZ6/apb+i MCtRIuA15PWEwVFTVfKirvEliY4fAjw5HSlfrnN4FV/OCTIRHecuNBNBfLt78DoK 08x7fYtEBqIN6pDanjsSwbPhuzhz6m4C/GWLqqDi8SCaVTQsJqKc2QHjr7CaBIuo GRlB84/pOq+kGAnMZPhCjy52K9x5zRpq6zTUpV5XPeLCBn6Kc8GW1Lk6K1eXsn09 KdIhb9JqTDtQx0eOS1p0fJlTb68Pj406IYJ16FaXmMTcYvep6HhVATQGbPDuIepd BK12nQEDrezkGR5vH9nMraQuZTvADuRFFgQvZQ5QMYAzMa0RhQTHKMOwCMq8mBq7 3Csgrxwa =kXkt -----END PGP PUBLIC KEY BLOCK----- EOF
- 配置yum内源地址
- 安装NFS服务
- 配置hda.conf配置文件信息
- 登录nfs服务节点,执行如下命令:
vi /etc/hilens/hda.conf
- 增加如下配置:
hilens.nfs.server.ip=192.168.0.150 hilens.nfs.mount.dir=/home/mind/model hilens.nfs.source.dir=/var/docker/hilens
其中,server.ip是nfs存储节点内网ip,mount.dir是大模型默认挂载路径,source.dir是大模型下载路径。
- 配置完成后,执行如下命令重启固件:
systemctl restart hdad
- 登录nfs服务节点,执行如下命令:
- 进入ModelArts服务,选择所需空间。进入“边缘资源池 Edge > 节点”,在当前设备节点操作列单击“激活”,节点状态将从“未激活”转为“已激活”。
图4 激活边缘节点
- 进入“边缘资源池 > 资源池”,单击“创建”。填写资源池名称,选择“ModelArts边缘节点”,在“主控节点”处单击“添加”,选择要添加的主控节点,单击“确定”。
图5 添加主控节点
- 在“工作节点”处单击“添加”,选择要添加的工作节点,单击“确定”。
图6 添加工作节点
- 单击“立即创建”,可在资源池列表中查看节点的状态。如果状态为“运行中”,则创建成功。
- 在主控节点执行如下k8s命令,验证边缘池创建结果:
步骤4:创建证书
如图7,如果在“边缘资源池”页签提示无可用的证书,可以参考以下方法创建证书。
- 准备一台Linux系统的服务器(已安装OpenSSL),依次执行以下命令制作证书。
执行命令时会提示输入至少四位的密码,例如:123456,需记住密码后续步骤会使用。
1. 生成server.key命令: openssl genrsa -des3 -out server.key 2048 2. 生成不加密的server.key: openssl rsa -in server.key -out server.key 3. 生成ca.crt命令: openssl req -new -x509 -key server.key -out ca.crt -days 3650 4. 生成server.csr命令: openssl req -new -key server.key -out server.csr 5. 生成server.crt命令: openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
图8 命令执行示例 - 证书制作完成后,执行ls命令可查看生成的证书文件。证书文件与ModelArts Studio平台中证书填写项对应关系如下。
ca.crt -- CA server.crt -- CERT server.key -- KEY
- 在ModelArts Studio平台首页,单击右上角“设置”,在“资源池管理 > 边缘资源池”页签单击“创建证书”,填写相应证书参数及描述。
图9 证书密钥
- 可通过view命令查看证书密钥值,例如view server.crt。输入ModelArts Studio平台的密钥值需要经过base64加密(echo -n "复制的密钥值内容" | base64)。