Ana içeriğe atla

Yeni Başlayanlar için Metaflow Eğitimi: Veri İş Akışları Oluşturun ve Ölçeklendirin

Bu yeni başlayanlara yönelik eğitim, Metaflow’un temellerinde size rehberlik eder. Çerçevenin veri bilimi iş akışlarını oluşturmayı ve ölçeklendirmeyi nasıl basitleştirdiğini öğrenin.
Güncel 3 Eki 2026  · 9 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Metaflow, veri iş akışları oluşturmak ve yönetmek için güçlü bir çerçevedir. Bu eğitimde, nasıl başlayacağınızı öğreneceksiniz. Özellikle şu konulara değineceğiz: 

  • Kurulum süreci
  • Temel bir iş akışı oluşturma
  • Temel kavramlar
  • En iyi uygulamalar

Bu makalenin sonunda, iş akışlarınızı verimli bir şekilde düzenlemek ve ölçeklendirmek için gerekli becerilere sahip olacaksınız!

Metaflow nedir?

Metaflow mimarisini ve bileşen bloklarını gösteren bir diyagram içeren görsel

Kaynak: Why Metaflow? 

Metaflow, veri bilimi projelerini yönetmeye yardımcı olmak için tasarlanmış bir Python çerçevesidir. Netflix tarafından, veri bilimciler ve makine öğrenimi mühendislerinin daha üretken olmasına yardımcı olmak amacıyla geliştirilmiştir. Bunu, süreçlerin baştan sona sorunsuz şekilde çalışmasını sağlayan iş akışı orkestrasyonu gibi karmaşık görevleri basitleştirerek başarır. 

Metaflow’un başlıca özellikleri arasında, iş akışlarınızdaki değişiklikleri izleyen otomatik veri sürümlendirme ve kullanıcıların daha büyük veri setlerini ve daha karmaşık görevleri ele almasını sağlayan ölçeklenebilir iş akışları desteği bulunur. 

Metaflow’un bir diğer avantajı, AWS ile kolayca entegre olmasıdır. Bu, kullanıcıların depolama ve işlem gücü için bulut kaynaklarından yararlanabilmesi anlamına gelir. Ayrıca, kullanıcı dostu Python API’si hem yeni başlayanlar hem de deneyimli kullanıcılar için erişilebilir kılar.

Hadi kuruluma başlayalım. 

Metaflow’u Kurma

Metaflow, yeni projeler için Python 2.7 yerine Python 3 kurulmasını önerir. Belgelerde “Python 3, kullanım ömrü dolmuş Python 2.7’ye kıyasla daha az hataya sahiptir ve daha iyi desteklenmektedir.” ifadesi yer alır.

Bir sonraki adım, proje bağımlılıklarınızı yönetmek için sanal bir ortam oluşturmaktır. Bunu yapmak için aşağıdaki komutu çalıştırın: 

python -m venv venv
source venv/bin/activate

Bu, bir sanal ortam oluşturur ve etkinleştirir. Etkinleştirildikten sonra, Metaflow’u kurmaya hazırsınız. 

Metaflow, MacOS ve Linux için bir Python paketi olarak mevcuttur. En son sürüm, aşağıdaki komutu çalıştırarak Metaflow Github deposundan veya PyPi’dan kurulabilir: 

pip install metaflow

Ne yazık ki, bu yazının yazıldığı sırada Metaflow, Windows kullanıcıları için yerel destek sunmuyor. Ancak Windows 10 kullanıcıları, Windows işletim sistemi içinde bir Linux ortamı çalıştırmalarını sağlayan WSL’yi (Windows Subsystem for Linux) kullanarak Metaflow’u kurabilir. Check out the documentation for a step-by-step guide on installing Metaflow on Windows 10. 

AWS entegrasyonu (İsteğe bağlı)

Metaflow, AWS ile sorunsuz bir şekilde çalışır ve bu, kullanıcıların iş akışlarını bulut altyapısı kullanarak ölçeklendirmesine olanak tanır. AWS’yi entegre etmek için AWS kimlik bilgilerinizi yapılandırmanız gerekir.

Not: Bu adımlar, hâlihazırda bir AWS hesabınız ve AWS CLI’ın kurulu olduğunu varsayar. Daha fazla bilgi için AWS belgelerindeki talimatları izleyin. 

  1. Önce, aşağıdaki komutla AWS CLI’ı kurun:
