Notebook'tan Kubeflow Pipelines'a MiniKF ve Kale ile

1. Giriş

Kubeflow, Kubernetes için bir makine öğrenimi araç setidir. Proje, Kubernetes'te makine öğrenimi (ML) iş akışlarının dağıtımlarını basit, taşınabilir ve ölçeklenebilir hale getirmeye odaklanmıştır. Amaç, makine öğrenimi için çeşitli altyapılara sınıfının en iyisi olan açık kaynaklı sistemler dağıtmanın kolay bir yolunu sağlamaktır.

Kubeflow dağıtımı nasıl görünür?

Kubeflow dağıtımı:

  • Taşınabilir: Google Cloud Platform (GCP), şirket içi veya sağlayıcılar arasında olması fark etmeksizin tüm Kubernetes kümelerinde çalışır.
  • Ölçeklenebilir: Dalgalanan kaynakları kullanabilir ve yalnızca Kubernetes kümesine ayrılan kaynakların sayısı ile sınırlıdır.
  • Birleştirilebilir: Çevrimdışı veya düşük kaliteli ağlarda çalışmak için servis çalışanlarıyla geliştirilmiştir.

Gevşek bağlı mikro hizmetleri tek bir birim olarak düzenlemenin ve bunları dizüstü bilgisayar veya bulut gibi çeşitli konumlara dağıtmanın bir yoludur.

Bu codelab'de, MiniKF kullanarak kendi Kubeflow dağıtımınızı oluşturma ve Jupyter Notebook'un içinden Kubeflow Pipelines iş akışı çalıştırma adımları açıklanmaktadır.

Ne oluşturacaksınız?

Bu codelab'de, herhangi bir CLI komutu veya SDK kullanmadan Kubeflow Pipelines ile karmaşık bir veri bilimi ardışık düzeni oluşturacaksınız. Kubernetes veya Docker hakkında bilgi sahibi olmanız gerekmez. İşlem tamamlandığında altyapınızda şunlar bulunur:

  • Aşağıdakileri otomatik olarak yükleyen bir MiniKF (Mini Kubeflow) sanal makinesi:
  • Kubernetes (Minikube kullanılarak)
  • Kubeflow
  • Genel amaçlı Jupyter not defterlerini Kubeflow Pipelines iş akışlarına dönüştürmek için kullanılan bir araç olan Kale ( GitHub)
  • Veri sürümü oluşturma ve tekrarlanabilirlik için Arrikto Rok

Neler öğreneceksiniz?

  • MiniKF ile Kubeflow'u yükleme
  • Jupyter not defterlerinizi herhangi bir KSA komutu veya SDK kullanmadan Kubeflow Pipelines'a dönüştürme
  • Kubeflow Pipelines'ı not defterinden tek bir tıklamayla çalıştırma
  • Not defterinde ve her ardışık düzen adımında verilerinizi otomatik olarak sürüm oluşturma

Gerekenler

  • Sahip izinlerine sahip olduğunuz etkin bir GCP projesi

