Ana içeriğe atla

Makine Öğrenimi için CI/CD: Yeni Başlayanlar Rehberi

GitHub Actions kullanarak model eğitimi, değerlendirme, versiyonlama ve dağıtımı otomatikleştirmeyi çevrimiçi en kolay MLOps rehberiyle öğrenin.
Güncel 3 Eki 2026  · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Sürekli Entegrasyon (CI) ve Sürekli Dağıtım (CD), kod değişikliklerini entegre etme, test etme ve güncellenmiş uygulamayı hızla dağıtma sürecini otomatikleştirmek için yazılım geliştirmede yaygın olarak kullanılan uygulamalardır. Başlangıçta geleneksel yazılım uygulamaları için geliştirilen bu uygulamalar, artık makine öğrenimi (ML) projelerinde de giderek daha fazla önem kazanmaktadır.

Bu kapsamlı rehberde, ML için CI/CD’ye göz atacak ve modeli eğitme, değerlendirme ve dağıtma sürecini otomatikleştirecek kendi makine öğrenimi hattımızı nasıl kuracağımızı öğreneceğiz.

Bu rehber, sürecin tamamını otomatikleştirmek için yalnızca GitHub Actions kullanan basit bir proje sunar. Ele alacağımız konuların çoğu makine öğrenimi mühendisleri ve veri bilimciler için zaten bilinir. Burada öğrenecekleri tek yeni şey GitHub Actions, Makefile, CML ve Hugging Face CLI kullanmaktır.

Makine öğrenimi modellerini yerel defterlerden, iş değeri üreten üretim modellerine nasıl taşıyacağınızı öğrenmek için MLOps Concepts kursuna kaydolun.

Neden Makine Öğrenimi için CI/CD?

Modelinizi operasyonelleştirme ve bir ürün geliştirmede kullanma söz konusu olduğunda CI/CD oyunun kurallarını değiştirir. Otomasyon sürecini yalınlaştırmak, ML projeniz için hatasız, hızlı ve ölçeklenebilir bir çözüm sunarak çözümü yönetmek ve dağıtmaktansa modeli iyileştirmeye odaklanmanızı sağlar.

Özellikle, makine öğrenimi için CI/CD aşağıdakilere yardımcı olur:

1. Eğitim hattını otomatikleştirir

CI/CD ile modellerinizi yeni verilerle düzenli olarak otomatik şekilde yeniden eğitebilir, manuel yeniden eğitim tetiklemeye kıyasla zamandan tasarruf edebilirsiniz.

2. Hataları erken yakalar

CI araçları her kod gönderiminde testleri ve kontrolleri çalıştırır; bu da hataları, entegrasyon sorunlarını ve model performansındaki düşüşleri yakalamaya yardımcı olur.

3. Yeniden üretilebilirlik

CI/CD, modellerin tam olarak aynı şekilde yeniden inşa edilip eğitilmesini sağlayarak sonuçların yeniden üretilebilirliğini mümkün kılar. Ortamlar, model ve veri sürümleme ile yapılandırmalar kodlaştırılır.

4. Test ve izleme

CI/CD, dağıtımdan önce yeni modellerin otomatik olarak test edilmesine olanak tanır. Ayrıca izleme araçlarıyla entegrasyon yoluyla dağıtım sonrası modellerin daha iyi izlenmesini sağlar.

5. Daha hızlı yineleme

Yeni model sürümleri veya deneyler CI/CD ile otomatik bir şekilde hızla eğitilebilir, test edilebilir ve dağıtılabilir. Bu da ML sistemlerinin geliştirilmesini ve iyileştirilmesini hızlandırır.

6. Ölçeklenebilirlik

ML projesi boyut ve karmaşıklık olarak büyüdükçe tüm yaşam döngüsünü manuel olarak yönetmek pratik değildir. CI/CD hatları, büyük veri hacimlerini, çok sayıda modeli ve çeşitli bağımlılıkları verimli ve güvenilir şekilde yönetebilen ölçeklenebilir bir çözüm sağlar.