pip install awscli
  1. Aşağıdaki komutla AWS’yi yapılandırın
aws configure

Buradan, AWS Erişim Anahtarı Kimliğinizi (Access Key ID) ve Gizli Erişim Anahtarınızı (Secret Access Key) girmeniz istenecektir — bunlar, AWS CLI’ın AWS’ye yaptığınız istekleri kimlik doğrulaması için kullandığı kimlik bilgileridir. Bölgenizi ve çıktı biçiminizi girmeniz de istenebilir. 

Bu ayrıntıları girdikten sonra, işte bu kadar! Metaflow, iş akışlarını çalıştırmak için AWS kimlik bilgilerinizi otomatik olarak kullanacaktır. 

Metaflow ile İlk İş Akışınızı Oluşturma

Artık Metaflow kurulduğuna göre, ilk iş akışınızı oluşturma zamanı. Bu bölümde, bir akış oluşturmanın, çalıştırmanın ve Metaflow’da görevlerin ve adımların nasıl düzenlendiğini anlamanın temellerini adım adım anlatacağım. 

Bu bölümün sonunda, veriyi işleyen ve basit işlemler yapan bir iş akışına sahip olacaksınız. Hadi başlayalım!

Bir Metaflow akışına genel bakış

Metaflow veri akışı paradigmasını kullanır; bu paradigma, bir programı yönlendirilmiş bir işlem grafiği olarak temsil eder. Bu yaklaşım, özellikle makine öğreniminde veri işleme hatları oluşturmak için idealdir.

Metaflow’da, işlemler grafiğine akış (flow) denir. Bir akış, adımlara bölünmüş bir dizi görevden oluşur. Her adımın, grafikteki kenarlar olarak işlev gören adımlar arası geçişlerle, bir düğüm olarak temsil edilen bir işlem olduğunu not edin.

Metaflow’da temel doğrusal bir geçişi gösteren görsel

Metaflow’da temel doğrusal bir geçiş | Kaynak: Metaflow belgeleri

Metaflow’daki akışlar için birkaç yapısal kural vardır. Örneğin, her akış bir başlangıç (start) adımı ve bir bitiş (end) adımı içermelidir. Bir akış çalıştırıldığında, yani bir çalıştırma (run) gerçekleştiğinde, başlangıç adımıyla başlar ve hatasız şekilde bitiş adımına ulaşırsa başarılı kabul edilir. 

Başlangıç ve bitiş adımları arasında neler olacağı tamamen size bağlıdır — bunu bir sonraki bölümde göreceksiniz. 

İlk akışınızı yazma

Başlamak için basit bir akış örneği burada. Not: Kod DataLab’de çalıştırılabilir.

from metaflow import FlowSpec, step

class MyFirstFlow(FlowSpec):
    @step
    def start(self):
        print("Starting the flow!")
        self.data = [1, 2, 3, 4, 5]  # Example dataset
        self.next(self.process_data)
    @step
    def process_data(self):
        self.processed_data = [x * 2 for x in self.data]  # Simple data processing
        print("Processed data:", self.processed_data)
        self.next(self.end)
    @step
    def end(self):
        print("Flow is complete!")

if __name__ == '__main__': 
    MyFirstFlow()

Bu akışta:

  • start() adımı iş akışını başlatır ve bir veri kümesi tanımlar.
  • process_data() adımı veriyi her bir öğeyi ikiyle çarparak işler.
  • end() adımı akışı tamamlar.

Her adım @step dekoratörünü kullanır ve adımlar self.next() ile birbirine bağlanarak akış sırası tanımlanır.

Akışınızı çalıştırma

Akışınızı yazdıktan sonra, my_first_flow.py olarak kaydedin. Komut satırından şu komutla çalıştırın:

py -m my_first_flow.py run

Metaflow 2.12’de, kullanıcıların not defterlerinde akış geliştirmesine ve çalıştırmasına olanak tanıyan yeni bir özellik eklendi. 

Tanımlı bir hücrede akışı çalıştırmak için, aynı hücrenin son satırına NBRunner tek satırını eklemeniz yeterlidir. Örneğin:

from metaflow import FlowSpec, step, NBRunner

class MyFirstFlow(FlowSpec):
    @step
    def start(self):
        print("Starting the flow!")
        self.data = [1, 2, 3, 4, 5]  # Example dataset
        self.next(self.process_data)
    @step
    def process_data(self):
        self.processed_data = [x * 2 for x in self.data]  # Simple data processing
        print("Processed data:", self.processed_data)
        self.next(self.end)
    @step
    def end(self):
        print("Flow is complete!")

