Skip to content
This repository has been archived by the owner on Dec 20, 2023. It is now read-only.

pingsutw/flyte-monorepo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flyte and LF AI & Data Logo

Flyte

💻 🛳 🚀

Code. Ship. Scale.

Flyte is a workflow automation platform for complex, mission-critical data, and ML processes at scale

Current Release Sandbox Build End-to-End Tests License Commit Activity Commits since Last Release GitHub Milestones Completed GitHub Next Milestone Percentage Docs OpenSSF Best Practices Flyte Helm Chart Twitter Follow Join Flyte Slack


What is Flyte?

Flyte is a structured programming and distributed processing platform that enables highly concurrent, scalable, and maintainable workflows for Machine Learning and Data Processing. It is a fabric that connects disparate computation backends using a type-safe data dependency graph. It records all changes to a pipeline, making it possible to rewind time. It also stores a history of all executions and provides an intuitive UI, CLI, and REST/gRPC API to interact with the computation.

Flyte is more than a workflow engine -- it uses workflow as a core concept, and task (a single unit of execution) as a top-level concept. Multiple tasks arranged in a data producer-consumer order creates a workflow.

Workflows and Tasks can be written in any language, with out-of-the-box support for Python, Java and Scala. Flyte was designed to manage the complexity that arises in Data and ML teams and ensure they keep up their high velocity of delivering business impacting features. One way it achieves this is by separating the control-plane from the user-plane. Thus, every organization can offer Flyte as a service to their end-users where the service is managed by folks who are more infrastructure-focused, while the users use the intuitive interface of Flytekit.

⁉️ Why Flyte

  • Kubernetes-native workflow automation platform
  • Ergonomic SDKs in Python, Java, and Scala
  • Versioned, auditable, and reproducible pipelines
  • Data-aware and strongly-typed
  • Resource-aware and deployments at scale
Flyte UI
✨ Flyte UI ✨

Quickstart

NOTE: If you want to try Flyte in the browser without installing anything locally, visit the Flyte Hosted Sandbox


  1. Ensure you're using Python version >=3.7, <=3.10
  2. Install Flytekit, Flyte's Python SDK:
$ pip install flytekit
  1. Then install flytectl, the CLI for interacting with a Flyte backend:
brew install flyteorg/homebrew-tap/flytectl

You're all set!

For installation instructions for other operating systems and how to run an example workflow, visit the Getting Started guide!

⭐️ Organizations/projects using Flyte (excerpt)

🔥 Features

  • Used at Scale in production by multiple firms and projects.
  • Proved to scale to more than 1 million executions, and 40+ million containers
  • Data Aware and Resource Aware (Allows organizations to separate concerns - users can use the API, platforms/infra teams can manage the deployments and scaling)
  • Enables collaboration across your organization by:
    • Executing distributed data pipelines/workflows
    • Making it easy to stitch together workflows from different teams and domain experts and share them across teams
    • Comparing results of training workflows over time and across pipelines
    • Simplifying the complexity of multi-step, multi-owner workflows
  • Get Started quickly -- start locally and scale to the cloud instantly
  • gRPC / REST interface to define and execute tasks and workflows
  • Typesafe construction of pipelines -- each task has an interface characterized by its input and output, so illegal construction of pipelines fails during declaration, rather than at runtime
  • Supports multiple data types for machine learning and data processing pipelines, such as Blobs (images, arbitrary files), Directories, Schema (columnar structured data), collections, maps, etc.
  • Memoization and Lineage tracking
  • Provides logging and observability
  • Workflow features:
    • Start with one task, convert to a pipeline, attach multiple schedules, trigger using a programmatic API, or on-demand
    • Parallel step execution
    • Extensible backend to add customized plugin experience (with simplified user experience)
    • Branching
    • Workflow of workflows - subworkflows (a workflow can be embedded within one node of the top-level workflow)
    • Distributed remote external workflows (a remote workflow can be triggered and statically verified at compile time)
    • Array Tasks (map a function over a large dataset -- ensures controlled execution of thousands of containers)
    • Dynamic workflows creation and execution with runtime type safety
    • Flytekit plugins with first-class support in Python
    • Arbitrary Flytekit-less containers tasks (RawContainer)
  • Guaranteed reproducibility of pipelines via:
    • Versioned data, code, and models
    • Automatically tracked executions
    • Declarative pipelines
  • Multi-cloud support (AWS, GCP, and others)
  • No single point of failure, and is resilient by design
  • Automated notifications to Slack, Email, and Pagerduty
  • Multi K8s cluster support
  • Out of the box support to run Spark jobs on K8s, Dask jobs on K8s, Hive queries, etc.
  • Snappy Console & Golang CLI (Flytectl)
  • Written in Golang and optimized for jobs that run for a long period of time.
  • Grafana templates (user/system observability)
  • Deploy with Helm and Kustomize