Proje Açıklaması

Bu rehberde, hesap ve ortamları kurma, bir CI/CD hattı oluşturma ve tüm süreci optimize etme adımlarında size yol göstereceğiz.

Rastgele orman algoritmamızı eğitmek ve bir ilaç sınıflandırıcı oluşturmak için scikit-learn hatlarını kullanacağız. Eğitimin ardından, değerlendirme sürecini CML ile otomatikleştireceğiz. Son olarak, web uygulamasını Hugging Face Hub’a inşa edip dağıtacağız.

Eğitimden değerlendirmeye kadar tüm süreç GitHub Actions kullanılarak otomatikleştirilecek. Tek yapmanız gereken kodu GitHub deponuza göndermek; iki dakika içinde uygulama, model ve sonuçlarla birlikte Hugging Face üzerinde model güncellenecektir.

CI/CD pipeline

Etkileşimli alıştırmalarla daha fazla öğrenmek isterseniz, GitHub Actions ve Veri Sürümleme ile makine öğrenimi geliştirmelerinizi bir üst seviyeye taşımak için DataCamp’in Makine Öğrenimi için CI/CD kursunu deneyin.

Kurulum

Bu bölümde bir GitHub deposu, gerekli dosya ve klasörleri ve Hugging Face üzerinde bir Space oluşturacağız.

GitHub Deposu

GitHub ana sayfasının sağ üstündeki “+” düğmesine tıklayın ve “New repository” seçeneğini seçin.

Depo adını ve açıklamasını ekleyin, README dosyasını işaretleyin ve .gitignore’u Python olarak ayarlayın.

image22.png

Depoyu oluşturduktan sonra URL’sini kopyalamamız gerekiyor. Ardından terminali veya bash’i açın ve proje klasörünü saklamak istediğiniz dizine gidin.

Son olarak, aşağıdaki komutu çalıştırarak depoyu klonlayın:

git clone https://github.com/kingabzpro/CICD-for-Machine-Learning.git

Başlamak için, yerel depoyu tercih ettiğiniz IDE ile açın. Bu proje için VSCode kullanmanızı öneririz. IDE’yi başlattığınızda, README ve LICENSE gibi dosyaları içeren bir VSCode çalışma alanı göreceksiniz.

Hugging Face Spaces

Model dosyasıyla birlikte uygulamamızı dağıtmak için kullanacağımız bir Hugging Face Space oluşturalım.

1. Profil resminize tıklayın ve "New Space" seçeneğini seçin.

image20.png

2. Space adını, Lisansı, SDK türünü ekleyin ve Space oluşturun.

image21.png

3. README.md dosyasını düzenlemek için sol üstteki üç noktaya tıklayın, Files’ı seçin ve gerekli değişiklikleri yapın.

image3.png

4. Space’in README dosyasındaki metaverileri kopyalayıp Uygulama klasöründe kalacak yerel README dosyamıza yapıştıracağız.

Gerekli Dosyalar

Deney yapmaya ve hatlar oluşturmaya başlamadan önce gerekli klasör ve dosyaları oluşturmamız gerekiyor. Bu, çalışma alanını uzun vadede düzenli tutmamıza yardımcı olacaktır.

Klasörleri oluşturun

  1. App: web uygulaması sınıflandırıcı dosyasını, metaverilerle birlikte uygulama README dosyasını ve gerekli paketleri kurmak için requirement.txt’yi eklemek için.
  2. Data: tüm CSV dosyalarımız için.
  3. Model: eğitilmiş model dosyaları için.
  4. Results: metrikleri ve sonuçları PNG dosyalarında kaydetmek için.

App klasörü

drug_app.py adlı bir Python dosyası, bir README.md dosyası ve bir requirements.txt dosyası oluşturun ve bunların hepsini App klasörüne taşıyın. Bu, uygulamanın çalışması için gerekli tüm dosyaları daha düzenli yönetmemize yardımcı olacaktır.

