更新时间:2025-07-02 GMT+08:00

创建边缘资源池

边缘部署是指将模型部署到用户的边缘设备上,这些设备通常是用户自行采购的服务器,通过ModelArts服务纳管为边缘资源池,然后利用盘古大模型服务将模型部署到这些边缘资源池中。

ModelArts边缘节点是ModelArts平台提供的用于部署边缘服务的终端设备。创建边缘资源池之前需先创建ModelArts边缘节点。节点创建完成后,同步下载证书和边缘Agent固件,及时将固件复制到节点上,并执行注册命令完成设备的注册。

创建边缘资源池的流程见表1

表1 创建边缘资源池

操作步骤

说明

准备工作

说明创建边缘资源池的前期准备。

步骤1:注册边缘算力节点

说明注册边缘资源池节点步骤。

步骤2:搭建边缘服务器集群

说明搭建边缘服务器集群的步骤。

步骤3:安装Ascend插件

说明安装Ascend插件指导。

步骤4:创建证书

说明创建负载均衡所需证书步骤。

步骤5:创建负载均衡

说明创建负载均衡步骤。

  • ModelArts Studio大模型开发平台当前仅部分模型支持边缘部署,详见《产品介绍》“模型能力与规格”章节。
  • 使用边缘部署功能需要在ModelArts服务中开通“边缘资源池”功能,该功能为白名单特性,需要联系ModelArts客服进行开通。
  • 创建边缘资源池操作较为复杂,建议联系盘古客服进行协助。

准备工作

本章节的边缘部署操作以largemodel集群为例,示例集群信息如下表。

表2 示例集群信息

集群名

节点类型

节点名

规格

备注

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命令查看)

  1. 依赖包下载。

    选择对应cpu架构下载,docker版本选在19.0.3+。

    按照对应cpu架构下载二进制文件以及air-gap镜像。

  2. npu驱动和固件安装。

    执行命令npu-smi info查看驱动是否已安装。如果有回显npu卡信息,说明驱动已安装。

  3. hccn tool网卡配置。
    1. 执行如下命令,查看是否有回显网卡信息。如果有,则说明网卡已经配置,否则继续操作下面步骤。
      cat /etc/hccn.conf
    2. 执行如下命令,查看npu卡数。
      npu-smi info
    3. 执行如下命令(地址自行配置):
      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
    4. 执行命令cat /etc/hccn.conf,确保有如下回显网卡信息,则配置完成。

  4. 配置NFS网盘服务。

    大模型采用镜像+模型分开的方式部署时,需要有一个节点来提供nfs网盘服务,创建部署时通过nfs挂载的方式访问模型。

步骤1:注册边缘算力节点

  1. 进入ModelArts服务,选择所需空间。
  2. 在左侧列表中选择“资源管理 > 边缘算力节点 (Edge Node)”,在“节点”页签中,单击“创建”。
    图1 边缘算力节点 (Edge Node)
  3. 在“创建边缘节点”页面中,填写节点名称,配置AI加速卡与日志信息。
    • 如果节点有npu设备需选择“AI加速卡 > Ascend”,并选择加速卡类型。
    • 如果节点没有加速卡,则选择“AI加速卡 > 不使用”。
    图2 配置边缘节点参数
  4. 基本信息配置完成后,单击“确定”,单击“立即下载”,下载设备证书和Agent固件,并将设备证书与Agent固件分别重命名为license.tgzhilens-agent.tgz
    图3 下载所需证书