🔌 Available Plugins

Check out the current list of plugins and how to use them


Contributing

There are many ways in which you can participate in this project, including:

🛣️ Live Roadmap

Live roadmap for the project can be found @Github Live Roadmap

📄 RFCs (Request for Comments) & Proposals

Flyte is a community-driven and community-owned software. It is managed using a steering committee and encourages collaboration. The community has a long roadmap for Flyte, but there might be interesting ideas, extensions, or additions that you may want to propose. This is usually done by starting with:

RFCs are encouraged for larger changes. You are welcome to hop into our Slack and talk to the community if you want to test the waters before proposing.

📦 Component Repos

Repo Language Purpose Status
flyte Kustomize,RST deployment, documentation, issues Production-grade
flyteidl Protobuf gRPC/REST API, Workflow language spec Production-grade
flytepropeller Go execution engine Production-grade
flyteadmin Go control plane Production-grade
flytekit Python python SDK and tools Production-grade
flyteconsole Typescript Flyte UI Production-grade
datacatalog Go manage input & output artifacts Production-grade
flyteplugins Go Flyte Backend plugins Production-grade
flytecopilot Go Sidecar to manage input/output for sdk-less Production-grade
flytestdlib Go standard library Production-grade
flytesnacks Python examples, tips, and tricks Maintained
flytekit-java Java/Scala Java & scala SDK for authoring Flyte workflows Incubating
flytectl Go A standalone Flyte CLI Production-grade
homebrew-tap Ruby Tap for downloadable flyte tools (cli etc) Production-grade
bazel-rules skylark/py Use Bazel to build Flyte workflows and tasks Incubating

🤝 Community & Resources

Use the following resources to communicate with Flyte maintainers, contributors and other community members to ask questions and enhance your learning experience:

Asynchronous

Social media

Meetings

Biweekly Community Sync

  • 📣 Flyte OSS Community Sync
    Join this meeting to learn from other users how they are leveraging Flyte for different use cases, ask questions or continue community-related discussions
  • When: every other Tuesday, 9:00 am - 10:00 am PT.

  • Where: Zoom bridge

  • Previous meetings: [notes| recordings]

  • Subscribe to the calendar

Office Hours

Receive support from Flyte maintainers:

  • When: weekly on Wednesdays
  • How: schedule a 30 min session from one of the available slots (7AM, 1PM and 9PM PT) using this link

Knowledge Base

Find answers to the FAQs at Knowledge Base: our minified StackOverflow and magnified Slack.

Conference Talks & Podcasts

Videos and recordings can be found on Flyte's YouTube channel under the Conference Talks and Podcasts playlist.

Podcasts