Ardından, lütfen App klasöründeki README.md dosyasını düzenleyin ve tüm metaveri sürümlemelerinin uygun şekilde değiştirildiğinden emin olun. Bu, uygulama dosyalarının konumunu kolayca belirtmenizi, renkleri değiştirmenizi, SDK sürümünü ayarlamanızı ve lisans bilgisi eklemenizi sağlar.

---
title: Drug Classification
emoji: 💊
colorFrom: yellow
colorTo: red
sdk: gradio
sdk_version: 4.16.0
app_file: drug_app.py
pinned: false
license: apache-2.0
---

App klasöründeki requirement.txt dosyasını eksik Python paketlerini ekleyerek düzenleyin:

scikit-learn
skops

Not: requirement ve README dosyaları GitHub deposu ile Hugging Face Space için farklı olacaktır.

Data klasörü

Kaggle’dan Drug Classification veri setini indirin, CSV dosyasını çıkartın ve Data klasörüne taşıyın.

Model ve Results klasörleri

Hem Model hem de Results klasörleri boş kalacaktır; çalıştırdığımız Python betiği tarafından doldurulacaktır.

Depo dosyaları

  1. GitHub Action iş akışında betiği çalıştırmayı basitleştirmek için bir Makefile oluşturun.
  2. notebook.ipynb adlı bir Jupyter Notebook oluşturun. Bu not defterinde algoritmalarımız ve işleme hatlarımız üzerinde deney yapacağız.
  3. requirements.txt adlı bir dosya oluşturun. CI iş akışı işleri çalıştırılırken ortamı kurmak için kullanılacaktır.
  4. train.py adlı bir dosya oluşturun. Veri yükleme ve işleme ile modelin ve performans metriklerinin eğitilmesi, değerlendirilmesi ve kaydedilmesi için Python kodunu içerecektir.

Dizinimizin şu şekilde görünmesi gerekir:

image6.png

İlaç Sınıflandırma Modelinin Eğitimi ve Değerlendirilmesi

Bu bölümde, verileri işleyen ve bir scikit-learn hattı kullanarak bir model eğiten Python kodu oluşturmayı deneyeceğiz. Ardından değerlendirecek ve sonuçları ile modeli kaydedeceğiz.

Veri Kümesini Yükleme

CSV dosyamızı yüklemek için pandas kullanacağız, sample fonksiyonuyla karıştıracağız ve ilk üç satırı göstereceğiz.

import pandas as pd

drug_df = pd.read_csv("Data/drug.csv")
drug_df = drug_df.sample(frac=1)
drug_df.head(3)

image24.png

Eğitim-Test Ayrımı

Bağımlı ve bağımsız değişkenleri oluşturun. Ardından bunları eğitim ve test setlerine ayırın. Bu, modelinizin performansını değerlendirmenize yardımcı olacaktır.

from sklearn.model_selection import train_test_split

X = drug_df.drop("Drug", axis=1).values
y = drug_df.Drug.values

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=125
)

Makine Öğrenimi Hatları

Kategorik değerleri sayılara dönüştürecek, eksik değerleri dolduracak ve sayısal sütunları ölçeklendirecek ColumnTransformer kullanarak bir işleme hattı oluşturacağız.

Bunun ardından, dönüştürülmüş verileri alıp bir rastgele orman sınıflandırıcısı eğitecek bir eğitim hattı oluşturacağız.

Son olarak, modeli eğiteceğiz.

Hatları kullanarak kodumuzda yeniden üretilebilirliği, modülerliği ve açıklığı sağlayabiliriz.

from sklearn.compose import ColumnTransformer
from sklearn.ensemble import RandomForestClassifier
from sklearn.impute import SimpleImputer
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OrdinalEncoder, StandardScaler

cat_col = [1,2,3]
num_col = [0,4]

transform = ColumnTransformer(
    [
        ("encoder", OrdinalEncoder(), cat_col),
        ("num_imputer", SimpleImputer(strategy="median"), num_col),
        ("num_scaler", StandardScaler(), num_col),
    ]
)
pipe = Pipeline(
    steps=[
        ("preprocessing", transform),
        ("model", RandomForestClassifier(n_estimators=100, random_state=125)),
    ]
)
pipe.fit(X_train, y_train)

