Tutorial Metaflow: Framework MLOps dari Netflix untuk Data Science

# Tutorial Metaflow: Framework MLOps dari Netflix untuk Data Science Metaflow adalah framework open-source yang dikembangkan oleh Netflix untuk membangun dan mengelola proyek data science secara efis...

By Ruby Abdullah · · tutorial
MetaflowMLOpsNetflixPipelinePython

Tutorial Metaflow: Framework MLOps dari Netflix untuk Data Science

Metaflow adalah framework open-source yang dikembangkan oleh Netflix untuk membangun dan mengelola proyek data science secara efisien. Framework ini memungkinkan data scientist untuk fokus pada pemodelan tanpa harus khawatir tentang infrastruktur, orkestrasi, dan deployment. Dalam tutorial ini, kita akan mempelajari cara menggunakan Metaflow dari dasar hingga fitur-fitur lanjutan.

Mengapa Metaflow?

Dalam dunia data science dan machine learning, salah satu tantangan terbesar bukan membangun model, melainkan mengelola seluruh lifecycle dari eksperimen hingga produksi. Metaflow hadir untuk menyelesaikan masalah ini dengan pendekatan yang pragmatis:

  • Human-centric API: Dirancang agar mudah digunakan oleh data scientist, bukan hanya ML engineers
  • Versioning otomatis: Setiap eksperimen secara otomatis di-track dan bisa direproduksi
  • Skalabilitas transparan: Beralih dari laptop ke cloud tanpa mengubah kode
  • Dependency management: Mengelola environment Python secara otomatis
  • Integration: Bekerja dengan AWS, Azure, GCP, dan Kubernetes

Instalasi

Instalasi Dasar

pip install metaflow

Instalasi dengan Dukungan AWS

pip install metaflow[aws]

Verifikasi Instalasi

import metaflow

print(metaflow.version)

Konfigurasi Awal

Setelah instalasi, jalankan konfigurasi:

metaflow configure show

Untuk konfigurasi AWS S3 sebagai datastore:

metaflow configure aws

Konsep Dasar: Flow dan Step

Metaflow menggunakan konsep Flow dan Step untuk mengorganisasi pipeline data science. Sebuah Flow adalah DAG (Directed Acyclic Graph) yang terdiri dari beberapa Step.

Flow Pertama

from metaflow import FlowSpec, step

class HelloFlow(FlowSpec):

@step

def start(self):

print("Memulai flow pertama!")

self.message = "Hello from Metaflow"

self.next(self.end)

@step

def end(self):

print(f"Pesan: {self.message}")

print("Flow selesai!")

if name == 'main':

HelloFlow()

Jalankan flow:

python helloflow.py run

Memahami Artifact

Setiap variabel yang disimpan sebagai self.x dalam sebuah step akan menjadi artifact yang secara otomatis di-versioning dan bisa diakses kembali.

from metaflow import FlowSpec, step

class ArtifactFlow(FlowSpec):

@step

def start(self):

self.data = [1, 2, 3, 4, 5]

self.modelname = "randomforest"

self.next(self.process)

@step

def process(self):

self.result = sum(self.data) 2

print(f"Model: {self.modelname}")

print(f"Hasil: {self.result}")

self.next(self.end)

@step

def end(self):

print(f"Final result: {self.result}")

if name == 'main':

ArtifactFlow()

Branching dan Join

Metaflow mendukung eksekusi paralel melalui branching. Ini sangat berguna untuk membandingkan beberapa model secara bersamaan.

Contoh Branching

from metaflow import FlowSpec, step

class BranchFlow(FlowSpec):

@step

def start(self):

self.rawdata = list(range(100))

self.next(self.trainrf, self.trainxgb)

@step

def trainrf(self):

from sklearn.ensemble import RandomForestClassifier

from sklearn.datasets import makeclassification

X, y = makeclassification(nsamples=1000, nfeatures=20, randomstate=42)

model = RandomForestClassifier(nestimators=100, randomstate=42)

model.fit(X, y)

self.accuracy = model.score(X, y)

self.modeltype = "RandomForest"

print(f"RF Accuracy: {self.accuracy:.4f}")

self.next(self.join)

@step

def trainxgb(self):

Artikel Terkait