Running and developing workflows in Jupyter notebooks#
Flyte supports the development, running, and debugging of tasks and workflows in an interactive Jupyter notebook environment, which accelerates the iteration speed when building data- or machine learning-driven applications.
Attention
This feature requires the flytekit
version 1.14.0
or higher.
Prerequisites
This guide assumes that you’ve completed the previous guides for Running and Scheduling Workflows. The code snippets in this guide are intended to be run in a Jupyter notebook.
The code of this guide can be found in the flytesnacks
Create an interactive FlyteRemote
object#
In Running and Scheduling Workflows, you learned
how to run registered Flyte workflows from a Python runtime using the
FlyteRemote
client.
When developing workflows in a Jupyter notebook, FlyteRemote
provides an
interactive interface to register and run workflows on a Flyte cluster. Let’s
create an interactive FlyteRemote
object:
from flytekit.configuration import Config
from flytekit.remote import FlyteRemote
remote = FlyteRemote(
config=Config.auto(),
default_project="flytesnacks",
default_domain="development",
interactive_mode_enabled=True,
)
Note
The interactive_mode_enabled
flag is automatically set to True
when running
in a Jupyter notebook environment, enabling interactive registration and execution
of workflows.
Running a task or a workflow#
You can run entities (tasks or workflows) using the FlyteRemote
execute()
method.
During execution, flytekit
first checks if the entity is registered with the
Flyte backend, and if not, registers it before execution.
execution = remote.execute(my_task, inputs={"name": "Flyte"})
execution = remote.execute(my_wf, inputs={"name": "Flyte"})
You can then fetch the inputs and outputs of the execution by following the steps in Fetching inputs and outputs of an execution.
When Does Interactive FlyteRemote
Re-register an Entity?#
The interactive FlyteRemote
client re-registers an entity whenever it’s
redefined in the notebook, including when you re-execute a cell containing the
entity definition, even if the entity remains unchanged. This behavior facilitates
iterative development and debugging of tasks and workflows in a Jupyter notebook.
What’s next?#
In this guide, you learned how to develop and run tasks and workflows in a
Jupyter Notebook environment using interactive FlyteRemote
.
In the next guide, you’ll learn how to visualize tasks using Flyte Decks.