image7.png

Model Değerlendirmesi

Modelin performansını hem doğruluk hem de F1 skoru hesaplayarak değerlendirin.

from sklearn.metrics import accuracy_score, f1_score

predictions = pipe.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
f1 = f1_score(y_test, predictions, average="macro")

print("Accuracy:", str(round(accuracy, 2) * 100) + "%", "F1:", round(f1, 2))

Modelimiz son derece iyi bir performans sergiledi.

Accuracy: 95.0% F1: 0.91

Metrik dosyasını oluşturun ve Results klasörüne kaydedin.

with open("Results/metrics.txt", "w") as outfile:
    outfile.write(f"\nAccuracy = {accuracy.round(2)}, F1 Score = {f1.round(2)}.")

Ardından karmaşıklık matrisini oluşturacak ve görüntü dosyasını Results klasörüne kaydedeceğiz.

import matplotlib.pyplot as plt
from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix

cm = confusion_matrix(y_test, predictions, labels=pipe.classes_)
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=pipe.classes_)
disp.plot()
plt.savefig("Results/model_results.png", dpi=120)

image15.png

Modeli Kaydetme

Modelimizi skops Python paketi ile kaydedeceğiz. Bu, hem scikit-learn hattını hem de modeli kaydetmemize yardımcı olacaktır.

import skops.io as sio

sio.dump(pipe, "Model/drug_pipeline.skops")

Tüm hattı doğrudan yükleyebilir ve verinizi işlemeye veya koda düzenleme yapmaya gerek kalmadan kutudan çıktığı gibi çalıştırabilirsiniz.

sio.load("Model/drug_pipeline.skops", trusted=True)

image7.png

Tüm kodu 'train.py' dosyasına kopyalayıp yapıştırın. Bu, verilerde veya kodda bir değişiklik olduğunda CI iş akışında çalışacak standartlaştırılmış eğitim betiği olacaktır.

MLOps mühendisliği kariyerinize başlamadan önce MLOps Yol Haritası: Kapsamlı Kariyer Rehberi’ni okuyun.

Sürekli Entegrasyon Hattınızı Oluşturma Adımları

Bu bölümde, projemizin eğitim, değerlendirme ve sürümlemesini otomatikleştirmek için CML, Makefile ve GitHub Action iş akışlarını ele alacağız.

CI Pipeline

CI Hattı

CML

Sürekli Makine Öğrenimi (CML), makine öğrenimi projelerinizde sürekli entegrasyonu uygulamanıza olanak tanıyan açık kaynaklı bir kütüphanedir. İş akışında model değerlendirme raporu üretimini otomatikleştirmek için CML fonksiyonlarını kullanan "iterative/setup-cml" GitHub Action’ı kullanacağız.

Bu ne anlama geliyor? GitHub’a her değişiklik gönderdiğinizde, ilgili gönderimde bir rapor oluşturacak ve size performans metrikleri ile karmaşıklık matrisi içeren bir e-posta gönderecek.

Makefile

Makefile, make komutu tarafından çeşitli görevleri otomatikleştirmek için kullanılan talimatlar kümesinden oluşan bir dosyadır; örneğin kod derleme, test çalıştırma, ortam kurma, veri ön işleme, model eğitimi ve değerlendirme ile model dağıtımı gibi.

make komutlarını kullanarak birden fazla betiği çalıştırabilir, CI iş akışı dosyasını temiz ve basit tutabiliriz. Makefile, komut kümelerinin adını ve bu komutları çalıştıracak betiği içerir.

İşte Makefile’ımız:

install:
    pip install --upgrade pip &&\
        pip install -r requirements.txt

format:
    black *.py

train:
    python train.py

eval:
    echo "## Model Metrics" > report.md
    cat ./Results/metrics.txt >> report.md
   
    echo '\n## Confusion Matrix Plot' >> report.md
    echo '![Confusion Matrix](./Results/model_results.png)' >> report.md
   
    cml comment create report.md

