PAI 联邦学习服务搭建教程|学习笔记

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 快速学习 PAI 联邦学习服务搭建教程。

开发者学堂课程【PAL 平台学习路线:机器学习入门到应用:PAI 联邦学习服务搭建教程】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/855/detail/14103


PAI 联邦学习服务搭建教程

 

内容介绍:

一. PAI 联邦学习方案

二.方案技术架构图

三.集群搭建与服务部署

四.示例:纵向逻辑回归

 

一. PAI 联邦学习方案

 image.png

PAI 联邦学习方案采用 FATE 开源的框架, FAFE 框架为首个工业级别联邦学习系统,可以有效的帮助多个机构在符合数据安全和政府法规的前提下,进行数据使用和联合建模,同时 FATE 支持多种主流算法,多种多方安全计算协议以及友好的跨域交互信息管理方案,解决了联邦体系信息安全审核难的问题。基于 FATE 的框架,PAI 联邦学习方案支持多种核心算法功能,其中包括数据统计、特征工程、浅层算法、深度学习算法、评估算法等。跨平台作为数据使用方和数据提供方中间的一个环节,承担了授权审核的作用,平台会接受数据使用方发送的集训链接、数据以及训练任务的申请。审核通过和 PAI 平台会下发任务到数据提供方进行下一步操作。PAI 平台的使用流程首先从控制台获得所需要的镜像,平台会提供镜像地址,在向管控发送集群构建许可并获取服务端口号,之后进行训练任务的构建和提交,最后进行模型的评估和上线。

 

二.方案技术架构图

PAI 联邦学习方案技术架构,采用两距离直接采用点对点的通信,同时基于i云及 ACK 集群部署使用费服务,本图展示了 PAI 联邦学习模型的训练和预测是分别基于 PAI Fate 联邦学习建模镜像以及模型预测镜像,且在训练和预测的过程中,数据使用方和数据提供方分别进行模型计算的中间结果以及模型预测过程交换

image.png

 

三.集群搭建与服务部署

集群搭建与实验环境的部署,体系要基于搭建阿里云 ACK 进行部署使用被服务,并使用比如说像容器管理联邦体系的负载,同时 KubeFATE 可以让联邦体系任务在公有云,基有云以及混合云进行运行。 KubeFATE 支持两种方式来部署,第一个是 Docker Compose ,适用于快速部署实验开发环境。第二个是 binarys 适用于实际的生产环境。

image.png

进行实际的操作演示,第一步首先创建两个集群,分别是 guest 集群和 host 集群,打开阿里云 Kubernetes 页面,在容器服务平台中点击创建集群。选取 ACK 托管版,给集群赋名 Fate-guest ,再选取虚拟交换机,下一步进行 worker 配置,在实际规格中选择 g5ne 通用网络增强版本, CPU 选择64,内存选择256G,同时若需要使用CPU 就选择 CPU 计算型 gn6i ,在组件配置和确认配置选择默认信息配置,下一步进行创建集群,创建完集群回到集群列表查看 fate-guest 集群的集群状态,同时可创建 fate-host 集群便于以后操作,在两个集群分别创建好之后,需要分别给 guest 集群和 host 集群中的一个 node 绑定弹性网 IP 用来实现两个集群之间的通信。选择节点管理中的节点,选择第一个节点,绑定弹性 IP ,选择其中的一个弹性公网进行绑定。

第二步‍在远程集群之后,使用 over fate 完成集群部署,首先登陆 ACK 集群且下载 over fate ,用 yum-y install 指令下载,下载完之后对其进行克隆。再安装 goll 便利环境,进入黑白s编译进制二进制文件。

第三步编译完成后,需要将 ACK 集群的控制台的信息复制到 confate 进行保存。

 image.png

创建一个文件夹,将链接信息复制到文件里进行保存

 image.png

配置完成后可用计算机访问集群。

第四步创建 k8sroll 其他资源,使用 Kubefate 进行资源的创

 image.png

第五步设置域名解析,在 ACK 集群上需要通过内网访问。先使用 Kubectl get svc -n 获得 IP 地址,可以看到对应地址为172.16,之后打开 etc 文件夹后的 hosts 文件,将 IP 的地址以及域名的预设标记在文件下

image.png

第六步创建over-fate serves 用来创建管理集群,使用 over-control aply +配置文件的命令来创建 serves 。之后验证如下命令判断是否启用成功,如果出现两行信息则表示启用成功。

image.png