Bu, Kubeflow'a odaklanan ileri düzey bir codelab'dir. Daha fazla bilgi ve platforma giriş için Introduction to Kubeflow (Kubeflow'a Giriş) dokümanına bakın. Alakalı olmayan kavramlar ve kod blokları işaretlenmiştir ve yalnızca kopyalayıp yapıştırmanız için paylaşılmıştır.

2. Ortamı ayarlama

GCP proje kimliğinizi ve küme adınızı ayarlayın

Proje kimliğinizi bulmak için sol üstteki hamburger menüsünde bulunan GCP Console'un Ana Sayfa panelini ziyaret edin. Ekran boşsa gösterge tablosu oluşturmak için istemde Evet'i tıklayın.

GCP Console'u açın

3fdc4329995406a0.png

Proje henüz seçilmediyse Proje seçin'i tıklayın:

e8952c0b96067dea.png

Projenizi seçin. Yalnızca bir tane olmalıdır:

fe25c1925487142.png

3. MiniKF'yi yükleme

İşlem örneği oluşturma

GCP Marketplace'te "MiniKF"yi arayın.

Arrikto tarafından sunulan MiniKF sanal makinesini seçin.

d6b423c1911ea85a.png

Compute Engine'de başlat düğmesini tıklayın ve projenizi seçin.

b5eeba43053db4bd.png

Yapılandır ve Dağıt penceresinde MiniKF örneğiniz için bir ad seçin ve varsayılan seçenekleri olduğu gibi bırakın. Ardından Dağıt düğmesini tıklayın.

dc401e2bb5a884d9.png

MiniKF Compute örneğinin başlatılmasını bekleyin.

5228086caadc44c6.png

MiniKF'ye giriş yapma

MiniKF VM başlatıldığında SSH düğmesini tıklayarak bağlanın ve giriş yapın. Minikube, Kubeflow ve Rok'un dağıtımını başlatacak olan minikf komutunu çalıştırmak için ekrandaki talimatları uygulayın. Bu işlemin tamamlanması birkaç dakika sürer.

774e83c3e96cf7b3.png

Kubeflow'a giriş yapma

Yükleme tamamlandıktan ve tüm pod'lar hazır olduktan sonra MiniKF kontrol panelini ziyaret edin. MiniKF kullanıcı adını ve şifresini kullanarak Kubeflow'a giriş yapın.

251b0bcdbf6d3c71.png

9d49d899bb0b5bd1.png

Chrome kullanıcıları şu ekranı görür:

6258e0f09e46a6c2.png

Firefox kullanıcıları şu ekranı görür:

8cff90ce2f0670bd.png

Safari kullanıcıları şu ekranı görür:

1c6fd768d71c0a92.png

Rok'a giriş yapma

Kubeflow'a giriş yaptıktan sonra hamburger simgesini tıklayarak sol menüyü açın. Snapshot Store'a gidin ve MiniKF kullanıcı adı ile şifresini kullanarak Rok'a giriş yapın.

a683198ac4ba900d.png

80aad6ba5d298a7e.png

Tebrikler! MiniKF'yi GCP'ye başarıyla dağıttınız. Artık not defterleri oluşturabilir, makine öğrenimi kodunuzu yazabilir ve Kubeflow Pipelines'ı çalıştırabilirsiniz. Veri sürümü oluşturma ve tekrarlanabilirlik için Rok'u kullanın.

4. Not defterinizden ardışık düzen çalıştırma

Bu bölümde, hangi yolcuların Titanic gemi enkazından sağ kurtulduğunu tahmin eden bir Kaggle yarışması olan Titanic örneğini çalıştıracaksınız.

Not defteri sunucusu oluşturma

Kubeflow merkezi kontrol panelinde Notebook Servers (Not Defteri Sunucuları) bağlantısına gidin.

4115cac8d8474d73.png

New Server'ı (Yeni Sunucu) tıklayın.

f9303c0a182e47f5.png

Not defteri sunucunuz için bir ad belirtin.

a2343f30bc9522ab.png

Bu resmi seçtiğinizden emin olun:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

5 GB boyutunda yeni ve boş bir veri birimi ekleyin ve bu birimi data olarak adlandırın.

8544d9b05826b316.png

Not defteri sunucusunu oluşturmak için Launch'u (Başlat) tıklayın.

28c024bcc55cc70a.png

Not defteri sunucusu kullanıma hazır olduğunda bağlanmak için Bağlan'ı tıklayın.

2f06041475f45d3.png

Verileri ve not defterini indirme

JupyterLab açılış sayfasının bulunduğu yeni bir sekme açılır. JupyterLab'de yeni bir terminal oluşturun.

2482011174f7bc75.png

Terminal penceresinde, data klasörüne gitmek ve laboratuvarın geri kalanında kullanacağınız not defterini ve verileri indirmek için bu komutları çalıştırın.

cd data/
git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples

Bu depoda, veriler ve not eklenmiş not defterleriyle birlikte bir dizi seçilmiş örnek yer alır. Kenar çubuğunda data/examples/titanic-ml-dataset/ klasörüne gidin ve titanic_dataset_ml.ipynb not defterini açın.

c85baf68b36c63b2.png

Titanic yarışmasının makine öğrenimi kodunu keşfedin

Not defterini adım adım çalıştırın. Bir kitaplık eksik olduğu için kodun başarısız olduğuna dikkat edin.

bf2451fd7407e334.png

Terminal'e dönün ve eksik kitaplığı yükleyin.

pip3 install --user seaborn

d90593b21425dd12.png

Yenile simgesini tıklayarak not defteri çekirdeğini yeniden başlatın.

a21f5f563b36ce4d.png

Hücreyi doğru kitaplıklar yüklü şekilde tekrar çalıştırın ve başarılı olduğunu görün.

Not defterinizi Kubeflow ardışık düzenine dönüştürme

Sol bölmede Kubeflow simgesini tıklayarak Kale'i etkinleştirin.

3f4f9c93b187b105.png

Hücre başına bağımlılıkları keşfedin. Birden fazla hücrenin tek bir işlem hattı adımının parçası olabileceğini ve bir işlem hattı adımının önceki adımlara nasıl bağlı olabileceğini görün.

15cca32444c1f12e.png

Derle ve Çalıştır düğmesini tıklayın.

bde5cef34f00e258.png

Anlık görüntünün ilerleme durumunu izleyin.

9408f46abb2493f5.png

Ardışık düzen çalıştırmasının ilerleme durumunu izleyin.

9edbde68032f5e4b.png

Kubeflow Pipelines kullanıcı arayüzüne gidip çalıştırmayı görüntülemek için bağlantıyı tıklayın.

a81646a22584e1b9.png

İşlemin tamamlanmasını bekleyin.

44bee7dc0d24ec21.png

d377b6d574a4970.png

Tebrikler! Not defterinizden başlayarak uçtan uca bir Kubeflow ardışık düzeni çalıştırdınız.

5. Birim anlık görüntüleriyle yeniden üretilebilirlik

Sonuçları inceleme

Sondaki adımı takip eden Sonuçlar işlem hattı adımının günlüklerine göz atın. Tüm tahmincilerin %100 puan gösterdiğini fark edin. Deneyimli bir veri bilimci bunu hemen şüpheli bulur. Bu durum, modellerimizin genelleme yapmadığını ve bunun yerine eğitim veri kümesi üzerinde aşırı uyum sağladığını gösterir. Bu durum muhtemelen modeller tarafından kullanılan verilerle ilgili bir sorundan kaynaklanmaktadır.

2a594032c2dd6ff6.png

Önceki durumu yeniden oluşturma

Neyse ki Rok, Derle ve Çalıştır düğmesini tıkladığınız zamanki gibi veri sürüm oluşturma ve tüm ortamı yeniden üretme işlemlerini gerçekleştirir. Bu sayede, verileriniz ve kodunuz için bir zaman makineniz olur. Bu nedenle, modellerden birini eğitmeden önce işlem hattının durumunu devam ettirelim ve neler olduğunu görelim. randomforest adımına göz atın ve Artifacts'i (Yapılar) tıklayın.

4f25ca4560711b23.png

Markdown bölümündeki adımları uygulayın. Örneğin, ilgili bağlantıyı tıklayarak Rok kullanıcı arayüzünde anlık görüntüyü inceleyin.

e533bc781da9355a.png

Rok URL'sini kopyalayın.

d155d19731b5cedd.png

Notebook Servers (Not Defteri Sunucuları) bağlantısına gidin.

aafeab01f3ef0863.png

New Server'ı (Yeni Sunucu) tıklayın.

f2265a64e8f9d094.png

Daha önce kopyaladığınız Rok URL'sini yapıştırın ve Otomatik doldur düğmesini tıklayın.

9ba4d4128a3bdeea.png

Not defteriniz için bir ad belirtin.

7685c3bf35fc74b2.png

Bu resmi seçtiğinizden emin olun:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

Not defteri sunucusunu oluşturmak için Launch'u (Başlat) tıklayın.

28c024bcc55cc70a.png

Not defteri sunucusu kullanıma hazır olduğunda bağlanmak için Bağlan'ı tıklayın.

34955a64ae316de1.png

Not defterinin, oluşturduğunuz işlem hattı adımının tam hücresinde açıldığını unutmayın.

a1f7c81f349e0364.png

Arka planda Kale, tüm kitaplıkları içe aktararak ve önceki adımlardaki değişkenleri yükleyerek not defterinin durumunu devam ettirir.

Önceki durumu hata ayıklama

Bu hücreye bir yazdırma komutu ekleyin:

print(acc_random_forest)

Rastgele ormanı yeniden eğitmek ve puanı yazdırmak için Üst Karakter + Enter tuşlarına basarak etkin hücreyi çalıştırın. Bu sayı 100'dür.

e2a8a3b5465fcb5d.png

Şimdi eğitim verilerinde tuhaf bir şey olup olmadığına bakma zamanı. Bu sorunu keşfetmek ve düzeltmek için önceki hücreyi seçip artı simgesini (+) tıklayarak Random Forest Markdown'un üstüne bir hücre ekleyin.

d1077f32dff9620f.png

Aşağıdaki metni ekleyin ve eğitim kümesini yazdırmak için hücreyi çalıştırın.

train_df

2854798ff01aed4e.png

Hata! Eğitim etiketlerinin bulunduğu sütun ("Survived") yanlışlıkla giriş özellikleri olarak eklenmiş. Model, "Survived" özelliğine odaklanmayı ve geri kalanını yoksaymayı öğrenerek girişi kirletiyor. Bu sütun, modelin hedefiyle tam olarak eşleşir ve tahmin sırasında mevcut değildir. Bu nedenle, modelin diğer özelliklerden öğrenmesine izin vermek için eğitim veri kümesinden kaldırılması gerekir.

Hata düzeltme ekleme

Bu sütunu kaldırmak için hücreyi düzenleyerek şu komutu ekleyin:

train_df.drop('Survived', axis=1, inplace=True)
train_df

9e76c16a862b566.png

Kale'i etkinleştirin ve Survived etiketlerini kaldıran hücrenin featureengineering işlem hattı adımının bir parçası olduğundan emin olun (aynı ana hat rengine sahip olmalıdır).

Derle ve Çalıştır düğmesini tıklayarak işlem hattını tekrar çalıştırın.

Kubeflow Pipelines kullanıcı arayüzüne gidip çalıştırmayı görüntülemek için bağlantıyı tıklayın.

Sonuçlar adımının tamamlanmasını bekleyin ve son sonuçları görmek için günlükleri görüntüleyin. Artık gerçekçi tahmin puanlarınız var.

8c6a9676b49e5be8.png

6. Temizleme

MiniKF VM'sini yok etme

GCP Console'da Deployment Manager'a gidin ve minikf-1 dağıtımını silin.

7. Tebrikler

Tebrikler! Kubeflow (MiniKF), Kale ve Rok kullanarak uçtan uca bir veri bilimi iş akışını başarıyla çalıştırdınız.

Yapabilecekleriniz

Kubeflow topluluğuna katılın:

Daha fazla bilgi