Notebook'tan Kubeflow Pipelines'a MiniKF ve Kale ile

1. Giriş

Kubeflow, Kubernetes için kullanılan bir makine öğrenimi araç setidir. Projenin amacı, Kubernetes'te makine öğrenimi (ML) iş akışlarının dağıtımlarını basit, taşınabilir ve ölçeklenebilir hale getirmektir. Amaç, çeşitli altyapılara makine öğrenimi için sınıfının en iyisi açık kaynak sistemleri dağıtmanın basit bir yolunu sunmaktır.

Kubeflow dağıtımı nasıldır?

Kubeflow dağıtımı:

  • Taşınabilir: Google Cloud Platform'da (GCP), şirket içinde veya sağlayıcılar arasında bulunan tüm Kubernetes kümelerinde çalışır.
  • Ölçeklenebilir: Dalgalanan kaynakları kullanabilir ve yalnızca Kubernetes kümesine ayrılan kaynak sayısıyla sınırlandırılır.
  • Oluşturulabilir: Çevrimdışı veya düşük kaliteli ağlarda çalışmak için hizmet çalışanları ile geliştirildi.

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

Bu codelab'de MiniKF'yi kullanarak kendi Kubeflow dağıtımınızı oluşturma ve Jupyter Notebook'tan Kubeflow Pipelines iş akışı çalıştırma konularında size yol göstereceğiz.

Oluşturacaklarınız

Bu codelab'de, Kubeflow Pipelines ile herhangi bir CLI komutu veya SDK kullanmadan karmaşık bir veri bilimi ardışık düzeni derleyeceksiniz. Kubernetes veya Docker bilgisine sahip olmanız gerekmez. Bu işlemin ardından altyapınız şunları içerecektir:

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