Python paketlerini kurma (install), kodu biçimlendirme (format), eğitim betiklerini çalıştırma (train) ve CML raporları üretme (eval) komutlarımız var.

image23.png

Bundan sonra değişiklikleri ekleyecek, bir commit oluşturacak ve değişiklikleri GitHub uzak sunucusuna göndereceğiz.

git commit -am "new changes"
git push origin main

GitHub Actions

Eğitimi ve değerlendirmeyi otomatikleştirmek için bir GitHub Action iş akışı oluşturmamız gerekiyor. Bunu yapmak için depomuzdaki kingabzpro/CICD-for-Machine-Learning sayfasında “Actions” sekmesine gidin ve mavi renkli “set up a workflow yourself.” metnine tıklayın.

image28.png

.yml dosyasını “ci” olarak yeniden adlandırın ve GitHub Action komutlarını eklemeye başlayın.

  1. İş akışının adını ekleyin.
  2. İş akışının ana dala yapılan push veya pull request’te ya da manuel çalıştırmada tetiklenecek şekilde ayarını yapın.
  3. İş için bir ortam oluşturun. En güncel Linux sunucuyu yükleyeceğiz.
  4. İş akışında kullanacağımız GitHub Actions’ı etkinleştirin.
  5. Çeşitli make komutlarını kullanarak farklı çalıştırmalar eklemeye başlayın.
  6. Değişiklikleri commit’leyerek iş akışını tetikleyin. GitHub Action, hattanın tüm adımlarını teker teker çalıştıracaktır.

image10.png

Hataları ve sözdizimini çözerken başarısızlıklarla karşılaşacaksınız; bu nedenle GitHub Action’a başlamadan önce GitHub Actions için İş Akışı sözdizimini okumak önemlidir.

image12.png

İş akışındaki tüm hata ve sorunları başarıyla düzelttik ve şimdi sorunsuz çalışan nihai `ci.yml` dosyasına sahibiz.

Gördüğünüz gibi iş akışı önce ortamı kuracak ve gerekli aksiyonları yükleyecek. Ardından, arka planda çeşitli Python ve Bash betiklerini çağıran make komutu ile her adımı tek tek çalıştıracağız.

Ancak CML aksiyonlarıyla çalışırken akılda tutulması gereken iki önemli nokta var. İlk olarak, en başta yazma iznini ayarlamamız gerekir. İkinci olarak, sırlar (secrets) aracılığıyla erişebileceğimiz bir GitHub token’ı CML işine sağlamalıyız.

name: Continuous Integration
on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
  workflow_dispatch:
  
permissions: write-all
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: iterative/setup-cml@v2
      - name: Install Packages
        run: make install
      - name: Format
        run: make format
      - name: Train
        run: make train
      - name: Evaluation
        env:
          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: make eval

Metrikler ve sonuçlar commit mesajı altında gösterilir.

image2.png

Ayrıca sonuçlarla birlikte size e-posta da gönderecektir.

image27.png

Sonuçları yeni bir Dala kaydetme

Değerlendirme raporu üretiyoruz, ancak modeli ve sonuçları sürümlemiyoruz. Değişiklikleri kaydetmek için "update" adlı yeni bir dal oluşturacak ve güncellenen model ile sonuçları bu dala göndereceğiz.

Ana dal düğmesine tıklayıp dal adı olarak "update" yazarak ve ardından "create branch update from main" seçeneğini seçerek "update" dalını oluşturun.

image1.png

Depo Sırrı (Secret) Oluşturma

Git komutuyla değişiklikleri commit’lemek ve göndermek için bir kullanıcı adı ve e-posta sağlamamız gerekir. Bunları doğrudan ekleyebilirsiniz, ancak GitHub secrets kullanmak daha iyi bir seçenektir. Şu adımları izleyin:

  1. Ayarlar’a gidin ve "Secrets and variables"a tıklayın.
  2. "Actions"ı seçin ve "New repository secret" yazan yeşil düğmeye tıklayın.
  3. Adı ve değerleri ekleyin. Bu, yerel makinenizde ortam değişkeni ayarlamaya benzer.