- MLOps Coffee Session - [Why You Need More Than Airflow](http://go.mlops.community/Oz48gY) - Kelsey Hightower Twitter Space - [Machine Learning in Production](https://twitter.com/i/spaces/1ZkKzbXLekWKv) - Contributor.fyi - [Flyte with Ketan Umare](https://www.contributor.fyi/flyte) - TWIML&AI - [Scalable and Maintainable ML Workflows at Lyft - Flyte](https://twimlai.com/twiml-talk-343-scalable-and-maintainable-workflows-at-lyft-with-flyte-w-haytham-abuelfutuh-and-ketan-umare/) - Software Engineering Daily - [Flyte: Lyft Data Processing Platform](https://softwareengineeringdaily.com/2020/03/12/flyte-lyft-data-processing-platform-with-allyson-gale-and-ketan-umare/) - MLOps Coffee session - [Flyte: an open-source tool for scalable, extensible, and portable workflows](https://anchor.fm/mlops/episodes/MLOps-Coffee-Sessions-12-Flyte-an-open-source-tool-for-scalable--extensible---and-portable-workflows-eksa5k) - Open Data Science - [West Warm Up session with Ketan Umare - Creator of Flyte](https://twitter.com/odsc/status/1451594432369758212)

🧪 Functional Tests Matrix

We run a suite of tests to ensure that basic functionality and a subset of the integrations work across a variety of release versions. Those tests are run in a cluster where specific versions of the Flyte components (such as flyteconsole, flyteadmin, datacatalog, and flytepropeller) are installed, including the released versions and also the latest versions in the case of the nighly runs.

The table below has different release versions as the columns and the result of each test suite as rows:

workflow group nightly v1.0.1 v1.0.0 v0.19.4
core core core core core
integrations-hive integration-hive integration-hive integration-hive integration-hive
integrations-k8s-spark integrations-k8s-spark integrations-k8s-spark integrations-k8s-spark integrations-k8s-spark
integrations-kfpytorch integrations-kfpytorch integrations-kfpytorch integrations-kfpytorch integrations-kfpytorch
integrations-pod integrations-pod integrations-pod integrations-pod integrations-pod
integrations-pandera_examples integrations-pandera_examples integrations-pandera_examples integrations-pandera_examples integrations-pandera_examples
integrations-papermilltasks integrations-papermilltasks integrations-papermilltasks integrations-papermilltasks integrations-papermilltasks
integrations-greatexpectations integrations-greatexpectations integrations-greatexpectations integrations-greatexpectations integrations-greatexpectations
integrations-sagemaker-pytorch integrations-sagemaker-pytorch integrations-sagemaker-pytorch integrations-sagemaker-pytorch integrations-sagemaker-pytorch
integrations-sagemaker-training integrations-sagemaker-training integrations-sagemaker-training integrations-sagemaker-training integrations-sagemaker-training

💖 Contributors

A big thank you to the community for making Flyte possible!

953358370901257597118271592984394310830562888811578108056158892184082372896568151852437936015277247631688870927777173452166474898565628986239450880580350323567779831223062603653394572570781228521086981538806453936213261742139142716548702118151754698929928166891937524160650517098894349093160909764361047153313394496745846792724868813302333125543414728265026554345877981179967195110820382072088200209435878192436483016389936511035227846541316881177744713605291042572538760119702581973368315508713994552110974449699333181059180421934393965996099861221940598349643165094906774758183378073226241168692913854113062123054334265487366561716500430375389975434806901302711670020642248654333860700576540257714896664777167782230138253138103843962286288302231071921218666947358951336529176984748488594201737393449803919853373103761951251051153481371700632614101430853310201242112692566122863313070236881763917309187268346585092599579670316716684317784073741621124506321333172411934518615211267324735950860453650681055718143659778006610300847350368575382810157932226953709105876962250381468868437299441958138807158770001206683491005696841735176463994282569530218363301402301534513992536449050679871754882375153593198239562209650189217520040113770222238066524739949104306353191117510415279327818609648658432145935962310919276897260614787204440548010047894806211335881100597998483070069161722433367672539117366388192149921891175392747594611796986304786244025058260484116594158691114211456773749019910345184295326381400897892723761633460303359219229049365945278755869652844979072557696836827492133936104383733327258758032810272071652662753467642291774140143026771971263003151068153661568889937967114232404149968689343819010430512195344216461847646765941174730201354781518414436899736989112714477269703328455404056828107115357320474710217128419026265392850217804851253032755936685311318345091078931324225130002224465646729471486202804703533182199429103263313130875210976393625318519037413772114784116739793833655626670894866754748863181308139027713919823880001770392617851051119318734341672417330872419419101450450788414709014796400253353644124210778098651937811132451016594730508330361604708107592392948148147854100517263167280758916837146386887615811751844696692852310113228575146424054105082160113356122339164210247627390781496808752486650526115494996105856558378320753165133823807434118945041823250369170839638848382966451733751510090384230295799570725486791506754953085803627753472562559728279238894122166981983649055879913779418982821856758026092524