Neler öğreneceksiniz?

  • Kubeflow'u MiniKF ile yükleme
  • CLI komutu veya SDK kullanmadan Jupyter not defterlerinizi Kubeflow Pipelines'a dönüştürme
  • Tek bir düğmeye tıklayarak not defteri içinden Kubeflow Pipelines'ı ç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 gelişmiş bir codelab'dir. Daha fazla bilgi ve platforma giriş için Introduction to Kubeflow (Kubeflow'a Giriş) belgelerine bakın. Alakalı olmayan kavramlar ve kod blokları vurgulanır ve kolayca kopyalayıp yapıştırmanız için sunulur.

2. Ortamı ayarlama

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

Proje kimliğinizi bulmak için sol üstteki hamburger menüde yer alan GCP Console ana panelini ziyaret edin. Ekran boşsa bir kontrol paneli oluşturmak için istemdeki Evet'i tıklayın.

GCP Console'u açın

3fdc4329995406a0.png

Proje henüz seçilmemişse Select a project'i (Proje seç) tıklayın:

e8952c0b96067dea.png

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

fe25c1925487142.png

3. MiniKF'yi yükle

Compute örneği oluşturma

GCP Marketplace'te "MiniKF" araması yapın.

Arrikto'nun MiniKF sanal makinesini seçin.

d6b423c1911ea85a.png

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

b5eeba43053db4bd.png

Yapılandır ve MiniKF örneğiniz için penceresini dağıtın, ad seçin ve varsayılan seçenekleri değiştirmeden bırakın. Ardından Dağıt düğmesini tıklayın.

dc401e2bb5a884d9.png

MiniKF Compute örneğinin yüklenmesini bekleyin.

5228086caadc44c6.png

MiniKF'ye giriş yap

MiniKF sanal makinesi kurulduktan sonra SSH düğmesini tıklayarak bağlanın ve giriş yapın. Ekrandaki talimatları uygulayarak minikf komutunu çalıştırarak Minikube, Kubeflow ve Rok'un dağıtımını başlatın. Bu işlemin tamamlanması birkaç dakika sürer.

774e83c3e96cf7b3.png

Kubeflow'a giriş yapın

Yükleme tamamlandığında ve tüm kapsüller hazır olduğunda MiniKF kontrol panelini ziyaret edin. MiniKF kullanıcı adı ve şifresiyle 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ş yapın

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

a683198ac4ba900d.png

80aad6ba5d298a7e.png

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

4. Not Defterinizin içinden Ardışık Düzen çalıştırma

Bu bölümde, hangi yolcuların Titanic'teki gemi enkazında hayatta kaldığını tahmin eden bir Kaggle yarışması olan Titanic örneğini yürüteceksiniz.

Not Defteri Sunucusu Oluşturma

Kubeflow merkezi kontrol panelindeki 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

Şu 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 Hacmi ekleyip veri olarak adlandırın.

8544d9b05826b316.png

Not defteri sunucusunu oluşturmak için Launch (Başlat) seçeneğini tıklayın.

28c024bcc55cc70a.png

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

2f06041475f45d3.png

Verileri ve not defterini indirme

JupyterLab açılış sayfasıyla yeni bir sekme açılır. JupyterLab'de yeni bir Terminal oluşturun.

2482011174f7bc75.png

data (veriler) klasörüne gidip not defterini ve laboratuvarın geri kalanında kullanacağınız verileri indirmek için Terminal penceresinde aşağıdaki komutları çalıştırın.

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

Bu depo, veriler ve ek açıklamalı not defterleri içeren bir dizi seçilmiş örnek içerir. 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ğunu unutmayın.

bf2451fd7407e334.png

Terminal'e geri 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

Doğru kitaplıkları yükleyerek hücreyi tekrar çalıştırın ve başarılı bir şekilde kontrol edin.

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

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

3f4f9c93b187b105.png

Hücre başına bağımlılıkları keşfetme. Birden fazla hücrenin nasıl tek bir ardışık düzen adımının parçası olabileceğini ve bir ardışık düzen adımının önceki adımlara nasıl bağlı olabileceğini öğrenin.

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 gitmek ve ç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! Az önce not defterinizden başlayarak uçtan uca Kubeflow ardışık düzeni çalıştırdınız.

5. Birim Anlık Görüntüleriyle Yeniden Oluşturulabilirlik

Sonuçları inceleme

İkinci ve son ardışık düzen adımının günlüklerine göz atın Sonuçlar. Tüm ön göstergelerin puanının %100 olduğuna dikkat edin. Deneyimli bir veri bilimci bunu hemen şüpheli bulur. Bu, modellerimizin genelleme yapmadığını, bunun yerine eğitim veri kümesine fazla uyumlu olduğunun iyi bir göstergesidir. Bunun nedeni muhtemelen modeller tarafından tüketilen verilerle ilgili bir sorundur.

2a594032c2dd6ff6.png

Önceki durumu yeniden oluşturma

Derle ve Çalıştır düğmesini tıkladığınız zamanda Rok, veriler için sürüm oluşturma ve tüm ortamı yeniden üretme işini halleder. Böylece, verileriniz ve kodunuz için bir zaman makineniz olur. Şimdi, modellerden birini eğitmeden önce ardışık düzenin durumunu devam ettirelim ve neler olduğuna bakalım. rastgele orman adımına göz atıp Yapılar'ı tıklayın.

4f25ca4560711b23.png

Markdown'daki adımları izleyin. Örneğin, ilgili bağlantıyı tıklayarak anlık görüntüyü Rok kullanıcı arayüzünde görüntüleyin.

e533bc781da9355a.png

Rok URL'sini kopyalayın.

d155d19731b5cedd.png

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

Şu 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 (Başlat) seçeneğini tıklayın.

28c024bcc55cc70a.png

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

34955a64ae316de1.png

Not defterinin, oluşturduğunuz ardışık düzen adımının tam hücresinde açıldığını unutmayın.

a1f7c81f349e0364.png

Kale, arka planda tüm kitaplıkları içe aktarıp önceki adımlarda bulunan değişkenleri yükleyerek not defterinin durumunu devam ettirdi.

Önceki durum için hata ayıkla

Bu hücreye bir yazdırma komutu ekleyin:

print(acc_random_forest)

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

e2a8a3b5465fcb5d.png

Şimdi sıra eğitim verilerinde bir anormallik olup olmadığına bakmaya geldi. Bu sorunu araştırmak ve düzeltmek için önceki hücreyi seçip artı simgesini (+) tıklayarak Rastgele Orman işaretinin üstüne bir hücre ekleyin.

d1077f32dff9620f.png

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

train_df

2854798ff01aed4e.png

Hata! Eğitim etiketlerini ("Hayatta Kaldı") içeren sütun yanlışlıkla giriş özellikleri olarak eklenmiş. Model, “Hayatta kalmayı başaranlar”a odaklanmayı öğrendi gerisini yok sayabilir ve girdiyi kirletebilir. Bu sütun, modelin hedefiyle tam olarak eşleşir ve tahmin sırasında mevcut değildir. Bu nedenle, modelin diğer özelliklerden öğrenmesi için eğitim veri kümesinden kaldırılması gerekir.

Hata düzeltmesi 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'yi etkinleştirin ve survived etiketlerini kaldıran hücrenin, özellik mühendisliği ardışık düzen adımının bir parçası olduğundan emin olun (aynı dış çizgi rengine sahip olmalıdır).

Derle ve Çalıştır düğmesini tıklayarak ardışık düzeni tekrar çalıştırın.

Kubeflow Pipelines kullanıcı arayüzüne gitmek ve ç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 nihai 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 sanal makinesini kaldır

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

7. Tebrikler

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

Sırada ne var?

Kubeflow topluluğuna katılın:

Daha fazla bilgi