
# 创建边缘资源池
边缘部署是指将模型部署到用户的边缘设备上，这些设备通常是用户自行采购的服务器，通过ModelArts服务纳管为边缘资源池，然后利用盘古大模型服务将模型部署到这些边缘资源池中。
ModelArts边缘节点是ModelArts平台提供的用于部署边缘服务的终端设备。创建边缘资源池之前需先创建ModelArts边缘节点。节点创建完成后，同步下载证书和边缘Agent固件，及时将固件复制到节点上，并执行注册命令完成设备的注册。
创建边缘资源池的流程见[表1]。
 表1创建边缘资源池 
| 操作步骤                                                    | 说明              |
|:---|:---|
| [准备工作]          | 说明创建边缘资源池的前期准备。 |
| [步骤1：注册边缘算力节点]    | 说明注册边缘资源池节点步骤。  |
| [步骤2：搭建边缘服务器集群] | 说明搭建边缘服务器集群的步骤。 |
| [步骤3：安装Ascend插件] | 说明安装Ascend插件指导。 |
| [步骤4：创建证书]     | 说明创建负载均衡所需证书步骤。 |
| [步骤5：创建负载均衡]      | 说明创建负载均衡步骤。     |
   
![](https://support.huaweicloud.com/usermanual-pangulm/public_sys-resources/note_3.0-zh-cn.png)
- 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命令查看） |
| largemodel | 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. 依赖包下载。
   - docker下载：<https://download.docker.com/linux/static/stable>
   
   
   选择对应cpu架构下载，docker版本选择19.0.3+。
   - K3S下载：[https://github.com/k3s-io/k3s/releases/tag/v1.21.12%2Bk3s1](https://github.com/k3s-io/k3s/releases/tag/v1.21.12+k3s1)
   
   
   按照对应cpu架构下载二进制文件以及air-gap镜像。
   
2. npu驱动和固件安装。 执行命令**npu-smi info**查看驱动是否已安装。如果有回显npu卡信息，说明驱动已安装。
   详情请参见[昇腾官方文档](https://support.huawei.com/enterprise/zh/category/ascend-computing-pid-1557196528909)。
   
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** ，确保有如下回显网卡信息，则配置完成。
      ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571206870.png)
      
    
4. 配置NFS网盘服务。 大模型采用镜像+模型分开的方式部署时，需要有一个节点来提供nfs网盘服务，创建部署时通过nfs挂载的方式访问模型。
   
 
 #### 步骤1：注册边缘算力节点
1. 进入ModelArts服务，选择所需空间。
2. 在左侧列表中选择"资源管理 \> 边缘算力节点 (Edge Node)"，在"节点"页签中，单击"创建"。
   图1边缘算力节点 (Edge Node)   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601726391.png) 
3. 在"创建边缘节点"页面中，填写节点名称，配置AI加速卡与日志信息。
   - 如果节点有npu设备需选择"AI加速卡 \> Ascend"，并选择加速卡类型。
   
   - 如果节点没有加速卡，则选择"AI加速卡 \> 不使用"。
   
   
   图2配置边缘节点参数   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047254.png) 
4. 基本信息配置完成后，单击"确定"，单击"立即下载"，下载设备证书和Agent固件，并将设备证书与Agent固件分别重命名为**license.tgz** 、**hilens-agent.tgz** 。
   图3下载所需证书   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047222.png) 
 
 #### 步骤2：搭建边缘服务器集群
1. 执行如下命令，生成docker证书。
   ```
   bash cluster_install-ascend.sh generate_docker_cert --pkg-path=/home/hilens/pkgs
   ```
   ![](https://support.huaweicloud.com/usermanual-pangulm/public_sys-resources/note_3.0-zh-cn.png)
   请注意，该命令只需执行一次，如果已有相关证书，请跳过该步骤。
   
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
   ```
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047240.png)
   
5. 在服务器执行如下命令，判断edge agent是否安装成功。
   ```
   hdactl info
   ```
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601606417.png)
   
6. 配置NFS网盘服务。
   1. **安装NFS服务**
      该步骤需要设备联网下载软件依赖包。
      - **Ubuntu系统**
        在线安装：
        ```
        sudo apt install nfs-kernel-server
        ```
        
      
      
      
      - **Euler OS系统**
        在线安装：
        ```
        sudo yum install nfs-utils
        ```
        
      
      
      ![](https://support.huaweicloud.com/usermanual-pangulm/public_sys-resources/note_3.0-zh-cn.png)
      若需离线安装，请联系盘古客服。
      - 防火墙需要打开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 \> 节点"，在当前设备节点操作列单击"激活"，节点状态将从"未激活"转为"已激活"。
   图4激活边缘节点   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601726403.png) 
9. 进入"边缘资源池 \> 资源池"，单击"创建"。填写资源池名称，选择"ModelArts边缘节点"，在"主控节点"处单击"添加"，选择要添加的主控节点，单击"确定"。
   图5添加主控节点   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601606445.png) 
10. 在"工作节点"处单击"添加"，选择要添加的工作节点，单击"确定"。
    图6添加工作节点   
    ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571206898.png) 
11. 单击"立即创建"，可在资源池列表中查看节点的状态。如果状态为"运行中"，则创建成功。
12. 在主控节点执行如下K8s命令，验证边缘池创建结果：
    1. 执行如下命令建立软连接。
       ```
       ln -s /home/k3s/k3s /usr/bin/kubectl
       ```
       
    
    2. 执行如下命令查看节点状态。
       ```
       kubectl get node -o wide
       ```
       
    
    3. 如果所有节点状态STATUS为"Ready"，则说明集群创建成功。 ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601726417.png)
       
     
 
 #### 步骤3：安装Ascend插件
可联系技术支持人员提供。
 #### 步骤4：创建证书
如[图7]，如果在ModelArts Studio平台"首页 \> 设置"中的"边缘资源池"页签提示无可用的证书，可以参考以下方法创建证书。
图7无可用证书   
![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047266.png)
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
   ```
   图8命令执行示例   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047236.png) 
2. 证书制作完成后，执行ls命令可查看生成的证书文件。证书文件与ModelArts Studio平台中证书填写项对应关系如下。
   ```
   ca.crt -- CA
   server.crt -- CERT
   server.key -- KEY
   ```
   
3. 在ModelArts Studio平台首页，单击右上角"设置"，在"资源池管理 \> 边缘资源池"页签单击"创建证书"，填写相应证书参数及描述。
   图9证书密钥   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571206858.png) 
4. 可通过view命令查看证书密钥值，例如view server.crt。输入ModelArts Studio平台的密钥值需要经过base64加密（echo -n "复制的密钥值内容" \| base64）。
 
 #### 步骤5：创建负载均衡
在边缘资源池创建完成后，需要返回ModelArts Studio平台"首页 \> 设置"中为边缘池创建负载均衡、创建监控插件。
创建负载均衡步骤如下：
1. 登录ModelArts Studio平台，单击右上角"设置"。
2. 在"资源池管理 \> 边缘资源池"页签查看已经创建的边缘资源池，单击操作列"创建负载均衡"。
   图10边缘资源池   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571206852.png) 
3. 填写负载均衡名称（按mas-xxx命名填写），设置侦听端口（取值在30000到40000之间）和协议类型（调用推理模型时使用http还是https请求）。设置完成后单击"确定"。
   图11创建负载均衡   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571206904.png) 
 