run = NBRunner(MyFirstFlow).nbrun()

Şu hatayı alırsanız:

“Metaflow, ortam değişkenlerine ($USERNAME vb.) göre kullanıcı adınızı belirleyemedi”

Metaflow çalışmadan önce kodunuza şunları ekleyin:

import os
if os.environ.get("USERNAME") is None:
    os.environ["USERNAME"] = "googlecolab"

Her iki durumda da Metaflow akışı adım adım çalıştıracaktır. Yani, her bir adımın çıktısını terminalde şu şekilde görüntüleyecektir: 

Bir Metaflow akışı çalıştırmanın ardından Colab not defteri çıktısını gösteren görsel

Yukarıdaki kodun çıktısı | Kaynak: Yazarın görseli

Metaflow’daki Temel Kavramlar

Metaflow’un temel kavramlarını anlamak, verimli ve ölçeklenebilir veri iş akışları oluşturmak için kritik öneme sahiptir. Bu bölümde üç temel kavramı ele alacağım: 

  • Adımlar ve dallanma
  • Veri yapıtları (artifacts)
  • Sürümleme 

Bu unsurlar, Metaflow’un iş akışlarını yapılandırma ve yürütme omurgasını oluşturur; karmaşık süreçleri kolayca yönetmenizi sağlar.

Adımlar ve dallanma

Makalede daha önce adımlardan kısaca bahsettik, ancak netlik için tekrar ele alalım. Metaflow iş akışlarıyla ilgili anlaşılması gereken en önemli nokta, adımlar etrafında inşa edilmeleridir. 

Adımlar, bir iş akışı içindeki her bir görevi temsil eder. Başka bir deyişle, her adım belirli bir işlemi yürütür (ör. veri yükleme, işleme, modelleme vb.). 

Yukarıda “İlk akışınızı yazma” bölümünde oluşturduğumuz örnek, doğrusal bir dönüşümdü. Sıralı adımlara ek olarak Metaflow, kullanıcıların iş akışlarını dallandırmasına da olanak tanır. Dallanmış iş akışları, yürütme için ayrı yollar oluşturarak birden çok görevin paralel olarak çalıştırılmasını sağlar. 

Metaflow’da dallanma örneğini gösteren görsel

Bir dallanma örneği | Kaynak: Metaflow belgeleri

Dallanmanın en büyük faydası performanstır. Dallanma, Metaflow’un çeşitli adımları birden çok CPU çekirdeği veya buluttaki örnekler üzerinde çalıştırabilmesini sağlar. 

Kodda bir dallanma şöyle görünür: 

from metaflow import FlowSpec, step, NBRunner

class BranchFlow(FlowSpec):
    @step
    def start(self):
        print("Starting the flow!")
        self.data = [1, 2, 3, 4, 5]  # Example dataset
        self.next(self.split)
    @step
    def split(self):
        self.next(self.branch1, self.branch2)
  
    @step
    def branch1(self):
        # Code for branch 1
        print("This is branch 1")
        self.next(self.join)
    
    @step
    def branch2(self):
        # Code for branch 2
        print("This is branch 2")
        self.next(self.join)
  
    @step
    def join(self, inputs):
        # Merging branches back
        print("Branches joined.")
        self.next(self.end)
  
    @step
    def end(self):
        print("Flow is complete!")

run = NBRunner(BranchFlow).nbrun()

💡Özet: Dallanma, kullanıcıların aynı anda birden çok görevi işleyebilen karmaşık iş akışları tasarlamasına olanak tanır. 

Veri yapıtları (artifacts)

Veri yapıtları (artifacts), bir iş akışında adımlar arasında veri depolamanıza ve aktarmanıza olanak tanıyan değişkenlerdir. Bu yapıtlar, bir adımın çıktısını bir sonraki adıma kalıcı kılar — böylece veri sonraki adımlar için erişilebilir olur. 

Özetle, bir Metaflow sınıfındaki bir adım içinde veriyi self’e atadığınızda, onu bir yapıt olarak kaydetmiş olursunuz; bu da akıştaki diğer adımlar tarafından erişilebilir hale gelir (koddaki yorumlara bakın).

