安全分析模型核心服务部署
ModelOps 对所有的人工智能
模型(图形模型、语言模型、基于规则的模型)以及决策模型的整个生命周期
进行管理,确保对生产中的所有模型进行独立验证和问责,其核心功能涵盖了模型存储、模型测试、模型回滚和跨生产环境的 CI/CD 集成。
尽管在核心功能上 ModelOps 与 MLOps 类似,但 ModelOps 能够为专家提供自主权来解
释结果和验证生产中人工智能模型的KPI。而在不完全依赖数据科学家和ML工程师
的情况下,ModelOps 使模型推理变得可行。
ModelOps 在生产过程中管理 AI 模型的部署、治理和监控,协助企业在实际生产环境中
模型推理
定义内涵
模型推理是指使用训练完成的 AI 模型,通过输入数据,获取经过模型处理后产生结果的
过程。
技术背景
在经过模型训练、模型封装、模型部署上线过程后,ModelOps 能够将模型部署为模型推
理服务。
推理服务的常见部署方式有三种 [21]:
- 在物理机上部署。使用 Flask、Tensorflow Serving 等技术将训练好的模型文件和对应
的推理代码封装为服务包,拷贝到物理机上实施部署,最后将服务接口和调用方法提
供给模型推理服务。 - 在虚拟机上部署。将物理机划分成多个虚拟机,使用 Flask、Tensorflow Serving 等技
术将训练好的模型文件和对应的推理代码封装为服务包,部署在虚拟机上(为避免资
源冲突,一般一个虚拟机上部署一个模型服务)。考虑到大规模并发请求可以引入负
载均衡进行流量分发。最后将对外的服务接口和调用方法提供给模型推理服务。
- 基于容器技术部署。通过 Docker 封装、打包模型推理任务,并隔离不同模型服务的运
行环境,构建 Kubernetes 集群对推理服务进行编排,对基础资源进行合理分配和调度,
保障服务的分布式容灾和资源的弹性伸缩功能。
另外,针对不同的推理任务,用户需要在 ModelOps 平台提供的多种模型之间进行选择,
ModelOps 平台通过提供模型筛选建议或自动化筛选策略,协助用户选择最优模型并简化后
续模型更新和测试服务。
Tensorflow Serving 是针对机器学习模型灵活且高性能的服务系统,专为生产环境而
生。Tensorflow Serving 基于 Docker 快速部署模型,方便地进行版本迭代和容器管理,此外
Tensorflow Serving 基于 C++ 构建,摒弃了一些模型训练之中的冗余参数和设计,让模型可
以高性能地运行在 CPU/GPU 服务器上。处理机器学习的推理方面,Tensorflow Serving 在训
练和管理生命周期之后进行建模,并通过高性能的参考计数查找表为客户提供版本化的访问。
Tensorflow Serving 提供与 Tensorflow 模型的现成集成,但可以轻松扩展,以便服务于其他
类型的模型和数据。
Tensorflow 的 Serving 功能有很多特点:
● 可以同时服务多个模型或相同模型的多个版本
● 允许部署新模型版本,而无需更改任何客户端代码
● 支持金丝雀发布和 A/B 测试
● 高性能、低消耗、最小化推理时间
● 内置调度程序,能分批处理各个推理请求,以便在 GPU 上联合执行,并具有可配置
的延迟控制
尽管 Tensorflow 的官方 Serving 服务有着极高的性能,却无法对未经向量化的数据进
行运算。因此在使用 Tensorflow 的 Serving 功能时需要配置额外的数据预处理和数据后处
理服务。
思路方案
SecXOps 支持用户在平台上部署 Tensorflow 的 Serving 功能,当用户有其它模型推理需
求时也支持用户封装自定义模块进行推理。通过预设 Dockerfile 能够实现模块的封装,与模
型进行一对一绑定后,即可部署一个完整的模型推理服务。
用户创建模型推理服务时可以指定模型,SecXOps 将自动找到对应的模型推理模块,按
照该模块内包含的 Dockerfile 创建一个 Pod,该 Pod 被包含在一个 Job 中。Kubernetes 中的
Job 和上文中提到的 ReplicaSet 相同,是一类 Pod 控制器,它会创建一个或者多个 Pod,并
将继续重试 Pod 的执行,直到指定数量的 Pod 成功终止。随着 Pod 成功结束,Job 跟踪记
录成功完成的 Pod 个数。当数量达到指定的成功个数阈值时,任务才结束。删除 Job 的操作
会清除所创建的全部 Pod。
模型推理任务完成后,SecXOps 平台会自动采集 Job 中的 Pod 日志,将最终的输出或错
误信息打印给用户