打开链接点亮社区Star,照亮技术的前进之路。每一个点赞,都是社区技术大佬前进的动力
Github 地址: https://github.com/secretflow
在传统机器学习场景中,完成模型训练得到模型之后,如何将模型的推理能力应用到实际的生产业务场景中呢?
通用的做法是通过使用在线推理框架加载这些模型,并将其服务化以提供接口给业务系统使用。
然而,在多方共同参与的隐私计算场景下,数据、调用系统和模型均分散在不同的参与方,尤其是对于推理过程中使用的数据需要保护,无法出域计算。
SecretFlow-Serving 是隐语团队开源的通用、开放且高性能的隐私保护多方在线推理框架,旨在解决上述问题。
SecretFlow-Serving 架构介绍
架构上,SecretFlow-Serving 通过配置的模型数据源模块加载模型到内存中,建立模型执行体进行计算。
在请求端分离了特征数据流与推理请求,通过各个参与方独立的特征数据源模块提供推理过程中的数据,进而完成模型计算得到推理结果。
框架内部通过预测调度器和模型执行体与其他 Serving 系统进行调度与计算的通信,以支持不同技术路线的隐私计算模型推理。
SecretFlow-Serving 技术特性
高性能
SecretFlow-Serving 基于成熟的工业级 RPC 框架 bRPC 构建,内部集成了高性能矩阵运算库 eigen 及高性能向量化计算库 Apache::Arrow,同时基于隐语在蚂蚁内部的实践与优化,基于批量、不同层级的并行化计算以及推理算法的优化,保证推理请求的低延时同时具有较低的通信量消耗。
高可用
在确保在线推理系统的高可用性上,隐语通过 Serving + Kuscia 的组合,实现了在线服务治理、多副本、负载均衡以及故障转移等功能,提供生产级高可用解决方案,同时具备优秀的可观测性。
可观测性
可观测性是指能够通过检查系统或应用的输出、日志和性能指标来监控、测量和理解系统或应用的状态。
对于在线推理系统来说,可观测性在确保应用和基础架构的可靠性、性能和安全性方面发挥着越来越重要的作用。
基于可观测三大支柱的理念,SecretFlow-Serving 已经建设了 logging 以及 metrics 数据输出能力。
基于相关数据,用户可将 SecretFlow-Serving 接入到可观测性平台中,帮助用户主动诊断、分析问题,并追溯问题根源。
通用与开放
在通用性和开放性方面,隐语的目标是提供一个兼容性强且易于扩展的框架。SecretFlow-Serving 通过插件化模块化的框架设计,支持多样化的数据源与隐私计算算子,允许用户进行二次开发,以适应不同的落地场景。
模型图
在模型表示上,SecretFlow-Serving 设计了一套隐私保护推理模型图定义,在支持存储模型数据的同时也能够对多方模型推理的调度与计算过程进行描述,以此实现对不同隐私计算技术路线的模型推理算法的支持,同时基于此定义,使用者可以自行构建隐私计算推理模型并使用 SecretFlow-Serving 进行模型推理预测。
详细说明可见:https://www.secretflow.org.cn/zhCN/docs/serving/0.2.0b0/topics/graph/intro_to_graph
如何使用 SecretFlow-Serving
基于本次 SecretFlow-Serving 的发布,隐语提供了隐私计算从离线训练到在线预测的完整工作流,同时该能力也在 SecretPad 中进行了实现,用户可以通过 SecretPad 或者直接使用 SecretFlow 与 SecertFlow-Serving 完成工作流。
- 直接使用 SecretFlow-Serving
对于 SecretFlow-Serving 的用户,首先需要准备用于提供模型推理服务的模型包,然后即可配置部署 SecretFlow-Serving。
具体操作可参考部署文档进行:https://www.secretflow.org.cn/zhCN/docs/serving/0.2.0b0/topics/deployment/deployment
通过 SecretFlow 导出模型
SecretFlow 用户可以通过 model_export 组件导出已有包含特征处理以及模型训练或模型预测组件组成的模型训练流。
- 具体的例子可参考:https://www.secretflow.org.cn/zhCN/docs/secretflow/v1.4.0b0/component/comp_list#model-export
- model_export 组件说明可参考:https://www.secretflow.org.cn/zhCN/docs/secretflow/v1.4.0b0/component/comp_list#model-export
使用 secretflow-serving-lib 构建模型
不使用 SecretFlow 的话,也可以通过 python 模块 secretflow-serving-lib 获取 SecretFlow-Serving 的 模型图定义与算子定义,可以此自行构建推理模型。
通过命令 pip install secretflow-serving-lib 可获取相关模块。
SecretFlow-Serving 模型包结构说明可见:https://www.secretflow.org.cn/zhCN/docs/serving/0.2.0b0/topics/system/intro#model-package
通过 SecretPad 使用 SecretFlow-Serving
隐语 SecretPad 是基于 SecretFlow、Kuscia 打造的隐私计算一站式研发生产样板间。有些用户需要把隐私计算平台集成到业务上下游全链路中,隐语 SecretPad 就是提供了最佳实践的样板间,可以方便开发集成者做快速集成,可以快速实现一些相对比较简单的场景,如简单的建模。
目前,隐语 SecretPad 支持了 SecretFlow-Serving 后,也实现了研发生产的全链路。
下面是使用 SecretPad 进行全流程的链路演示:
- 模型研发:
通过简单的拖拉拽就完成根据具体的业务需求快速建模。
另外,平台也为方便大家,把内部沉淀的常用场景做了一些模板,大家可以根据需求进行使用,以快速完成整个模型搭建。
- 模型提交:
整个模型的训练和评估完成后,可以做一个模型的打包。
这也是 SecretPad 的特色,当平台上有一个或多个模型训练完成之后,我们可以选择那个模型,此时系统会自动关联上游的预处理和下游后处理,去做整个打包。
打包之后就可以在模型管理中看到这个模型了。
- 特征离在线映射:
在右侧点击模型发布,就可以选择一开始授权到项目里面的在线特征,也就是 SPI。
选择后即可实现离在线特征的映射。通常离线的特征和在线的特征命名方式不一样,平台可以提供一个快速匹配的方式去实现快速匹配。然后,点击确定,整个模型就发布好了。
- 查看服务:
发布模型后,就可以查看模型的服务。
以上四步,就可以在 SecretPad 平台上完成发布的整个链路。完成模型发布后,即可进行模型预测等实现。
具体操作详见:https://www.secretflow.org.cn/zhCN/docs/kuscia/v0.6.0b0/tutorial/run_sf_serving_with_api_cn#id5
SecretFlow-Serving 未来规划
未来,隐语计划在功能性、易用性和性能优化方面进行进一步加强,包括支持更多模型预测算法、改进数据源支持等,
- 功能性与易用性:将支持更多模型预测算法、明密文混合计算、更多数据源支持及模型图工具等
- 可观测性:Tracing 支持
- 性能优化:计划支在图结构、特征计算重放等方面进行优化
以提升整体系统性能和用户体验。
感谢大家的关注,期待与社区的进一步交流与合作。