class ArtifactFlow(FlowSpec):
    @step
    def start(self):
        # Step 1: Initializing data
        print("Starting the flow!")
        self.data = [1, 2, 3, 4, 5]  # Example dataset saved as an artifact
        self.next(self.process_data)
    @step
    def process_data(self):
        # Step 2: Processing the data from the 'start' step
        self.processed_data = [x * 2 for x in self.data]  # Processing artifact data
        print("Processed data:", self.processed_data)
        self.next(self.save_results)
    @step
    def save_results(self):
        # Step 3: Saving the processed data artifact
        self.results = sum(self.processed_data)  # Saving final result as an artifact
        print("Sum of processed data:", self.results)
        self.next(self.end)
    @step
    def end(self):
        # Final step
        print("Flow is complete!")
        print(f"Final result: {self.results}")  # Accessing artifact in final step

Yapıtlar neden Metaflow’un temel bir kavramıdır? Çünkü birçok kullanım alanı vardır:

  • Veri akışı yönetimini otomatikleştirerek veriyi elle yükleme ve depolama gereksinimini ortadan kaldırır.
  • Kalıcılığı (bir sonraki bölümde daha fazla) etkinleştirir; böylece kullanıcılar Client API ile daha sonra analiz yapabilir, Cards ile görselleştirebilir ve akışlar arasında yeniden kullanabilir.
  • Yerel ve bulut ortamları arasında tutarlılık sağlar. Bu, açık veri transferi ihtiyacını ortadan kaldırır.
  • Hatalardan önce veriyi incelemeyi ve hatalar düzeltildikten sonra yürütmeleri sürdürmeyi mümkün kılar.

Sürümleme ve kalıcılık

Metaflow, iş akışlarınız için sürümlemeyi otomatik olarak yönetir. Bu, bir akış her çalıştırıldığında benzersiz bir çalıştırma olarak izlenmesi anlamına gelir. Diğer bir deyişle, her çalıştırmanın kendi sürümü vardır; bu da geçmiş çalıştırmaları kolayca incelemenizi ve yeniden üretmenizi sağlar. 

Metaflow bunu, her çalıştırmaya benzersiz tanımlayıcılar atayarak ve o yürütmedeki veri ve yapıtları koruyarak yapar. Bu kalıcılık, çalıştırmalar arasında hiçbir verinin kaybolmamasını sağlar. Geçmiş iş akışları kolayca yeniden ziyaret edilip incelenebilir ve gerekirse belirli adımlar yeniden çalıştırılabilir. Sonuç olarak hata ayıklama ve yinelemeli geliştirme çok daha verimli hale gelir ve yeniden üretilebilirliği sürdürmek kolaylaşır. 

Pratik Örnek: Bir Makine Öğrenimi Modelini Eğitme

Bu bölümde, Metaflow kullanarak bir makine öğrenimi modeli eğitme sürecinde size rehberlik edeceğim. Şunları öğreneceksiniz:

  • Veri yükleyen bir iş akışı tanımlama
  • Bir makine öğrenimi modeli eğitme 
  • Sonuçları izleme

Sonunda, makine öğrenimi iş akışlarını verimli şekilde yapılandırmak ve çalıştırmak için Metaflow’u nasıl kullanacağınıza dair daha iyi bir anlayışa sahip olacaksınız. Hadi başlayalım!

Öncelikle, bir veri kümesi yükleyen, eğitimi gerçekleştiren ve modelin sonuçlarını çıktılara veren temel bir akış oluşturacağız. 

Not: Kod DataLab’de çalıştırılabilir.

from metaflow import FlowSpec, step, Parameter, NBRunner

class TrainModelFlow(FlowSpec):
    @step
    def start(self):
        # Load and split the dataset
        print("Loading data...")
        self.data = [1, 2, 3, 4, 5]  # Replace with actual data loading logic
        self.labels = [0, 1, 0, 1, 0]  # Replace with labels
        self.next(self.train_model)
	   
    @step
    def train_model(self):
        # Training a simple model (e.g., linear regression)
        print("Training the model...")
        self.model = sum(self.data) / len(self.data)  # Replace with actual model training
        print(f"Model output: {self.model}")
        self.next(self.end)
	   
    @step
    def end(self):
        # Final step
        print("Training complete. Model ready for deployment!")f