第七步用来修改文件信息部署训练集群,通过 ls 的方式来查看集群的部署状态,使用 Kubectl create namespace fate-10002 的命名空间,创建完成后需要修改 fate-10002 的压缩文件信息,文件所对应的是 host 集群方的训练集群配置,因为每一方分别有训练集群配置以及预测集群配置,对于训练集群配置来说,需要填对方集群的公网或者专信的 IP ,同时自身可以填k8局域网的节点 IP ,对于预测集群配置,即可填写任意k8局域网的 IP ,这里所有信息都保持了 IP 地址的对应。

image.png

在这个配置中,使用 Kubefate cluster install 来对集群的配置进行分析,之后可以使用 cluster ls 的指令来看到当前集群的状态。

 image.png

根据上述说明,在 guest 和 host 集群上对训练集群以及预测集群进行部署,在所有部署完成之后,可使用两个指令分别查看集群状态以及集群内的各个点的状态。如果资源为空的,就需要删除并重新部署,否则将影响后续的环境。

 image.png

在两个集群部署完成之后使用一个指令来检验两个集群之间的通信,使用 Kubectl get pod 指令来获取序列号,获取到序列号后进入 python pod 进入之后可执行 toy_example 来测试通信是否正常,其中10001表示 guest id 为发起者,10002表示 host id 为提供方,若执行成功则表示通信正常,反之则需要排查标点符号是否添加正常。通过日志也可看出通信为正常

 

四.示例:纵向逻辑回归

示例:纵向逻辑回归训练与预测

简要介绍流程,第一步需要进行数据准备,包括定义数据源 ,表明,以及数据的上传,提交训练任务,在任务执行中通过 FATE Board 查看运行状态,第二步在模型预测之前需要进行模型加载、绑定以及访问模型服务,并查看模型预测结果。

image.png

 image.png

实际操作过程中,首先需要分别对 host 和 guest 集群进行设置,在 host 上需先上传数据,上传数据的配置文件在 upload_host.joon 里并进入到这个 文件中,在这个文件中看到定义这个文件的参数,比较重要的是数据的文件名称、命名空间以及数据表明,可看到本次数据文件名称为 breast_hetero_host_csv 这个文件,数据表明是 breast_hetero_host ,而命名空间是 experiment ,如果需要在其他的文件中跟换数据源的情况下是对这些参数进行修改。

image.png

本次不进行修改但会重新上传一遍。这里显示数据已经被上传过了,所以需要添加 -drop 1 的参数来重新上传。

image.png

同理 guest 方数据同此处理即可。在数据上传完成之后,需对 guest 机器上对两个文件的配置内容进行修改和整理,分别是 job_conf 和 dsl 文件, dsl 文件表明模型任务的工作流定义,而 job_conf 是对每个组件的设置的参数。由于此次对参数配置已经完成,会对其中重要的参数进行说明,首先是 job_conf 文件,可以从中看到 role 文件中的参数里面定义了 guest 、 host 和 arbiter 的 id ,若后续想改为官方数据源的情况,可以在此进行 id 的扩展以及数据源配置的定义,在 reader_table 下面可以看到对应数据的命名空间以及表明。

image.png

image.png 

其次是 dls 文件,首先是以数据读取环节,之后是特征的求交以及特征的分箱、特征的选择 lr 的模型以及模型的评估。在训练完成之后,可以在可视化界面上看到一一对应的文件,这些组件可以通过工程师的需求进行增减,便于操作。

 image.png

在完成任务的数据以及任务的配置之后进行数据的提交,由于1.5.0版本和1.6.0版本的任务提交指令略有不同,此次暂时采用1.5.0版本任务提交指令,进行任务提交的指令当出现 success 指令的时候则表示提交成功。其中 model_id 和model_version 需要记录下来,在以后的某些部署、预测中需要用到。

此时打开 FATE Board 的界面,可以看到任务正在被执行, jobid 最后四位是4235,可找到相应的任务,可以看到任务正在被执行,还可以点击查看之前被提交的任务执行情况,等待一段时间看到本任务的执行情况

image.png

任务已经执行完成,每个组件对应的是 dsl 里面的 conporment ,同时每个组件可以查看到参数以及输出的结果,比如在 lr 模型里面看到每个特征对应的权重,在评估的组件中,可以看到模型评估的结果,这个为 guest 方对应的结果,同时也可以看 host 方对应的结果。

image.png 