Hepsi bu!

image25.png

Makefile ve ci.yml Güncelleme

Değişiklikleri yeni dala kaydetmeyi otomatikleştirmek için Makefile ve ci.yml’yi güncellemeliyiz.

Makefile:

Kullanıcı adı ve e-postayı yapılandırıp değişiklikleri commit’liyor ve update dalına kaydediyoruz.

update-branch:
	git config --global user.name $(USER_NAME)
	git config --global user.email $(USER_EMAIL)
	git commit -am "Update with new results"
	git push --force origin HEAD:update

ci.yml:

Makefile betiği çalıştırmak için bir ortam değişkeni kullanıyor. Bunun için önce ortam değişkeni değerini secrets’tan çıkarmalı, ardından make komutunun sonunda ortam değişkenini ayarlamalıyız.

    - name: Update Branch
        env:
          NAME: ${{ secrets.USER_NAME }}
          EMAIL: ${{ secrets.USER_EMAIL }}
        run: make update-branch USER_NAME=$NAME USER_EMAIL=$EMAIL

Dosyaları güncelleyip değişiklikleri ana dala gönderdikten sonra, gerçek zamanlı olarak sihrin gerçekleştiğini görebileceksiniz. Analitik bir rapor oluşturulacak ve sürekli dağıtım kısmında Hugging Face’e dağıtılabilecek güncellenmiş bir model hazır olacaktır.

Sürekli Dağıtım Hattınızı Oluşturma Adımları

Sürekli Dağıtım bölümünde, hem modelin hem de uygulamanın dağıtım sürecini nasıl otomatikleştireceğimizi keşfedeceğiz. Bu, `update` dalından güncellenmiş model ve uygulama dosyasını çekmeyi, bir token kullanarak Hugging Face CLI’a giriş yapmayı, model ve uygulama dosyalarını göndermeyi ve son olarak uygulamayı dağıtmayı içerir.

CD Pipeline

Gradio Uygulamasını Oluşturma

Modelimizi dağıtmak ve ona erişmek için bir Gradio uygulaması oluşturmamız gerekiyor. Bu uygulama şunları içerecek:

  1. Scikit-learn hattını ve modeli yükleme.
  2. Kullanıcı girdisine göre ilaç etiketlerini tahmin eden bir Python fonksiyonu.
  3. Ondalık değerler için Gradio kaydırıcıları ve kategorik değerler için Gradio radyo butonları kullanarak bir giriş arayüzü oluşturma.
  4. Modeli kolayca test etmek için örnek girdiler oluşturma.
  5. Lütfen uygulamanın başlığını, özellik ve işlevlerinin kısa bir açıklamasını ve ilgili bilgileri içeren bir altbilgi sağlayın.
  6. Tüm bu değişkenleri ve tahmin fonksiyonunu Gradio Interface fonksiyonuna verip başlatacağız.
  7. Web uygulamamızı modern göstermek için varsayılan yumuşak temayı kullanacağız.
import gradio as gr
import skops.io as sio

pipe = sio.load("./Model/drug_pipeline.skops", trusted=True)