Bu kodda üç adım tanımlıyoruz:

  1. start(): Veri kümesini yükler ve böler. Gerçek bir senaryoda veriyi gerçek bir kaynaktan (ör. bir dosya veya veritabanı) yüklersiniz.
  2. train_model(): Bir modelin eğitimini simüle eder. Burada gerçek bir makine öğrenimi algoritması yerine basit bir ortalama hesabı yapılır, ancak bunu ihtiyacınız olan herhangi bir eğitim koduyla değiştirebilirsiniz.
  3. end(): Akışın sonunu belirtir ve modelin devreye almaya hazır olduğunu ifade eder.

Akışı tanımladıktan sonra, aşağıdaki komutla çalıştırabilirsiniz:

run = NBRunner(TrainModelFlow)
run.nbrun()

Bu kodun yalnızca not defterlerinde çalıştığını (tüm kodun tek bir hücrede olması gerektiğini) unutmayın.

Bu kodu bir betik olarak çalıştırmak isterseniz, NBRunner komutlarını kaldırın ve betiğinizin sonuna aşağıdakini ekleyip kaydedin (ör. “metaflow_ml_model.py”): 

if __name__ == "__main__": 
    TrainModelFlow()

Ardından, betiği çalıştırmak için komut satırına gidin ve aşağıdaki komutu çalıştırın:

py -m metaflow_ml_model.py 

Metaflow, her çalıştırmayı otomatik olarak izler ve sonuçları Metaflow UI üzerinden görselleştirmenize olanak tanır. 

Metaflow Kullanımı için En İyi Uygulamalar

Peki, Metaflow’un özelliklerinden en iyi şekilde nasıl yararlanırız? İşte bunu başarırken aynı anda iş akışlarınızı optimize etmenize yardımcı olacak birkaç en iyi uygulama: 

Küçük akışlarla başlayın

Metaflow’a yeniyseniz, API’sine aşina olmak için basit iş akışlarıyla başlayın. Küçük başlamak, çerçevenin nasıl çalıştığını anlamanıza ve daha karmaşık projelere geçmeden önce yeteneklerine güven duymanıza yardımcı olur. Bu yaklaşım öğrenme eğrisini düşürür ve sağlam bir temel sağlar.

Hata ayıklama için Metaflow’un UI’ını kullanın

Metaflow, oldukça güçlü bir kullanıcı arayüzü içerir ve bu, iş akışlarınızı hata ayıklama ve izleme konusunda son derece yardımcı olabilir. Çalıştırmaları izlemek, tek tek adımların çıktılarını kontrol etmek ve ortaya çıkabilecek sorunları tespit etmek için UI’ı kullanın. Verilerinizi ve günlüklerinizi görselleştirmek, akışınızın yürütülmesi sırasında problemleri belirlemeyi ve düzeltmeyi kolaylaştırır.

Ölçeklenebilirlik için AWS’den yararlanın

Metaflow’u ilk kurduğunuzda, yerel modda çalışır. Bu modda, yapıtlar ve üstveri yerel bir dizine kaydedilir ve hesaplamalar yerel süreçlerle yürütülür. Bu kurulum kişisel kullanım için uygundur; ancak projeniz iş birliği veya büyük veri kümelerini içeriyorsa, daha iyi ölçeklenebilirlik için Metaflow’u AWS kullanacak şekilde yapılandırmanız önerilir. İyi olan şu ki, Metaflow, AWS ile mükemmel bir entegrasyon sağlar.

Sonuç

Bu eğitimde, Metaflow’a kurulumdan ilk veri bilimi iş akışınızı oluşturmaya kadar nasıl başlayacağınızı ele aldık. Adımları tanımlama, adımlar arasında veri aktarmak için veri yapıtlarını kullanma ve çalıştırmaları izlemek ve yeniden üretmek için sürümleme gibi temel kavramları inceledik. Ayrıca, bir makine öğrenimi modelinin eğitimiyle ilgili pratik bir örneği adım adım yürüttük; bu örnek, iş akışınızı nasıl tanımlayıp çalıştıracağınızı ve izleyeceğinizi gösterdi. Son olarak, Metaflow’dan en iyi şekilde yararlanmanıza yardımcı olacak bazı en iyi uygulamalara değindik. 

MLOps öğreniminize devam etmek için aşağıdaki kaynaklara göz atın: 


Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Konular
MLOps
Python

Bu kurslarla Python ve makine öğrenimi hakkında daha fazlasını öğrenin!

Kurs

Uçtan Uca Machine Learning

4 sa
17K
Makine öğreniminin dünyasına dalın ve uçtan uca modellerin nasıl tasarlanacağını, eğitileceğini ve uygulanacağını keşfedin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör