带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(2)

简介: 带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(2)

《云原生机密计算最佳实践白皮书》——07解决方案——Intel Confidential Computing Zoo: Intel机密计算开源解决方案——部署TensorFlow Serving在线推理服务(1) https://developer.aliyun.com/article/1230820?groupCode=aliyun_linux



步骤一:部署客户端

本实践运行的环境信息参考:

• 规格:加密内存≥8G

• 镜像: Ubuntu20.04

• 公网IP

• 安装SGX软件栈

1、环境配置

安装所需的mesa-libGL软件包。

sudo pip3 install --upgrade pip 
sudo pip install multidict
sudo yum install mesa-libGL

2、下载软件包

下载本实践所用的TensorFlow Serving脚本代码并安装所需的argparse、aiohttp、tensorflflow等软件包。

git clone https://github.com/intel/confifidential-computing-zoo.git
cd confifidential-computing-zoo/cczoo/tensorflflow-serving-cluster/ tensorflflow-serving/docker
/client/
pip3 install -r ./requirements.txt

3、下载模型

./download_model.sh

下载训练好的模型文件将会存放在创建的 models/resnet50-v15-fp32 目录下。

4、模型格式转换

为了兼容TensorFlow Serving,需要对训练好的模型文件进行格式转换。

python3 ./model_graph_to_saved_model.py --import_path `pwd -P`/models/res
net50-v15-fp32/resnet50-v15-fp32.pb --export_dir `pwd -P`/models/resnet50-v15-fp32 
--model_version 1 --inputs input --outputs predict

转换好的模型文件将会存放在models/resnet50-v15-fp32/1/saved_model.pb。

5、创建gRPC TLS证书

本实践选择 gRPC TLS 建立客户端和TensorFlow Serving之间的通信连接,并设置 TensorFlow Serving域名来创建单向 TLS Keys 和证书,用来建立安全通信通道。该脚本将会创建 ssl_confifigure 文件夹,里面包含server和client相应的证书。

service_domain_name=grpc.tf-serving.service.com
client_domain_name=client.tf-serving.service.com
./generate_twoway_ssl_confifig.sh ${service_domain_name} ${client_domain_name}

6、创建加密模型

mkdir plaintext/
mv models/resnet50-v15-fp32/1/saved_model.pb plaintext/
LD_LIBRARY_PATH=./libs ./gramine-sgx-pf-crypt encrypt -w fifiles/wrap-key -i plaintext/saved_
model.pb -o models/resnet50-v15-fp32/1/saved_model.pb

7、启动密钥验证服务。

本实践使用Gramine提供的secret_prov_server_dcap作为远端SGX Enclave Quote认证服务,底层依赖调用SGX DCAP提供的Quote相关的认证库,该认证服务会向阿里云PCCS获取Quote认证相关的数据,比如TCB相

关信息以及CRL信息等。

SGX Enclave Quote验证成功后,会将当前目录下存放的密钥fifiles/wrap-key发送到远端应用。这里远端应用为vSGX环境中的Gramine,Gramine拿到wrap-key中的密钥后,便会对加密的模型和TLS配置文件进行解密。

• a. 切换到secrec_prov_server目录

./download_model.sh

• b. 使用密钥验证服务镜像

I) 下载密钥验证服务镜像

sudo docker pull intelcczoo/tensorflflow_serving:anolis_secret_prov_server_latest

II) 根据脚本编译镜像

sudo ./build_secret_prov_image.sh

• c. 获取secret_prov_server镜像ID

sudo docker images

• d. 启动密钥验证服务

sudo ./run_secret_prov.sh -i secret_prov_image_id -a pccs.service.com:ip_addr

服务启动后便会在后台运行等待远程认证访问。当接收到远端认证后,认证通过会将密钥发送回远端。

• e. 查看secret_prov_server容器IP地址

sudo docker ps -a #查看secret_prov_server镜像ID
sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <secret_prov_
server_container_id> 
#<secret_prov_server_container_id>需修改为实际的secret_prov_container_id



《云原生机密计算最佳实践白皮书》——07解决方案——Intel Confidential Computing Zoo: Intel机密计算开源解决方案——部署TensorFlow Serving在线推理服务(3) https://developer.aliyun.com/article/1230817?groupCode=aliyun_linux

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
12天前
|
运维 Kubernetes Cloud Native
云原生时代下,如何高效构建与部署微服务
【9月更文挑战第8天】随着云计算技术的飞速发展,云原生已成为现代软件架构的重要趋势。本文将深入浅出地介绍云原生概念、微服务架构的优势以及如何在云平台上高效构建和部署微服务。我们将通过实际的代码示例,展示在Kubernetes集群上部署一个简单的微服务应用的过程,帮助读者理解云原生环境下的微服务开发和运维实践。
|
3天前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第49天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
8天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
18 3
|
12天前
|
Cloud Native API 持续交付
云原生技术:开启现代软件部署的新篇章
在数字化浪潮中,云计算已从简单的资源共享进化到支持复杂应用的平台。云原生技术作为这一演变的核心,不仅重塑了软件开发、部署的方式,还为业务敏捷性、可伸缩性和可靠性设定了新的标准。本文将探讨云原生的基本概念、核心技术及实践方法,揭示它如何引领企业走在数字化转型的前列。
|
20天前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第31天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
20天前
|
开发者 容器 Java
Azure云之旅:JSF应用的神秘部署指南,揭开云原生的新篇章!
【8月更文挑战第31天】本文探讨了如何在Azure上部署JavaServer Faces (JSF) 应用,充分发挥其界面构建能力和云平台优势,实现高效安全的Web应用。Azure提供的多种服务如App Service、Kubernetes Service (AKS) 和DevOps简化了部署流程,并支持应用全生命周期管理。文章详细介绍了使用Azure Spring Cloud和App Service部署JSF应用的具体步骤,帮助开发者更好地利用Azure的强大功能。无论是在微服务架构下还是传统环境中,Azure都能为JSF应用提供全面支持,助力开发者拓展技术视野与实践机会。
11 0
|
20天前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
32 0
|
20天前
|
前端开发 开发者 设计模式
揭秘Uno Platform状态管理之道:INotifyPropertyChanged、依赖注入、MVVM大对决,帮你找到最佳策略!
【8月更文挑战第31天】本文对比分析了 Uno Platform 中的关键状态管理策略,包括内置的 INotifyPropertyChanged、依赖注入及 MVVM 框架。INotifyPropertyChanged 方案简单易用,适合小型项目;依赖注入则更灵活,支持状态共享与持久化,适用于复杂场景;MVVM 框架通过分离视图、视图模型和模型,使状态管理更清晰,适合大型项目。开发者可根据项目需求和技术栈选择合适的状态管理方案,以实现高效管理。
28 0
|
20天前
|
Kubernetes Cloud Native 应用服务中间件
云原生技术入门与实践:Kubernetes的简易部署
【8月更文挑战第31天】云原生技术已成为现代软件部署的黄金标准,而Kubernetes作为其核心组件之一,在容器编排领域独领风骚。本文将引导您通过简单的步骤,快速部署一个Kubernetes集群,并运行一个简单的应用,让您轻松迈入云原生的世界。
|
21天前
|
运维 Kubernetes Cloud Native
探索云原生:Kubernetes集群的部署与管理
【8月更文挑战第31天】 本文将带领读者深入了解云原生技术,特别是以Kubernetes为核心的集群部署和管理。文章不仅介绍了Kubernetes的基础概念和架构,还通过实际的代码示例展示了如何在云平台上搭建一个Kubernetes集群。我们将从基础的安装步骤到高级的服务部署,一步步揭示如何利用Kubernetes来简化容器化应用的管理与扩展。无论你是云原生新手还是希望提升现有技能的开发者,这篇文章都将成为你实践云原生技术的宝贵指南。