def predict_drug(age, sex, blood_pressure, cholesterol, na_to_k_ratio):
    ""Predict drugs based on patient features.

    Args:
        age (int): Age of patient
        sex (str): Sex of patient 
        blood_pressure (str): Blood pressure level
        cholesterol (str): Cholesterol level
        na_to_k_ratio (float): Ratio of sodium to potassium in blood

    Returns:
        str: Predicted drug label
    """
    features = [age, sex, blood_pressure, cholesterol, na_to_k_ratio]
    predicted_drug = pipe.predict([features])[0]

    label = f"Predicted Drug: {predicted_drug}"
    return label


inputs = [
    gr.Slider(15, 74, step=1, label="Age"),
    gr.Radio(["M", "F"], label="Sex"),
    gr.Radio(["HIGH", "LOW", "NORMAL"], label="Blood Pressure"),
    gr.Radio(["HIGH", "NORMAL"], label="Cholesterol"),
    gr.Slider(6.2, 38.2, step=0.1, label="Na_to_K"),
]
outputs = [gr.Label(num_top_classes=5)]

examples = [
    [30, "M", "HIGH", "NORMAL", 15.4],
    [35, "F", "LOW", "NORMAL", 8],
    [50, "M", "HIGH", "HIGH", 34],
]


title = "Drug Classification"
description = "Enter the details to correctly identify Drug type?"
article = "This app is a part of the Beginner's Guide to CI/CD for Machine Learning. It teaches how to automate training, evaluation, and deployment of models to Hugging Face using GitHub Actions."


gr.Interface(
    fn=predict_drug,
    inputs=inputs,
    outputs=outputs,
    examples=examples,
    title=title,
    description=description,
    article=article,
    theme=gr.themes.Soft(),
).launch()

Terminali açın ve uzak depoya değişiklikleri göndermeden önce sorunları gidermek için uygulamayı yerelde çalıştırın.

python ./App/drug_app.py 
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

Hugging Face Token Ayarlama

Şimdi Hugging Face token’ı üretecek ve Makefile betiğimize sağlayacağız. Ancak token’ın gizli tutulduğundan ve kimseye sızdırılmadığından emin olmalıyız. Bunu başarmak için GitHub secrets kullanacağız.

Öncelikle, Hugging Face profil resminize tıklayın ve ayarlar seçeneğini seçin. Ardından "Access Tokens" seçeneğini seçip token üretmek için "New Token" düğmesine tıklayın. Token’ı üretirken yazma iznine sahip olduğundan emin olun.

image11.png

Token’ı kopyalayın ve kullanıcı adları ile e-postada yaptığımız gibi bir Depo sırrı (Repository secret) oluşturun.

image14.png

CD iş akışı

Bu bölümde dosyaları oluşturmak için üç yeni komut ekleyecek ve "Continuous Deployment" adlı başka bir GitHub iş akışı oluşturacağız. Bu iş akışı, dosyaları çekme ve dağıtma sürecini otomatikleştirmemize yardımcı olacak.

Makefile

  • update dalından güncellenmiş model ve sonuç dosyalarını çekin ve update dalına geçin.
  • Giriş yapmadan önce Hugging Face CLI’yı kurmamız ve ardından token ile giriş yapmamız gerekiyor.
  • App klasörünü, ortamı oluşturup uygulamayı çalıştırması için Python dosyası, README ve requirement.txt dosyalarını içerecek şekilde Space ana dizinine göndereceğiz.
  • Ayrıca Model ve Results klasörlerini de yükleyeceğiz.
  • deploy komutu önce hf-login sonra push-hub çalıştıracaktır.
hf-login:
    git pull origin update
    git switch update
    pip install -U "huggingface_hub[cli]"
    huggingface-cli login --token $(HF) --add-to-git-credential

push-hub:
    huggingface-cli upload kingabzpro/Drug-Classification ./App --repo-type=space --commit-message="Sync App files"
    huggingface-cli upload kingabzpro/Drug-Classification ./Model /Model --repo-type=space --commit-message="Sync Model"
    huggingface-cli upload kingabzpro/Drug-Classification ./Results /Metrics --repo-type=space --commit-message="Sync Model"

deploy: hf-login push-hub

Uygulamamız güncellenmiş bir modele, uygulama dosyasına ve sonuçlara erişerek Hugging Face Space’teki değişiklikleri takip etmemize olanak tanıyacaktır.

cd.yml

İş akışımızı gerçekten CI/CD yapmak için, ci.yml dosyamıza benzer şekilde cd.yml adlı başka bir dosya oluşturmamız gerekiyor. CI hattı tamamlandığında, on argümanındaki workflow_run parametresi kullanılarak cd.yml iş akışı başlatılacaktır.

Bu iş akışı, ortamı inşa edecek ve en son değişiklikleri Hugging Face Hub’a dağıtmak için Hugging Face token’ını kullanarak make deploy komutunu çalıştıracaktır.

name: Continuous Deployment
on:
  workflow_run:
    workflows: ["Continuous Integration"]
    types:
      - completed

  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Deployment To Hugging Face
        env:
          HF: ${{ secrets.HF }}
        run: make deploy HF=$HF

Değişiklikleri ana dala gönderdiğimizde CI iş akışı ile başlayacak.

image13.png

CI iş akışı tamamlandıktan sonra, aşağıda gösterildiği gibi CD iş akışı başlayacaktır.

image5.png

İş akışı derlemesinde çalıştırma seçeneğini seçerek her fonksiyonun canlı günlüklerini gözlemleyebiliriz. Dosyalarımız Hugging Face sunucusuna başarıyla yüklendi.

image4.png

Güncellenmiş dosya alındıktan sonra Hugging Face Space ortamı derlemeye başlayacak ve uygulama birkaç saniye içinde çalışmaya başlayacaktır.

image8.png

Drug Classification uygulamamız sorunsuz çalışıyor ve güzel bir arayüze sahip.

Modelin performansını deneyimlemek için farklı veriler girin.

image26.png

Görsel Kaynak

Sonuç

Bu rehber, eğitim, değerlendirme, sürümleme ve dağıtım süreçlerini nasıl otomatikleştirdiğimizi özetler; böylece veri veya algoritmalardaki herhangi bir değişiklik bu süreci hatasız şekilde otomatik olarak tetikler. Bu yaklaşım, hızlı, ölçeklenebilir ve üretime hazır uygulamalar oluşturmamıza yardımcı olur.

Gerçek dünya projelerinde makine öğrenimi uygulamalarını orkestre etmek, sürümlemek, dağıtmak ve izlemek için birden fazla MLOps aracı kullandığımızı unutmayın. Bu araçlar hakkında daha fazla bilgi edinmek için, büyük teknoloji şirketlerinin makine öğrenimi uygulamalarını yalınlaştırmak için kullandığı popüler teknolojileri özetleyen Bilmeniz Gereken En İyi MLOps Araçlarına göz atın.

CI/CD hattınızı optimize etmek için Docker, Kubernetes, Azure Cloud ve diğer MLOps teknolojileri gibi araçları öğrenmek kritik öneme sahiptir. Sektör standardı uygulamalara aşina olmak ve ileri düzey projeler üzerinde çalışmak için Makine Öğrenimi, Hatlar, Dağıtım ve MLOps eğitimini takip edin.

Proje Kaynakları


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sertifikalı bir veri bilimcisi olarak, yenilikçi makine öğrenimi uygulamaları oluşturmak için en son teknolojileri kullanmaya büyük ilgi duyuyorum. Konuşma tanıma, veri analizi ve raporlama, MLOps, konuşma yapay zekası ve NLP alanlarında güçlü bir geçmişe sahip olarak, gerçek bir etki yaratabilecek akıllı sistemler geliştirme becerilerimi geliştirdim. Teknik uzmanlığımın yanı sıra, karmaşık kavramları açık ve özlü bir dille ifade etme yeteneğine sahip, becerikli bir iletişimciyim. Sonuç olarak, veri bilimi konusunda aranan bir blog yazarı oldum ve giderek büyüyen veri profesyonelleri topluluğuyla görüşlerimi ve deneyimlerimi paylaşıyorum. Şu anda, içerik oluşturma ve düzenlemeye odaklanıyorum. Büyük dil modelleriyle çalışarak, hem işletmelerin hem de bireylerin verilerinden en iyi şekilde yararlanmalarına yardımcı olabilecek güçlü ve ilgi çekici içerikler geliştiriyorum.

Konular
Makine Öğrenimi
Python

Makine Öğrenimi Yolculuğunuza Bugün Başlayın!

Kurs

Machine Learning'i Anlamak

2 sa
312.3K
Kodlama gerektirmeyen makine öğrenimine giriş.
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

.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.

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

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