部署TensorFlow横向联邦学习
1概述
本文介绍在Intel® SGX使能的平台,基于Anolis OS部署TensorFlow横向联邦学习。
2背景信息
横向联邦学习是一种分布式的机器学习模型训练方案,该方案联合多个参与方在数据不出域的前提下完成模型的训练,保证了数据安全。
Intel® SGX (Software Guard Extension) 技术,提供了SGX加密计算能力,打造了基于硬件级别的更高安全等级的可信机密环境,保障关键代码和数据的机密性与完整性不受恶意软件的破坏。
本实践为开发者使用Anolis OS提供了参考实现,您可以通过本文获取以下信息:
• 对基于SGX加密技术实现的端到端的全数据生命周期安全方案有整体了解。
• 对于使用Anolis OS的开发者,可直接参照本实践部署和开发脚本。
• 为使用安全增强型云服务器SGX开发者提供可行性参考框架和脚本,开发者可根据本实践步骤快速了解安全增强型裸金属云服务器及环境搭建部署流程,轻松上手使用。
3实践架构
本实践涉及了两种参与方:参数服务器端(parameter server)和客户端(worker)。
• 参数服务器端:存放模型参数,并利用客户端发来的梯度信息更新本地参数。
• 客户端:利用本地数据集,完成神经网络的前向传播和反向传播,并通过服务器端获取最新的模型参数。
说明:为了方便开发者部署,本实践将上述两种参与方部署在同一台云服务器中。
本实践使用到的主要组件:
• LibOS:Gramine是一款轻量级LibOS,结合Intel SGX加密保护技术,提供了内核能力定制,运行资源消耗少,具备非常好的ABI兼容性,极大降低了原生应用移植到SGX环境的成本,做到了应用程序不修改或者极少
的修改便能运行在SGX环境中。更多信息,请参考Gramine。
• TensorFlow训练框架:TensorFlow是Google开源的机器学习平台,本实践采用TensorFlow的分布式训练框架作为横向联邦学习的训练框架。更多信息,请参考TensorFlow官网。
• Docker容器引擎:为了方便部署推理,本实践将三个参与方运行在Docker容器中,通过Docker的命令方式运行推理服务。
本实践架构说明: Anolis OS SGX端需要向Intel证书缓存服务(Provisioning Certifificate Caching Service,PCCS)获取PCK(Provisioning Certifification Key)证书。Intel SGX拥有一个密钥用于Enclave签名,该密钥对于处理器或者平台是唯一的,密钥的公开部分就是PCK公钥。另外客户端也会向PCCS获取一些信息,比如TCB信息、Quote Enclave认证的信息、CRL信息等用于对SGX Enclave的认证。
训练阶段可以分为以下几个步骤:
① 利用SGX平台,参与方运行在不同的Enclave中。
② 客户端根据其Enclave环境中的本地数据计算梯度信息。
③ 客户端通过RA-TLS向参数服务器发送梯度。
④ 参数服务器进行梯度聚合,计算并更新全局模型参数。
⑤ 参数服务器将模型参数发送给客户端。
⑥ 客户端更新局部模型参数。
训练过程中会不断重复步骤②-⑥ 。由于客户端和参数服务器运行在内存加密的Enclave环境中,同时RA-TLS通信方案保证了传输过程中的数据安全,因此该方案可以保证在完整的训练周期中的数据安全。
4 实践任务和配置
本实践提供图像分类和推荐系统两种训练任务类型。图像分类任务采用cifar-10数据集训练ResNet网络。推荐系统任务采用开源广告点击率数据集训练DLRM网络。
本实践的环境配置如下:
• 服务器配置:
I) 图像分类任务:单个节点加密内存:8G
II) 推荐系统任务:单个节点加密内存:32G
• 操作系统: anolisos:8.4-x86_64
• SGX软件栈
• Docker
《云原生机密计算最佳实践白皮书》——07解决方案——Intel Confidential Computing Zoo: Intel机密计算开源解决方案——部署TensorFlow横向联邦学习(2) https://developer.aliyun.com/article/1230779?groupCode=aliyun_linux