详情页标题前

阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

详情页1

本文介绍如何基于安全增强型实例(Intel® SGX)部署PyTorch深度学习模型的技术架构和使用流程。

背景信息

人工智能模型经由大量训练数据和算力生成,是具有商业价值的知识产权形式之一。PyTorch以其灵活、动态的编程环境、动态图机制、网络构建灵活等优势,深受AI开发者的推崇。该模型通常被部署于云服务供应商提供的云服务器如阿里云ECS。如何确保这些部署于公有云上的模型不被他人窃取,确保可用不可见,是模型所有者和云服务提供商共同面临的话题。

阿里云ECS部分安全增强型实例基于Intel® SGX(Software Guard Extension)技术,提供了SGX加密计算能力,打造了基于硬件级别的更高安全等级的可信机密环境,保障关键代码和数据的机密性与完整性不受恶意软件的破坏。

将PyTorch深度学习模型部署在阿里云安全增强型实例可信机密环境中,可以保证数据传输的安全性、数据使用的安全性、以及PyTorch深度学习应用程序的完整性。

技术架构

图 1. 技术架构

阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

基于SGX加密计算环境的PyTorch全流程保护模型参数如技术架构所示。该模型在部署阶段就以密文形式存储,相关的运算在SGX Enclave中进行。模型参数仅在SGX Enclave中解密,且密钥通过远程认证安全通道传输。

本实践涉及三个角色:dkeyserver,dkeycache,PyTorch with SGX,使用流程如使用流程所示,具体说明如下:

  • dkeyserver:密钥服务器,部署于模型使用者本地。模型所有者首先使用PyTorch with SGX提供的工具在本地将模型参数加密,并在本地搭建密钥服务器(dkeyserver)。然后将加密后的模型传输并部署于阿里云ECS SGX服务器。密钥服务器管理所有模型密钥和模型ID,并接收来自ECS SGX服务器密钥分发服务的密钥请求。

  • dkeycache:密钥分发服务,部署于阿里云ECS SGX服务器。ECS SGX服务器的密钥分发服务首先向密钥服务器申请获取所有模型密钥。密钥服务器在成功完成SGX远程证明后,将密钥通过远程认证安全通道发送到ECS SGX服务器密钥分发的SGX Enclave。这部分将在密钥分发服务器启动后自动完成,无需模型所有者操作。

  • PyTorch with SGX:运行PyTorch的ECS SGX服务器,与dkeycache部署于同一台服务器。当阿里云的PyTorch实例使用模型做预测或分类任务进行模型推测时,会自动向密钥分发服务请求模型密钥。 密钥会被加密,并经SGX安全通道发送至PyTorch实例的SGX Enclave中。PyTorch with SGX启动的Enclave使用该密钥解密模型参数,并进行计算。模型参数全程享受基于SGX的硬件保护,可用不可见,以保证数据传输的安全性、数据使用的安全性。

图 2. 使用流程

阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

准备工作

部署PyTorch深度学习模型前,您需要准备运行该模型所需的环境。

说明

为方便验证,本实践将dkeyserver,dkeycache,PyTorch with SGX部署在同一台阿里云安全增强型实例中。

  1. 创建安全增强型实例。

    具体操作,请参见创建可信实例。请注意以下参数:

    • 实例规格:实例的vCPU和内存≥4 vCPU 16 GiB,本操作选用的实例规格为ecs.g7t.4xlarge

    • 镜像:Alibaba Cloud Linux 2.1903 LTS 64位 UEFI版

    • 公网IP:分配公网IPv4地址

  2. 构建SGX加密计算环境。

    具体操作,请参见构建SGX加密计算环境。

  3. 安装Python3并配置环境变量。

    本实践所用的Python版本为3.6,您也可以根据需要,安装合适的Python版本。具体操作,请参见Python官网。

  4. 安装运行PyTorch所需的软件包。

    PyTorch对python、gcc等软件有版本要求,可通过以下命令安装指定版本。

    sudo yum update --skip-broken
    sudo yum install -y teesdk git gcc-c++ scl-utils alinux-release-experimentals  python36-devel libbsd-devel
    sudo yum install -y devtoolset-7-gcc devtoolset-7-gdb devtoolset-7-binutils devtoolset-7-make devtoolset-7-gcc devtoolset-7-gcc-c++
    scl -l devtoolset-7
    sudo ln -sf /opt/rh/devtoolset-7/root/bin/g++ /usr/bin/g++
    sudo ln -sf /opt/rh/devtoolset-7/root/bin/gcc /usr/bin/gcc
    sudo ln -sf /opt/rh/devtoolset-7/root/bin/c++ /usr/bin/c++
    sudo ln -sf /usr/bin/python3 /usr/bin/python

    出现如下图所示界面时,表示安装成功。

    阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

  5. 安装PyTorch依赖库、加解密依赖库及cmake编译工具等。

    sudo pip3 install --upgrade pip
    sudo pip3 install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses setuptools_rust pycryptodomex pycryptodome torchvision
    sudo ln -sf /usr/local/bin/cmake /usr/bin/cmake
    sudo ln -sf /usr/local/bin/cmake /bin/cmake

操作步骤

  1. 登录ECS实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例。

  2. 切换到工作目录(如/home/test),获取PyTorch参考代码。

    该代码中包含三部分:dkeyserver、dkeycache、PyTorch with SGX。

    cd /home/test
    git clone https://github.com/intel/sgx-pytorch -b sgx pytorch
    cd /home/test/pytorch
    git submodule sync && git submodule update --init --recursive

    如果遇到explicit_bzero相关的编译错误, 可以尝试加上以下patch并重试。

    git pull origin pull/15/head
  3. 在ECS SGX服务器中编译PyTorch with SGX。

    1. 编译oneDNN。

      oneAPI深度神经网络库(oneDNN)是用于深度学习应用程序的基本构建基块的开源跨平台性能库,该库针对英特尔体系结构处理器、英特尔处理器图形和Xe体系图形进行了优化。主要面向对提高Intel CPU和GPU上的应用程序性能感兴趣的深度学习应用程序和框架开发人员。

      source /opt/alibaba/teesdk/intel/sgxsdk/environment
      cd /home/test/pytorch/third_party/sgx/linux-sgx
      git am ../0001*
      cd external/dnnl
      make
      sudo cp sgx_dnnl/lib/libsgx_dnnl.a /opt/alibaba/teesdk/intel/sgxsdk/lib64/libsgx_dnnl2.a
      sudo cp sgx_dnnl/include/* /opt/alibaba/teesdk/intel/sgxsdk/include/

      阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

    2. 编译PyTorch Enclave。

      PyTorch with SGX的Enclave提供模型参数解密及模型预测运算。

      source /opt/alibaba/teesdk/intel/sgxsdk/environment
      cd /home/test/pytorch/enclave_ops/ideep-enclave
      make

      阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

    3. 编译PyTorch。

      cd /home/test/pytorch
      pip3 uninstall torch    #卸载系统已安装的Pytorch,将安装自编译的Pytorch
      source /opt/alibaba/teesdk/intel/sgxsdk/environment
      python setup.py develop --cmake-only
      sudo python setup.py develop && python -c "import torch" 

      阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

    4. 编译PyTorch安全计算运算符。

      source /opt/alibaba/teesdk/intel/sgxsdk/environment
      cd /home/test/pytorch/enclave_ops/secure_op && mkdir build && cd build
      cmake -DCMAKE_PREFIX_PATH="$(python -c 'import torch.utils; print(torch.utils.cmake_prefix_path)')" ..
      make

      阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

  4. 在密钥服务器端及ECS SGX服务器端分别编译生成dkeyserver和dkeycache可执行文件。

    cd /home/test/pytorch/enclave_ops/deployment
    make

    阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

  5. 在密钥服务器端启动密钥服务。

    cd /home/test/pytorch/enclave_ops/deployment/bin/dkeyserver
    sudo ./dkeyserver

    密钥服务器启动,等待来自部署于ECS SGX服务器的dkeycache的密钥请求。

    阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

  6. 在ECS SGX服务器端编译dkeycache并启动密钥分发服务。

    cd /home/test/pytorch/enclave_ops/deployment/bin/dkeycache
    sudo ./dkeycache

    dkeycache启动后,向dkeyserver申请获取所有模型密钥。dkeyserver在成功完成SGX远程证明 (SGX Remote Attestation) 后,将密钥通过远程认证安全通道发送到dkeycache的SGX Enclave。

    阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

  7. 在ECS SGX服务器端运行基于ResNet的测试用例。

    cd /home/test/pytorch/enclave_ops/test
    sudo python whole_resnet.py

    Pytorch模型的密文参数将在SGX Enclave中解密,密钥会向dkeycache服务获取并加密传输至Enclave中。

    阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

腾讯云1折,限时活动,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/151391.html

(0)
上一篇 2023年12月9日 下午4:43
下一篇 2023年12月9日 下午4:44
详情页2

相关推荐

  • 腾讯云容器服务edgectl 边缘节点管理工具说明同尘科技

    edgectl 是边缘节点管理工具,用于远程添加边缘节点。您可通过节点管理 > 脚本添加节点操作获取该工具。 edgectl 提供了以下三个命令: 命令 描述 edgectl check 检查节点是否满足安装边缘节点的条件。 edgectl clear 清理边缘节点。 edgectl install 安装边缘节点。 示例代码如下所示: # ./edge…

    腾讯云 2023年12月9日
  • 腾讯云自动化助手配置命令完整输出上传至COS

    操作场景 通过 DescribeInvocationTasks 查询到的命令输出限制最多24 KB。本⽂以云服务器为例,介绍如何配置使完成的命令输出上传⾄指定 COS 桶中。 前提条件 1. 运⾏命令的⽬标实例是云服务器 CVM,此功能暂时不⽀持 Lighthouse。2. ⽬标实例状态需处于 运⾏中,且已安装⾃动化助⼿客户端,详情请参⻅ 安装自动化助手客户…

    2023年12月9日
  • 腾讯云CVM服务器使用 EFI

    操作场景 本文介绍如何在 CVM 实例上配置 EFI,实现在 VPC 网络下体验超低延迟的 RDMA 功能。弹性 RDMA 网卡(Elastic Fabric Interface,EFI)是一种可以绑定到 CVM 实例的虚拟网卡,EFI 必须依附于弹性网卡(ENI)开启 RDMA 设备。EFI 完全复用了弹性网卡所属的网络,让您无需改变业务组网,即可在原有网…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云云点播控制台介绍

    为了让用户更加快速地掌握并使用控制台,我们将一些常用服务根据不同用户的不同使用需求进行了划分整理,目前控制台主要分为基础服务、场景服务、配置服务和数据服务等模块用于不同的使用场景。 基础服务 基础服务主要提供云点播基础服务接入,可实现应用创建,启用、停用、销毁及应用下音视频的上传、处理和分发等点播基础功能。如果您仅需要使用基础的云点播服务,仅需在基础服务模块…

    腾讯云 2023年12月9日
  • 阿里云负载均衡应用型负载均衡ALB操作指南-云淘科技

    应用型负载均衡ALB操作指南索引 子产品 分类 文档 应用型负载均衡ALB 实例 ALB实例概述 创建ALB实例 管理ALB实例 ALB实例变配 变更ALB实例的网络类型 ALB实例诊断 服务器组 ALB服务器组概述 创建和管理服务器组 配置会话保持 通过弹性网卡添加后端服务器 监听 添加HTTP监听 添加HTTPS监听 添加QUIC监听 管理监听 WebS…

    阿里云负载均衡 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。