Samhita Alla
Samhita Alla

Flyte 1.7: Flyte Agents, Revamped Kubeflow Plugins and More

We’re excited to announce the release of Flyte 1.7! This update includes a host of bug fixes and introduces a few exciting new features. Without further ado, let's explore the highlights of this release.

Flyte Agents

In Flyte 1.6, we introduced a powerful feature called "Flyte Agents," which are external backend plugins designed to enhance the execution of tasks. These agents act as long-running stateless services, eliminating the need to create a new pod for each task. This reduces overhead and provides scalability benefits, since the agent service can easily scale up or down based on workload demands.

One of the key advantages of Flyte Agents is their language-agnostic design. Although currently limited to Python, support for other programming languages is on the horizon. This feature is specifically aimed at simplifying authoring, testing and deployment for data scientists and ML engineers who may not possess deep expertise in Golang.

Flyte 1.7 represents significant steps to enhance the developer experience by improving integration and support for authoring backend plugins. One notable improvement is the ability to write backend plugins in Python and test them locally without the need to run the entire Flyte cluster.

For instance, with the new capabilities, you can run a BigQuery task locally without running Propeller. This allows for faster development iterations and easier testing of backend plugins, streamlining the development process and improving overall efficiency.

You can find more details in the Flyte 1.6 release notes and the documentation preview.

Revamped Kubeflow Plugins

Flyte 1.7 introduces revamped Kubeflow plugins that offer enhanced capabilities for configuring different replicas. You can now declare specifications such as images, resources, command (for MPI only) and restart policy for different replica groups. The refactored Kubeflow plugins include `TFJob`, `MPIJob` and `PyTorchJob`.

It's important to note that this change is backward compatible.

Copied to clipboard!
@task(
    task_config=MPIJob(
        launcher=Launcher(
            replicas=1,
        ),
        worker=Worker(
            replicas=5,
            requests=Resources(cpu="2", mem="2Gi"),
            limits=Resources(cpu="4", mem="2Gi"),
        ),
        slots=2,
    ),
    cache=True,
    requests=Resources(cpu="1"),
    cache_version="1",
)

def my_mpi_task(x: int, y: str) -> int:
    return x


An example `MPIJob` configuration

Other Enhancements

  • View remote URLs when uploading and downloading the metadata in the timeline deck.
  • Optimize your viewing experience with a dedicated fullscreen mode in the Flyte Deck.
  • Use the `pyflyte run` command with remote file inputs, which are automatically downloaded and cleaned up by Flyte after registration.
Copied to clipboard!
pyflyte run --remote https://raw.githubusercontent.com/flyteorg/flytesnacks/master/cookbook/core/flyte_basics/basic_workflow.py my_wf --a 3 --b test

1.7 Contributors

We extend our heartfelt gratitude to all the contributors who have made invaluable contributions to Flyte 1.7. Thank you for your dedication and support!

{{contributors-1-7="/blog-component-assets"}}

We highly value the feedback of our users and community members, which helps us to improve our product continuously. To connect with other users and get support from our team, we encourage you to join our Slack channel. For updates on product development, community events, and announcements, follow us on Twitter to join the conversation and share your thoughts.

In case you encounter any issues or bugs, we request you let us know by creating a GitHub issue. If you find Flyte useful, don't forget to star us on GitHub.