Skip to content

Commit

Permalink
Readme update 2023 (#4549)
Browse files Browse the repository at this point in the history
* 1st stab at updating README

Signed-off-by: davidmirror-ops <[email protected]>

* Expand README

Signed-off-by: davidmirror-ops <[email protected]>

* Remove code snippets

Signed-off-by: davidmirror-ops <[email protected]>

* update readme

Signed-off-by: davidmirror-ops <[email protected]>

* Add note to BUILD section

Signed-off-by: davidmirror-ops <[email protected]>

* Apply 1st round of reviews v2

Signed-off-by: davidmirror-ops <[email protected]>

* Remove question marks

Signed-off-by: davidmirror-ops <[email protected]>

* Unify build and scale sections

Signed-off-by: davidmirror-ops <[email protected]>

* reposition gif

Signed-off-by: davidmirror-ops <[email protected]>

---------

Signed-off-by: davidmirror-ops <[email protected]>
Signed-off-by: David Espejo <[email protected]>
Co-authored-by: Niels Bantilan <[email protected]>
Co-authored-by: Eduardo Apolinario <[email protected]>
  • Loading branch information
3 people authored Jan 2, 2024
1 parent 81ce71e commit cb37291
Showing 1 changed file with 98 additions and 64 deletions.
162 changes: 98 additions & 64 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,6 @@
:building_construction: :rocket: :chart_with_upwards_trend:
</p>

<p align="center">
<strong>
Build. Deploy. Scale.
</strong>
</p>

Flyte is an **open-source orchestrator** that facilitates building production-grade data and ML pipelines. It is built for scalability and reproducibility, leveraging Kubernetes as its underlying platform. With Flyte, user teams can construct pipelines using the Python SDK, and seamlessly deploy them on both cloud and on-premises environments, enabling distributed processing and efficient resource utilization.

<p align="center">
<a href="https://github.com/flyteorg/flyte/releases/latest">
Expand All @@ -37,82 +30,123 @@ Flyte is an **open-source orchestrator** that facilitates building production-gr
<img src="https://img.shields.io/badge/Slack-Chat-pink?style=for-the-badge&logo=slack" alt="Flyte Slack label" /></a>
</p>

Flyte is an open-source orchestrator that facilitates building production-grade data and ML pipelines. It is built for scalability and reproducibility, leveraging Kubernetes as its underlying platform. With Flyte, user teams can construct pipelines using the Python SDK, and seamlessly deploy them on both cloud and on-premises environments, enabling distributed processing and efficient resource utilization.

<h2 align="center">
Build
</h2>
<p>
Write code in Python or any other language and leverage a robust type engine.
</p>

<img alt="Getting started with Flyte" src="https://raw.githubusercontent.com/flyteorg/static-resources/main/common/flytereadmebuildv2.gif" style="width: 60%; height: auto;" />

<h2 align="center">
Deploy & Scale
</h2>
<p>
Either locally or on a remote cluster, execute your models with ease.
</p>
<img alt="Getting started with Flyte" src="https://raw.githubusercontent.com/flyteorg/static-resources/main/common/flytereadme-deploy.gif" style="width: 60%; height: auto;" />


<h3 align="center">
<a href="#quick-start">Get Started</a>
<span> · </span>
<a href="https://docs.flyte.org/">Documentation</a>
<span> · </span>
<a href="#resources">Resources</a>
<a href="#how-to-stay-involved">Resources</a>
</h3>

<br />

<img alt="Getting started with Flyte, showing the welcome screen and Flyte dashboard" src="https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/getting_started/getting_started_console.gif" style="width: 100%; height: auto;" />

## Table of contents
* [Quick start](#quick-start)
* [Tutorials](#tutorials)
* [Features](#features)
* [Who uses Flyte](#whos-using-flyte)
* [How to stay involved](#how-to-stay-involved)
* [How to contribute](#how-to-contribute)
---

## Features

We ship new features, bug fixes and performance improvements regularly. Read our [release notes](https://github.com/flyteorg/flyte/releases) to stay updated.

:rocket: **Strongly typed interfaces**: Validate your data at every step of the workflow by defining data guardrails using Flyte types. <br />
:globe_with_meridians: **Any language**: Write code in any language using raw containers, or choose [Python](https://github.com/flyteorg/flytekit), [Java](https://github.com/flyteorg/flytekit-java), [Scala](https://github.com/flyteorg/flytekit-java) or [JavaScript](https://github.com/NotMatthewGriffin/pterodactyl) SDKs to develop your Flyte workflows. <br />
:bar_chart: **Map tasks**: Achieve parallel code execution with minimal configuration using [map tasks](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/map_task.html). <br />
:star2: **Dynamic workflows**: [Build flexible and adaptable workflows](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/dynamics.html) that can change and evolve as needed, making it easier to respond to changing requirements. <br />
:deciduous_tree: **Branching**: [Selectively execute branches](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/conditions.html) of your workflow based on static or dynamic data produced by other tasks or input data. <br />
:open_file_folder: **FlyteFile & FlyteDirectory**: Transfer [files](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/files.html) and [directories](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/folders.html) between local and cloud storage. <br />
:card_file_box: **Structured dataset**: Convert dataframes between types and enforce column-level type checking using the abstract 2D representation provided by [Structured Dataset](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/data_types_and_io/structured_dataset.html). <br />
:shield: **Recover from failures**: Recover only the failed tasks. <br />
:arrows_counterclockwise: **Rerun a single task**: Rerun workflows at the most granular level without modifying the previous state of a data/ML workflow. <br />
:vertical_traffic_light: **Versioned workflows**: Reproduce results and roll back to a previous workflow version any time. <br />
:mag: **Cache outputs**: Cache task outputs by passing `cache=True` to the task decorator. <br />
:triangular_flag_on_post: **Intra-task checkpointing**: [Checkpoint progress](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/checkpoint.html) within a task execution. <br />
:earth_americas: **Multi-tenancy**: Multiple users can share the same platform while maintaining their own distinct data and configurations. <br />
:alarm_clock: **Timeout**: Define a timeout period, after which the task is marked as failure. <br />
:lock: **Immutability**: Immutable executions help ensure reproducibility by preventing any changes to the state of an execution. <br />
:dna: **Data lineage**: Track the movement and transformation of data throughout the lifecycle of your data and ML workflows. <br />
:chart_with_upwards_trend: **Data visualization**: Visualize data, monitor models and view training history through plots. <br />
:factory: **Dev to prod**: As simple as changing your [domain](https://docs.flyte.org/en/latest/concepts/domains.html) from development or staging to production. <br />
:money_with_wings: **Spot or preemptible instances**: Schedule your workflows on spot instances by setting `interruptible` to `True` in the task decorator. <br />
:cloud: **Cloud-native deployment**: Deploy Flyte on AWS, GCP, Azure and other cloud services. <br />
:calendar: **Scheduling**: [Schedule](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/productionizing/lp_schedules.html) your data and ML workflows to run at a specific time. <br />
:mega: **Notifications**: Stay informed about changes to your workflow's state by configuring [notifications](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/productionizing/lp_notifications.html) through Slack, PagerDuty or email. <br />
:hourglass: **Timeline view**: Evaluate the duration of each of your Flyte tasks and identify potential bottlenecks. <br />
:fast_forward: **GPU acceleration**: Enable and control your tasks’ GPU demands by requesting resources in the task decorator. <br />
:whale: **Dependency isolation via containers**: Maintain separate sets of dependencies for your tasks so no dependency conflicts arise. <br />
:arrows_counterclockwise: **Parallelism**: Flyte tasks are inherently parallel to optimize resource consumption and improve performance. <br />
:floppy_disk: **Allocate resources dynamically** at the task level. <br />
:play_or_pause_button: [Wait](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/waiting_for_external_inputs.html) for **external inputs** before proceeding with the execution. <br />

## Quick start

If you want to try out Flyte, the easiest way to get started is by using the Flyte Hosted Sandbox, available at https://sandbox.union.ai/. It allows you to experiment with Flyte's capabilities without installing anything on your local machine.

However, if you prefer to install Flyte locally and run a workflow, our [getting started guide](https://docs.flyte.org/projects/cookbook/en/latest/index.html) is the best place to start. It provides step-by-step instructions on how to install Flyte locally and run your first workflow.

> If you're unsure what either a [Flyte task](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/basics/task.html), or a [workflow](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/basics/workflow.html) is, be sure to check out our guides on both!
1. Install Flyte's Python SDK
```bash
pip install flytekit
```
2. Create a workflow (see [example](https://github.com/flyteorg/flytesnacks/blob/master/examples/basics/basics/hello_world.py))
3. Run it locally with:
```bash
pyflyte run hello_world.py hello_world_wf
```
**Ready to try a Flyte cluster?**

1. Create a new sandbox cluster, running as a Docker container:
```bash
flytectl demo start
```
2. Now execute your workflows on the cluster:
```bash
pyflyte run --remote hello_world.py hello_world_wf
```
<img alt="Getting started with Flyte, showing the welcome screen and Flyte dashboard" src="https://raw.githubusercontent.com/flyteorg/static-resources/main/flytesnacks/getting_started/getting_started_console.gif" style="width: 100%; height: auto;" />

### Deploy Flyte to production
**Do you want to see more but don't want to install anything?**

The [deployment guide](https://docs.flyte.org/en/latest/deployment/index.html) provides useful information on how to self-host and manage Flyte.
Head over to https://sandbox.union.ai/. It allows you to experiment with Flyte's capabilities from a hosted Jupyter notebook.

## Adopters
**Ready to productionize?**

Join the likes of LinkedIn, Spotify, Freenome, Pachama, Gojek, and Woven Planet in adopting Flyte. For a full list of adopters and information on how to add your organization or project, please visit our [ADOPTERS](https://github.com/flyteorg/community/blob/main/ADOPTERS.md) page.
Go to the [Deployment guide](https://docs.flyte.org/en/latest/deployment/deployment/index.html) for instructions to install Flyte on different environments

## Tutorials
- [Fine-tune Code Llama on the Flyte codebase](https://github.com/unionai-oss/llm-fine-tuning/tree/main/flyte_llama#readme)
- [Forecast sales with Horovod and Spark](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/forecasting_sales/index.html)
- [Nucleotide Sequence Querying with BLASTX](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/blast/index.html)

## Resources
## Features
🚀 **Strongly typed interfaces**: Validate your data at every step of the workflow by defining data guardrails using Flyte types.<br>
🌐 **Any language**: Write code in any language using raw containers, or choose [Python](https://github.com/flyteorg/flytekit), [Java](https://github.com/flyteorg/flytekit-java), [Scala](https://github.com/flyteorg/flytekit-java) or [JavaScript](https://github.com/NotMatthewGriffin/pterodactyl) SDKs to develop your Flyte workflows. <br />
🔒 **Immutability**: Immutable executions help ensure reproducibility by preventing any changes to the state of an execution. <br />
🧬 **Data lineage**: Track the movement and transformation of data throughout the lifecycle of your data and ML workflows. <br />
📊 **Map tasks**: Achieve parallel code execution with minimal configuration using [map tasks](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/map_task.html). <br />
🌎 **Multi-tenancy**: Multiple users can share the same platform while maintaining their own distinct data and configurations. <br />
🌟 **Dynamic workflows**: [Build flexible and adaptable workflows](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/dynamics.html) that can change and evolve as needed, making it easier to respond to changing requirements. <br />
⏯️ [Wait](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/waiting_for_external_inputs.html) for **external inputs** before proceeding with the execution. <br />
🌳 **Branching**: [Selectively execute branches](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/conditions.html) of your workflow based on static or dynamic data produced by other tasks or input data. <br />
📈 **Data visualization**: Visualize data, monitor models and view training history through plots. <br />
📂 **FlyteFile & FlyteDirectory**: Transfer [files](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/files.html) and [directories](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/folders.html) between local and cloud storage. <br />
🗃️ **Structured dataset**: Convert dataframes between types and enforce column-level type checking using the abstract 2D representation provided by [Structured Dataset](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/data_types_and_io/structured_dataset.html). <br />
🛡️ **Recover from failures**: Recover only the failed tasks. <br />
🔁 **Rerun a single task**: Rerun workflows at the most granular level without modifying the previous state of a data/ML workflow. <br />
🔍 **Cache outputs**: Cache task outputs by passing `cache=True` to the task decorator. <br />
🚩 **Intra-task checkpointing**: [Checkpoint progress](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/advanced_composition/checkpoint.html) within a task execution. <br />
**Timeout**: Define a timeout period, after which the task is marked as failure. <br />
🏭 **Dev to prod**: As simple as changing your [domain](https://docs.flyte.org/en/latest/concepts/domains.html) from development or staging to production. <br />
💸 **Spot or preemptible instances**: Schedule your workflows on spot instances by setting `interruptible` to `True` in the task decorator. <br />
☁️ **Cloud-native deployment**: Deploy Flyte on AWS, GCP, Azure and other cloud services. <br />
📅 **Scheduling**: [Schedule](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/productionizing/lp_schedules.html) your data and ML workflows to run at a specific time. <br />
📢 **Notifications**: Stay informed about changes to your workflow's state by configuring [notifications](https://docs.flyte.org/projects/cookbook/en/latest/auto_examples/productionizing/lp_notifications.html) through Slack, PagerDuty or email. <br />
⌛️ **Timeline view**: Evaluate the duration of each of your Flyte tasks and identify potential bottlenecks. <br />
💨 **GPU acceleration**: Enable and control your tasks’ GPU demands by requesting resources in the task decorator. <br />
🐳 **Dependency isolation via containers**: Maintain separate sets of dependencies for your tasks so no dependency conflicts arise. <br />
🔀 **Parallelism**: Flyte tasks are inherently parallel to optimize resource consumption and improve performance. <br />
💾 **Allocate resources dynamically** at the task level. <br />


## Who's using Flyte
Join the likes of LinkedIn, Spotify, Freenome, Pachama, Warner Bros. and many others in adopting Flyte for mission-critical use cases. For a full list of adopters and information on how to add your organization or project, please visit our [ADOPTERS](https://github.com/flyteorg/community/blob/main/ADOPTERS.md) page.


## How to stay involved
📆 [Weekly office hours](https://calendly.com/flyte-office-hours-01/30min): Live informal sessions with the Flyte team held every week. Book a 30-minute slot and get your questions answered. <br>
👥 [Biweekly community sync](https://www.addevent.com/event/EA7823958): A biweekly event where the Flyte team provides updates on the project and community members can share their progress and ask questions. <br>
💬 [Slack](https://slack.flyte.org/): Join the Flyte community on Slack to chat with other users, ask questions, and get help. <br>
⚠️ [Newsletter](https://lists.lfaidata.foundation/g/flyte-announce/join): join this group to receive the Flyte Monthly newsletter. <br>
📹 [Youtube](https://www.youtube.com/channel/UCNduEoLOToNo3nFVly-vUTQ): Tune into panel discussions, customer success stories, community updates and feature deep dives. <br>
📄 [Blog](https://flyte.org/blog): Here, you can find tutorials and feature deep dives to help you learn more about Flyte. <br>
💡 [RFCs](rfc/.): RFCs are used for proposing new ideas and features to improve Flyte. You can refer to them to stay updated on the latest developments and contribute to the growth of the platform.

:spiral_calendar: [Weekly office hours](https://calendly.com/flyte-office-hours-01/30min): Live informal sessions with the Flyte team held every week. Book a 30-minute slot and get your questions answered. <br>
:couple: [Biweekly community sync](https://www.addevent.com/event/EA7823958): A biweekly event where the Flyte team provides updates on the project and community members can share their progress and ask questions. <br>
:speech_balloon: [Slack](https://slack.flyte.org/): Join the Flyte community on Slack to chat with other users, ask questions, and get help. <br>
:warning: [GitHub](https://github.com/flyteorg/flyte): Check out the Flyte project on GitHub to file issues, contribute code, and stay up to date on the latest development. <br>
:video_camera: [Youtube](https://www.youtube.com/channel/UCNduEoLOToNo3nFVly-vUTQ): Tune into panel discussions, customer success stories, community updates and feature deep dives. <br>
:writing_hand: [Blog](https://flyte.org/blog): Here, you can find tutorials and feature deep dives to help you learn more about Flyte. <br>
:bulb: [RFCs](rfc/.): RFCs are used for proposing new ideas and features to improve Flyte. You can refer to them to stay updated on the latest developments and contribute to the growth of the platform.

## How to contribute

There are many ways to get involved in Flyte, including:

- Submitting [bugs](https://github.com/flyteorg/flyte/issues/new?assignees=&labels=bug%2Cuntriaged&template=bug_report.yaml&title=%5BBUG%5D+) and [feature requests](https://github.com/flyteorg/flyte/issues/new?assignees=&labels=enhancement%2Cuntriaged&template=feature_request.yaml&title=%5BCore+feature%5D+) for various components.
Expand Down

0 comments on commit cb37291

Please sign in to comment.