Kubeflow-K8S 的机器学习工具包

kubeflow

Kubeflow是想要构建和试验ML管道的数据科学家的平台。 Kubeflow也适合希望将ML系统部署到各种环境以进行开发,测试和生产级服务的ML工程师和运营团队。Kubeflow是K8S规划中关于机器学习的重要部分。下面这张图罗列了在K8S平台上所架构的一整套机器学习系统的基础模块。
file

Kubeflow-K8S的机器学习工具包,太牛了!
KubeFlow -> 初探

file

Machine Learning with Seldon and MLflow

  • Training models with MLflow
  • Deploying models with Seldon

file

file

file

file

Seldon Core

开源史海钩沉系列 [2] Seldon Core
Seldon核心将您的ML模型(Tensorflow,Pytorch,H2o等)或语言包装器(Python,Java等)转换为生产REST / GRPC微服务。

Seldon可以扩展到数千种生产机器学习模型,并提供先进的机器学习功能,包括高级度量,请求日志记录,解释器,异常值检测器,A / B测试,Canaries等。

需求来自何方
机器学习的推理,指的是利用已经训练好的模型,对外提供服务的过程。举个例子,比如我们训练好了一个图像分类的模型。接下来,我们就需要把这个模型对外提供服务出去。我们可以把它包装成 RESTful 的服务,也可以通过 RPC 的方式对外暴露。模型的用户只需要通过接口传入一张图片,我们的模型推理服务会告诉用户,图片上的是猫是狗还是虎。

相比于传统的 RESTful 服务,它有一些自己的独特需求。首先,模型推理服务存在对 GPU 等设备的需求。它与训练相比,虽然计算量小很多,但是仍然可以利用 GPU 进行加速。除此之外,一般深度学习模型的推理服务除了模型服务本身,还需要一些前处理,后处理的逻辑。在更加复杂的场景下,可能还会涉及到模型与模型间的关联。比如在 OCR 场景中,有时需要一个模型先对图片进行悬正(就是把图片摆正),再把悬正好的输出作为接下来的模型的输入,进行下一步的处理。模型与模型,模型与前处理后处理逻辑等组成一个有向无环的推理图(DAG)。

因此,我们很难把它当做普通的 RESTful 或者是 gRPC 服务去部署。但我们仍然需要 Kubernetes,去解决一些共同的问题。比如资源调度,对 GPU 的监控,自动扩缩容,请求的监控,对流量的转发与 AB 测试等等。

那么那些在机器学习推理的场景下特有的需求,应该如何解决呢?这就是 Seldon Core 想要做的事情。

Seldon Core 支持简单的模型推理场景,也支持有向无环的推理图场景。比如在图中的第二个复杂的推理图,一共展示了四个特殊的模型服务的步骤组成的工作流。首先是 Explanation,它负责进行模型的解释。接下来是异常值检测,然后是特征转换 Transformer,最后是通过一个 Router,将流量路由到 A,B,C 三个模型中表现最好的模型中。

核心概念
为了支持推理图,Seldon Core 抽象出了五个组件,每个组件可以理解为是图中的一个节点:

file

  • Model
  • Router
  • Combiner
  • Transformer
  • Output_Transformer

其中 Model 是模型,提供 REST 和 gRPC 服务。值得一提的是,Seldon Core 的模型是进行了封装的,提供的是封装后的 API,其输入和输出的格式都是统一的。


相关文章:
Seldon 官方网站
炼丹师的工程修养之五:KubeFlow介绍和源码分析
在阿里云容器服务上部署Kubeflow Pipelines服务

为者常成,行者常至