Katana ML Skipper:简单灵活的机器学习工作流引擎
Katana ML Skipper是一个简单而灵活的机器学习工作流引擎。它可以帮助跨多个微服务编排事件,并创建可执行的流程来处理请求。该引擎的设计理念是可以与任何微服务配置使用,为用户提供了极大的灵活性。
主要特点
- 简单灵活的架构设计
- 可与任何微服务配置使用
- 跨服务事件编排能力
- 可创建可执行的工作流
- 支持Docker和Kubernetes部署
- 提供Python和Node.js SDK
系统架构
Katana ML Skipper的系统架构主要包含以下几个部分:
-
引擎(Engine):核心逻辑部分,负责工作流的编排和执行。
-
通信(Communication):处理微服务之间的消息传递,基于RabbitMQ实现。
-
API:提供REST API接口,用于触发和管理工作流。
-
微服务(Services):可插拔的微服务集合,用户可以根据需要自定义。
-
工作流(Workflow):定义具体的工作流逻辑。
-
日志(Logger):记录系统运行日志。
引擎和通信部分是通用的,可以被复用。微服务部分提供了一组样例服务,用户可以根据自己的需求替换成自己的服务。
快速开始
- 使用Docker Compose启动:
docker-compose up --build -d
- 访问Web API:
http://127.0.0.1:8080/api/v1/skipper/tasks/docs
- 使用Kubernetes部署:
docker-compose -f docker-compose-kubernetes.yml build
./kubectl-setup.sh
- 访问Kubernetes部署的API:
http://kubernetes.docker.internal/api/v1/skipper/tasks/docs
组件说明
- api: Web API实现
- workflow: 工作流逻辑
- services: 微服务样例集合
- rabbitmq: RabbitMQ消息代理服务
- skipper-lib: Python SDK
- skipper-lib-js: Node.js SDK
- logger: 日志服务
使用场景
Katana ML Skipper可以用于构建各种机器学习工作流场景,例如:
- 数据预处理流水线
- 模型训练和评估流程
- 推理服务编排
- A/B测试系统
- 特征工程流程
它提供了灵活的框架,让用户可以根据自己的需求定制复杂的机器学习工作流。
扩展性
Skipper设计了良好的可扩展性:
-
微服务可插拔:用户可以使用任何语言实现自己的微服务。
-
多语言SDK:目前提供Python和Node.js SDK,后续会支持更多语言。
-
云原生支持:可以部署到任何支持Kubernetes的云平台。
-
弹性伸缩:使用Kubernetes可以轻松实现服务的水平扩展。
结语
Katana ML Skipper为构建机器学习工作流提供了简单灵活的解决方案。无论是用于research还是production,它都能很好地满足MLOps的需求。希望这个开源项目能够帮助更多的团队简化机器学习工作流程,提高工作效率。
欢迎访问GitHub仓库了解更多细节,也欢迎贡献代码共同完善这个项目。让我们一起打造更强大的机器学习基础设施!