flyte
Kubernetes 原生的 AI 工作流编排引擎,支持纯 Python 声明式 ML 流水线和 A
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Kubernetes 原生的 AI 工作流编排引擎,支持纯 Python 声明式 ML 流水线和 A
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Flyte 项目组织头像
想象一下:你正在训练一个多模态大模型,数据要从对象存储拉到预处理节点,再分流到 GPU 集群做分布式训练,最后结果汇总到评估模块——每一个环节都可能因为网络抖动、资源争抢、任务依赖而失败。传统方式下,光是管理这些任务之间的依赖关系,就足以让一个工程师耗费一整天。
Flyte 正是为解决这类问题而生。它将 AI 工作流抽象为一组有向无环图(DAG),每个节点可以是 Python 函数、Spark 作业、Kubernetes Job 或任何可执行的计算单元,Flyte 负责管理调度、重试、缓存、监控和数据传递,让工程师专注于业务逻辑而非基础设施。
Flyte 最初由 Spotify 的机器学习基础设施团队开发,用于支撑该公司的推荐系统和内容理解系统。在内部使用多年后,Spotify 于 2018 年将 Flyte 开源,随后项目捐赠给 Linux Foundation AI & Data 基金会,并在 2022 年正式毕业成为顶级项目。
2025 年,Flyte 发布了具有里程碑意义的 Flyte 2.0,将核心架构从 Flyte 1 的 gRPC 扩展模式全面升级为 Go 语言原生实现,去掉了对梁山(梁山是 Flyte 1 中负责任务执行的组件)的强依赖,架构更简洁、性能更强。同时,官方推出 flyte-sdk Python 包,用纯 Python 的装饰器风格定义工作流,降低了使用门槛。
Flyte 2 的 idl2(接口定义层)采用 Protobuf 定义所有任务输入输出的数据结构。当你定义一个返回 StructuredDataset[ImageClass] 的任务时,下游任务能精确知道它收到了什么类型,类型不匹配时在编译期就会报错,而不是等到运行时才发现数据格式错位。这对于多阶段 ML 流水线——从数据标注到特征工程再到模型训练——尤为重要,数据血缘清晰可追溯。
工作流的每个任务默认开启输入哈希缓存:相同输入的任务不会重复执行,直接复用上次缓存结果。对于机器学习场景,这意味着数据预处理、特征提取等耗时步骤可以被跳过,只执行真正需要重新计算的节点。
同时,dataproxy 模块提供了统一的数据访问层,支持 S3、GCS、Azure Blob、HDFS 等多种存储后端,任务之间不需要关心数据实际存在哪里,只需声明输入输出接口。
Flyte 2 的调度器直接与 Kubernetes API Server 交互,每个任务被编译为 K8s 的 Job、Spark Application 或 Ray Job 来执行。这意味着 Flyte 天然继承了 Kubernetes 的资源隔离、优先级调度、命名空间管理能力。对于已有 K8s 集群的团队来说,部署 Flyte 只需要一条 Helm 命令,不需要额外部署消息队列或调度器。
flyteplugins 目录包含了大量官方插件,覆盖主流 AI 工具链:
开发者也可以通过 Flyte IDL 定义自己的 Plugin,无需修改核心代码。
Flyte 2 的架构分为两层:
核心引擎(Go):位于根目录的 flyteidl2、flytestdlib、flyteplugins、app 等模块,构成事件驱动的调度内核,负责接收工作流注册请求、管理任务状态、触发重试策略。
执行层(可插拔):通过 Protobuf 接口定义 Task 的执行方式,flyteplugins 中的各个子插件实现具体的执行逻辑。数据传递走 gRPC 流,不依赖共享文件系统。
这种架构让 Flyte 2 比 Flyte 1 轻量得多:不再需要部署 Admin、Web Console、Data Catalog 等多个 Stateful 服务,核心进程只需要一个 Go 二进制文件加 PostgreSQL(或 SQLite)。
使用 Flyte 2 编写工作流非常简单,不需要写 YAML 配置,只需 Python 代码:
import asyncio
import flyte
env = flyte.TaskEnvironment(
name="image_classifier",
image=flyte.Image.from_debian_base(python_version=(3, 12)),
)
@env.task
def preprocess(data_path: str) -> list[float]:
# 数据预处理逻辑
...
@env.task(gpu=GPU.T4)
async def train_model(features: list[float]) -> str:
# 分布式训练逻辑
...
@env.workflow
async def pipeline(data_path: str):
features = preprocess(data_path)
model = train_model(features)
return evaluate(model)
装饰器 @env.task 和 @env.workflow 自动将 Python 函数注册到 Flyte 后端,任务间的数据传递由 Flyte 管理,开发者不需要手动序列化/反序列化。
需要客观指出,Flyte 并不是万能的:
部署门槛高:虽然有 Helm Chart,但完整部署需要一个配置好的 Kubernetes 集群,对于个人开发者或小团队来说,学习和运维成本不低。官方提供的 Flyte Devbox 可以在本地模拟体验,但与生产环境仍有差距。
没有 Web UI:Flyte 2 核心本身不包含图形化管理界面,监控和追踪需要借助外部工具(如 Flyteconsole 是 Flyte 1 的遗留组件,Flyte 2 仍在建设中)。这与 Kubeflow 的 TensorBoard 集成相比,便利性略弱。
与竞品对比:Prefect、Airflow 更适合快速上手的小型数据管道;Kubeflow Pipelines 在 Kubernetes 生态内深度集成;而 Flyte 的强项在于大规模、多租户、高并发的生产级 ML 平台,对类型安全和数据血缘有严格要求的场景。
Flyte 在 GitHub 上拥有超过 7000 颗星,是 LF AI & Data 基金会下最活跃的项目之一。项目的 hacktoberfest topic 表明社区活跃度高,同时项目维护者(主要是 Union.ai 团队)在持续推进 2.0 的稳定性和生态建设。
从行业趋势看,随着 AI Agent 和 LLM 应用的大规模落地,对工作流编排工具的需求急剧增长。Flyte 的动态 DAG、Agent Task 抽象(体现在 topics 中的 agentic 和 ai-agents)正好契合这一方向——不只是编排数据管道,更能编排 AI Agent 的多步骤推理链路。这使得 Flyte 在 AI Agent 编排赛道(与 LangChain Agents、CrewAI 等相比)中,具有更强的生产级工程能力。
项目 Star 增长稳健(2024 年至今稳中有升),核心维护团队 Union.ai 已将其商业化(Union Cloud),社区生态正向良性循环发展。对于需要构建可靠 AI 工作流基础设施的团队,Flyte 是值得重点关注的技术选型。