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.

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

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

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.

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

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.

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

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.

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.


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

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

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

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.


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.

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

Not defteri sunucunuz için bir ad belirtin.

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.

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

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

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.

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.

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.

Terminal'e dönün ve eksik kitaplığı yükleyin.
pip3 install --user seaborn

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

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.

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.

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

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

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

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

İşlemin tamamlanmasını bekleyin.


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.

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

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.

Rok URL'sini kopyalayın.

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

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

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

Not defteriniz için bir ad belirtin.

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.

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

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

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.

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

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

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

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.

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:
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- Salı günleri topluluk görüşmesi