步骤2:搭建边缘服务器集群

  1. 执行如下命令,生成docker证书。
    bash cluster_install-ascend.sh generate_docker_cert --pkg-path=/home/hilens/pkgs

    请注意,该命令只需执行一次,如果已有相关证书,请跳过该步骤。

  2. 基于准备工作步骤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
  3. 工作节点执行命令如下:
    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表示主控节点。
  4. 在服务器执行如下命令,判断docker是否安装成功。
    systemctl status docker

  5. 在服务器执行如下命令,判断edge agent是否安装成功。
    hdactl info

  6. 配置NFS网盘服务。
    1. 安装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
    2. 创建网盘共享目录

      该路径的存储空间能够存储大模型文件。此处设置/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
    3. 添加网盘访问权限

      配置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
    4. 启动NFS和rpcbind

      设置服务开机启动、启动服务:

      systemctl enable nfs-server && systemctl enable rpcbind && systemctl start rpcbind nfs-server

      执行如下命令,验证以上配置内容是否正确。如下图,表示配置正确,即NFS服务安装成功。

      showmount -e localhost
    5. 验证NFS配置(可选)

      在非NFS服务节点创建目录:

      sudo mkdir ~/data

      执行挂载NFS:

      sudo mount -t nfs 192.168.xx.xxx:/var/docker/hilens ~/data

      挂载后,可以使用以下命令查看:

      mount

      回显如下,则成功:

      ... 
      ... 
      192.168.0.150:/var/docker/hilens on ~/data type nfs4
    6. 测试NFS功能

      在客户端向共享目录创建一个文件:

      cd ~/data 
      sudo touch a

      在NFS服务端192.168.0.150查看所创建的文件:

      cd /var/docker/hilens 
      ls -l
    7. yum源配置

      如果yum install使用正常,请忽略该章节。

      1. 配置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  
      2. 配置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
  7. 配置hda.conf配置文件信息
    1. 登录nfs服务节点,执行如下命令:
      vi /etc/hilens/hda.conf
    2. 增加如下配置:
      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是大模型下载路径。

    3. 配置完成后,执行如下命令重启固件:
      systemctl restart hdad
  8. 进入ModelArts服务,选择所需空间。进入“边缘资源池Edge > 节点”,在当前设备节点操作列单击“激活”,节点状态将从“未激活”转为“已激活”。
  9. 进入“边缘资源池 > 资源池”,单击“创建”。填写资源池名称,选择“ModelArts边缘节点”,在“主控节点”处单击“添加”,选择要添加的主控节点,单击“确定”。
    图4 添加主控节点
  10. 在“工作节点”处单击“添加”,选择要添加的工作节点,单击“确定”。
    图5 添加工作节点
  11. 单击“立即创建”,可在资源池列表中查看节点的状态。如果状态为“运行中”,则创建成功。
  12. 在主控节点执行如下k8s命令,验证边缘池创建结果:
    1. 执行如下命令建立软连接。
      ln -s /home/k3s/k3s /usr/bin/kubectl
    2. 执行如下命令查看节点状态。
      kubectl get node -o wide
    3. 如果所有节点状态STATUS为“Ready”,则说明集群创建成功。

步骤4:创建证书

图6,如果在ModelArts Studio平台“首页 > 设置”中的“边缘资源池”页签提示无可用的证书,可以参考以下方法创建证书。

图6 无可用证书
  1. 准备一台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
    图7 命令执行示例
  2. 证书制作完成后,执行ls命令可查看生成的证书文件。证书文件与ModelArts Studio平台中证书填写项对应关系如下。
    ca.crt -- CA
    server.crt -- CERT
    server.key -- KEY
  3. 在ModelArts Studio平台首页,单击右上角“设置”,在“资源池管理 > 边缘资源池”页签单击“创建证书”,填写相应证书参数及描述。
    图8 证书密钥
  4. 可通过view命令查看证书密钥值,例如view server.crt。输入ModelArts Studio平台的密钥值需要经过base64加密(echo -n "复制的密钥值内容" | base64)。

步骤5:创建负载均衡

在边缘资源池创建完成后,需要返回ModelArts Studio平台“首页 > 设置”中为边缘池创建负载均衡、创建监控插件。

创建负载均衡步骤如下:

  1. 登录ModelArts Studio平台,单击右上角“设置”。
  2. 在“资源池管理 > 边缘资源池”页签查看已经创建的边缘资源池,单击操作列“创建负载均衡”。
  3. 填写负载均衡名称(按mas-xxx命名填写),设置侦听端口(取值在30000到40000之间)和协议类型(调用推理模型时使用http还是https请求)。设置完成后单击“确定”。
    图9 创建负载均衡