Meetup

MLOps EngineeringLabs

Niels Bantilan, Union.Ai, Haytham Abuelfutuh, Union.AiEpisode 98 · 1:15:40 · Apr 2022 · 711 viewsHosted by Ben Epstein
Thumbnail for MLOps EngineeringLabs Watch on YouTube
TL;DR
  1. 1

    Flyte gives machine learning and data workflows strongly typed tasks, reproducible versions, caching, observability, and Kubernetes-based execution.

  2. 2

    Flyte lets teams move from local Python iteration to remote production workflows while combining execution engines such as Python, BigQuery, and Spark.

  3. 3

    The EngineeringLabs teams used Flyte for an NLP feedback loop, a music genre classifier, and a Brazilian destination similarity application.

Summary

Haytham Abuelfutuh introduces Flyte as a Kubernetes-native workflow automation platform for business-critical machine learning and data processing. He explains how tasks and workflows use typed inputs and outputs, how static and dynamic graphs work, and how Flyte handles registration, versioning, caching, execution, and monitoring. The platform is designed to support a user from local experimentation through remote production runs, while hiding infrastructure details and allowing different execution engines to be combined. The EngineeringLabs challenge asked teams to build production-ready machine learning applications with Flyte in five weeks. The finalist projects included an NLP entity-recognition feedback loop for beauty brands, a music genre classifier, and a destination recommendation system based on embeddings of Brazilian city information. The teams valued local debugging, documentation, the UI, and Flyte's task and workflow model. They also described difficulties with sandbox deployment, production deployment documentation, and debugging across Kubernetes systems. The destination project reported faster scraping through parallel tasks and used launch plans and caching for recurring updates.

Key ideas
04:35

Flyte hides infrastructure while keeping workflow behavior visible

Haytham Abuelfutuh defines Flyte as a Kubernetes-native workflow automation platform for business-critical machine learning and data processes at scale. A workflow is a set of tasks applied to data or another workload, with guarantees around completion, notifications, observability, control, and execution location. Users should focus on their logic instead of reserving machines or managing infrastructure. Flyte aims to support the whole path from early experiments to scheduled production workflows that retrain models when data or other events change.

09:19

Tasks and workflows use interfaces that make components composable

A Flyte task is the smallest unit of work and can be a SQL statement, container, Python function, Spark job, REST call, or another computation. Each task has strongly typed inputs and outputs, so Flyte can validate how components connect and select an appropriate execution method. Workflows compose tasks and other workflows through the same interface. This allows teams to reuse workflows owned by other teams without sharing dependency environments, and it lets Python, Java, Scala, and native containers participate in one workflow.

20:54

Static and dynamic workflows cover different graph-building needs

Flyte statically evaluates ordinary workflows at compile time, which lets users inspect the data flow and graph before execution. Loops can be flattened into repeated nodes when their inputs are known. When the graph depends on runtime inputs, the @dynamic construct defers graph construction until execution. The dynamic function can use Python logic, conditions, and loops, then produce a materialized graph of Flyte tasks. Haytham says this retains the predictability and visibility benefits of static workflows while allowing runtime-dependent computation.

24:17

Versioning, caching, and local execution reduce iteration cost

Flyte can run workflows locally through the command line, providing type checking, output visualization, and local caching while code is being developed. Remote execution adds backend plugins, different task images, UI views, and shareable executions. Registered workflows and tasks receive immutable versions, so a successful workflow from two months earlier can be rerun with the same registered code. Caching is opt-in because tasks may have side effects. When inputs and the cached task version are unchanged, expensive work such as a large query does not need to run again.

37:44

The EngineeringLabs challenge tested Flyte with complete applications

Niels Bantilan explains that the five-week challenge asked teams to build a production-ready machine learning application using Flyte as the compute workhorse and a user interface for interaction. Teams could choose their own machine learning problem and the rest of their stack. Submissions were judged on originality, technical execution, and the friendliness of the model UI. The challenge also gave the Flyte team direct feedback about confusing parts of onboarding and areas where the user experience needed work.

42:45

An NLP team designed a human feedback loop for entity recognition

Team Artifact, also called Adorable Unicorns23, built a beauty-industry application for finding promising independent brands in social media. Their proposed pipeline scraped beauty-related tweets, extracted entities, sent the results to Label Studio for human correction, and evaluated accuracy, precision, and recall. If the metrics were insufficient, the workflow would train a new model and repeat the loop until the target was reached or a maximum iteration count stopped it. The team implemented the model application and training workflows, although it did not complete the full Label Studio deployment architecture.

52:09

The music classifier team used Flyte with MLflow and BentoML

Team Brave Hyenas2 started with an Iris classifier to learn Flyte, then integrated MLflow for experiment tracking and BentoML for model deployment. Their hackathon project classified music genres from audio files. The workflow used tasks for data injection, preprocessing, model training, and inference. Its architecture transformed audio into JSON, trained the model, and exposed the workflow through a Streamlit application. The team found that tasks and workflows were enough to begin, while debugging became harder when Kubernetes and several other systems were involved.

59:50

The destination project combined parallel scraping, embeddings, and caching

The Vamos Daily team built a destination similarity application for Brazilian cities without using personal user data. They collected public information about cities from Wikidata, Portuguese Wikipedia, and English Wikivoyage, then cleaned and translated the text before creating embeddings with a BERT model for Portuguese. They averaged vectors from sections such as history, geography, attractions, and activities, then used k-nearest neighbors with Euclidean distance to recommend similar cities. Flyte ran independent scraping tasks concurrently, supported scheduled retraining, avoided unchanged work through caching, and made requesting GPU resources straightforward.

"We want to make sure you can see that you can get notified, observable, you should have some control of how it runs and where it runs."Haytham Abuelfutuh05:50
Who should watch
  • You are choosing an orchestration system and need to understand how typed tasks, workflow composition, dynamic graphs, and versioned execution fit together.
  • Your team wants a concrete path from local machine learning experiments to Kubernetes-based production workflows.
  • You are evaluating Flyte and want examples of where teams struggled, especially deployment configuration, sandbox use, and debugging across Kubernetes components.