自建容器部署并推理

本章节介绍如何在边缘推理场景设备自建容器,上传镜像并进行解密操作。

  1. 将镜像压缩文件包导入推理场景设备。该镜像需含python相关组件。
  2. 执行以下命令在容器中导入镜像,请确保该镜像符合用户所在组织的安全要求。

    docker load < cfs-infer.tar

    “cfs-infer.tar”制作容器镜像中保存镜像压缩包的名称。

  3. 先将符合用户所在组织安全标准的“seccomp_profile.json”“cfs_profile”文件放到当前目录下,此文件可在开源社区的“aiguard_plugin”目录下获取。

    1. 解析“cfs_profile”文件
      apparmor_parser -r -W cfs_profile

      Altas 500设备环境无需解析。

    2. 启动容器,以Atlas 500 Pro 智能边缘服务器(型号:3000)设备为例。
      docker run -it \
       --security-opt seccomp=seccomp_profile.json  \
       --security-opt apparmor=cfs_profile  \ 
       --restart=on-failure:5 \
       --device=/dev/fuse --net=aiguard  \
       --device=/dev/davinci0 \
       --device=/dev/davinci_manager \
       --device=/dev/devmm_svm \
       --device=/dev/hisi_hdc \
       -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
       --cpus=10 -c 512 -m 8192m 镜像名:tag    \
      unshare --propagation unchanged -m -r /bin/bash
      • --security-opt:配置安全选项。
      • --restart:容器的重启策略,选择on-failure重启策略并限制次数为5。
      • -it:为-i和-t,打开STDIN,用于控制台交互;分配tty设备,该可以支持终端登录,默认为false。
      • --device:添加主机设备给容器,相当于设备直通。
      • -v,--volume:给容器挂载存储卷,挂载到容器的某个目录 。
      • --cpus:使用的cpu数量。
      • -c:允许使用的cpu份额。
      • -m:允许使用的内存限额。

  4. 请用户在容器内将创建预共享密钥并绑定主密钥章节创建的预共享密钥写入后,再执行推理。

    1. 将预共享密钥的密文写入“/run/secrets/aiguard-preshared-key”中,请确保“/run/secrets”目录的属主是运行用户。
    2. 执行推理,推理前用户需输入创建预共享秘钥请求样例中的password口令和加密私钥时使用的口令。
      /job/crypto_fs/bin/crypto_fs /job/encrypt /job/dec \
      --cert_file=/job/rsa.CFS.pem \
      --pri_key_file=/job/server.key \
      --ca_file=/job/rsa.trust.pem \     
      -p "/job/dec/infer/infer_start_cfs.py" 

      crypto_fs参数说明请参考Crypto_fs命令参数

      • 当crypto_fs进程异常终止,且后续不再启动crypto_fs,用户需要卸载解密目录挂载的文件系统。
        umount /job/dec
      • 当模型文件数量较多,且加密时使用同一工作密钥加密,建议增加以下参数。
        /job/crypto_fs/bin/crypto_fs /job/encrypt /job/dec \
        --cert_file=/job/rsa.CFS.pem \
        --pri_key_file=/job/server.key \
        --ca_file=/job/rsa.trust.pem \     
        -p "/job/dec/infer/infer_start_cfs.py" \
        -t 60  #密钥缓存时间,仅解密时生效。