在模型训练完成之后进行预测阶段,这里采用1.6.0版本的预测模式,首先记录下 model_id 和model_version 号。在部署阶段使用 flow model deploy –model\-id 进行执行,此时会产生新的 model id 和 version 号,会在后续的加载和绑定中用到。

 image.png

之后进行到模型加载阶段,根据部署阶段产生的数值进行修改。因为之前已做过一次修改,所以此时产生的数值为一一对应的。会在进行一次模型加载的指令,出现 success 字样说明模型加载成功

 image.png

进行模型绑定阶段,同样对部署阶段产生的模型 id 和version 进行修改,目前看到 model_id 是一致的只需要修改 model_version 即可。修改完成执行 flow model bind 的指令,当出现 service id is test 字样说明模型 id 已经绑定成功。

image.png

访问模型服务,执行 python 脚本。 这个 text_infence 是包含了 guest 方数据特征的一个请求,所以执行脚本。执行之后会出现一个预测结果的响应,在 date score 中为预测结果。

image.png

此时一个教程已经全部完成,这里给出的只是一个简单的逻辑回归的例子,与此还提供了更高的数据算法,用户可以更改数据源以及工作流的配置,来进行相应的算法。

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
1月前
|
机器学习/深度学习 算法
【机器学习】迅速了解什么是集成学习
【机器学习】迅速了解什么是集成学习
|
2月前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
100 3
|
3月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】klearn基础教程
scikit-learn(通常缩写为sklearn)是一个用于Python编程语言的强大机器学习库。它提供了各种分类、回归、聚类算法,以及数据预处理、降维和模型评估的工具。以下是sklearn的基础教程,帮助你开始使用它
25 3
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】机器学习、深度学习、强化学习和迁移学习简介、相互对比、区别与联系。
机器学习、深度学习、强化学习和迁移学习都是人工智能领域的子领域,它们之间有一定的联系和区别。下面分别对这四个概念进行解析,并给出相互对比、区别与联系以及应用场景案例分析。
81 1
|
3月前
|
机器学习/深度学习 开发者 Python
Python 与 R 在机器学习入门中的学习曲线差异
【8月更文第6天】在机器学习领域,Python 和 R 是两种非常流行的编程语言。Python 以其简洁的语法和广泛的社区支持著称,而 R 则以其强大的统计功能和数据分析能力受到青睐。本文将探讨这两种语言在机器学习入门阶段的学习曲线差异,并通过构建一个简单的线性回归模型来比较它们的体验。
65 7
|
3月前
|
机器学习/深度学习 运维 算法
【阿里天池-医学影像报告异常检测】3 机器学习模型训练及集成学习Baseline开源
本文介绍了一个基于XGBoost、LightGBM和逻辑回归的集成学习模型,用于医学影像报告异常检测任务,并公开了达到0.83+准确率的基线代码。
64 9
|
3月前
|
前端开发 开发者 设计模式
揭秘Uno Platform状态管理之道:INotifyPropertyChanged、依赖注入、MVVM大对决,帮你找到最佳策略!
【8月更文挑战第31天】本文对比分析了 Uno Platform 中的关键状态管理策略,包括内置的 INotifyPropertyChanged、依赖注入及 MVVM 框架。INotifyPropertyChanged 方案简单易用,适合小型项目;依赖注入则更灵活,支持状态共享与持久化,适用于复杂场景;MVVM 框架通过分离视图、视图模型和模型,使状态管理更清晰,适合大型项目。开发者可根据项目需求和技术栈选择合适的状态管理方案,以实现高效管理。
42 0
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow Serving 部署指南超赞!让机器学习模型上线不再困难,轻松开启高效服务之旅!
【8月更文挑战第31天】TensorFlow Serving是一款高性能开源服务系统,专为部署机器学习模型设计。本文通过代码示例详细介绍其部署流程:从安装TensorFlow Serving、训练模型到配置模型服务器与使用gRPC客户端调用模型,展示了一站式模型上线解决方案,使过程变得简单高效。借助该工具,你可以轻松实现模型的实际应用。
44 0
|
3月前
|
机器学习/深度学习
【机器学习】模型融合Ensemble和集成学习Stacking的实现
文章介绍了使用mlxtend和lightgbm库中的分类器,如EnsembleVoteClassifier和StackingClassifier,以及sklearn库中的SVC、KNeighborsClassifier等进行模型集成的方法。
53 1
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
基于PAI-QuickStart搭建一站式模型训练服务体验
【8月更文挑战第5天】基于PAI-QuickStart搭建一站式模型训练服务体验
122 0
下一篇
无影云桌面