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: Özel olarak seçilmiş makine öğrenimi çerçeveleri ve kitaplıkları arasından seçim yaparak eksiksiz bir makine öğrenimi iş akışında bağımsız adımlar yapılandırmanızı sağlar.
Kubeflow, serbest bağlantılı mikro hizmetleri tek bir birim olarak düzenleme ve dizüstü bilgisayar, şirket içi veya bulut gibi çeşitli konumlara dağıtma olanağı sunar.
Bu codelab'de, MiniKF'yi kullanarak kendi Kubeflow dağıtımınızı oluşturma, ardından model eğitmek ve sunmak için hiperparametre ayarı ile Kubeflow Pipelines iş akışını çalıştırma adımları açıklanmaktadır. Tüm bunları bir Jupyter Notebook'un içinden yapabilirsiniz.
Oluşturacaklarınız
Bu codelab'de, herhangi bir CLI komutu veya SDK kullanmadan Kubeflow Pipelines'da hiperparametre ayarı yaparak 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
- Kubeflow Pipelines'ı tek bir tıklamayla not defterinin içinden hiperparametre ayarıyla ç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 projenizi oluşturma
GCP projesi oluşturmak veya mevcut GCP projenizi yapılandırmak için aşağıdaki adımları uygulayın. Mevcut bir GCP projesini kullanmayı planlıyorsanız projenin aşağıda açıklanan minimum gereksinimleri karşıladığından emin olun. İlk adım, GCP Console'da kaynak yöneticisini açmaktır.
Yeni proje oluşturun veya mevcut bir projeyi seçin:
Aşağıdaki minimum gereksinimleri kontrol edin:
- Proje için sahip rolüne sahip olduğunuzdan emin olun.
- Projeniz için faturalandırmanın etkinleştirildiğinden emin olun.
- GCP Ücretsiz Katmanı'nı veya 300 ABD doları kredili 12 aylık deneme süresini kullanıyorsanız ücretsiz katman yeterli kaynak sunmadığından MiniKF'nin varsayılan GCP kurulumunu çalıştıramayacağınızı unutmayın. Hesabınızı ücretli hesaba yükseltmeniz gerekir.
GCP projesi oluşturma konusunda daha fazla yardım almak için GCP belgelerini inceleyin.
GCP projenizi oluşturduktan sonra, doğrudan MiniKF'yi yükleme talimatlarına gidin.
Önceden tahsis edilmiş GCP projenizi açma
Önceden tahsis edilen GCP projenizi açmak için aşağıdaki düğmeyi tıklayarak GCP Console'u ziyaret edin ve sol üstteki hamburger menüde yer alan Ana Sayfa panelini açın. Ekran boşsa bir kontrol paneli oluşturmak için istemdeki Evet'i tıklayın.
Proje seçili değilse Select a project'i (Proje seç) tıklayın:
Projenizi seçin. Yalnızca bir tane olmalıdır:
3. MiniKF'yi yükle
MiniKF dahil bir Compute örneği oluşturma
GCP Marketplace'te "MiniKF" araması yapın.
Arrikto'nun MiniKF sanal makinesini seçin:
LANSMAN düğmesini tıklayın ve projenizi seçin:
Yapılandır ve Deploy (Dağıt) penceresinde MiniKF örneğiniz için bir ad ve alt bölge seçip varsayılan seçenekleri olduğu gibi bırakın. Ardından Dağıt düğmesini tıklayın:
MiniKF Compute örneğinin yüklenmesini bekleyin:
MiniKF'ye giriş yap
MiniKF sanal makinesi kurulduğunda bağlanıp SSH düğmesini tıklayarak 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.
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:
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ş yapın
Kubeflow'a giriş yaptıktan sonra hamburger simgesini tıklayarak soldaki menüyü açın. Snapshots'ı (Anlık Görüntüler) tıklayın, ardından MiniKF kullanıcı adı ve şifresiyle Rok'a giriş yapın.
Tebrikler! MiniKF'yi GCP'de başarıyla dağıttınız. Artık not defterleri oluşturabilir, makine öğrenimi kodunuzu yazabilir, Kubeflow Pipelines'ı çalıştırabilir, veri sürümü oluşturma ve yeniden üretilebilirlik için Rok'u kullanabilirsiniz.
4. Not defterinizin içinden ardışık düzen çalıştırma
Bu bölümde, Udacity AI Nanodegree projesindeki Köpek Türü Tanımlama örneğini yürüteceksiniz. Bir köpeğin resmi dikkate alındığında, son model köpeğin cinsine ilişkin bir tahmin sağlayacaktır.
Kubeflow kümenizde not defteri sunucusu oluşturma
Kubeflow merkezi kontrol panelindeki Notebooks bağlantısına gidin.
New Server'ı (Yeni Sunucu) tıklayın.
Not defteri sunucunuz için bir ad belirtin.
Aşağıdaki Docker görüntüsünü seçtiğinizden emin olun (Görüntü etiketinin farklılık gösterebileceğini unutmayın):
gcr.io/arrikto/jupyter-kale:f20978e
5 GB boyutunda yeni ve boş bir veri hacmi ekleyip veri olarak adlandırın.
Not defteri sunucusunu oluşturmak için Başlat'ı tıklayın.
Not defteri sunucusu kullanılabilir olduğunda sunucuya bağlanmak için Bağlan'ı tıklayın.
Verileri ve not defterini indirme
JupyterLab açılış sayfasıyla yeni bir sekme açılır. JupyterLab'de yeni bir terminal oluşturun.
Terminal penceresinde, data klasörüne gidip laboratuvarın geri kalanında kullanacağınız not defterini ve verileri indirmek için şu komutları çalıştırın:
cd data/ git clone https://github.com/kubeflow-kale/kale
Klonlanan depo, verilerin ve ek açıklamalı not defterlerinin yer aldığı bir dizi seçilmiş örnek içerir.
Kenar çubuğundan data/kale/examples/dog-breed-classification/
klasörüne gidin ve dog-breed.ipynb
not defterini açın.
Köpek Irkı Tanımlama örneğinin ML kodunu inceleyin
Şu an için, veri kümelerini indiren hücreleri çalıştırmayın. Çünkü, klonladığınız depoda yer alan bazı daha küçük veri kümelerini kullanacaksınız. Bu örneği evinizde kendi hızınızda çalıştırıyorsanız veri kümelerini indirebilirsiniz.
Gerekli tüm kitaplıkları içe aktarmak için imports
hücresini çalıştırın. Bir kitaplık eksik olduğundan kodun başarısız olduğunu unutmayın:
Normalde bu Notebook'u yeni yüklenen kitaplıkları dahil etmek üzere bir Kubeflow ardışık düzeni olarak çalıştırabilmek için yeni bir Docker görüntüsü oluşturmanız gerekir. Neyse ki Rok ve Kale, Rok'un anlık görüntü teknolojisi ve Kale'nin anlık olarak alınan bu birimleri ardışık düzen adımlarına eklemesi sayesinde geliştirme sırasında yüklediğiniz kitaplıkların ardışık düzeninize yerleştirilmesini sağlıyor.
Eksik kitaplığı yüklemek için sonraki hücreyi çalıştırın:
Yeniden başlat simgesini tıklayarak not defteri çekirdeğini yeniden başlatın:
Doğru kitaplıkları yükleyerek imports
hücresini tekrar çalıştırın ve başarılı bir şekilde izleyin.
Not defterinizi Kubeflow Pipelines'da bir ardışık düzene dönüştürme
Not defterinin sol bölmesindeki Kubeflow simgesini tıklayarak Kale'yi etkinleştirin:
Kale Deployment Panel'daki kaydırma çubuğunu tıklayarak Kale'yi etkinleştirin:
Not defterindeki hücre başına bağımlılıkları keşfedin. Birden çok not defteri hücresinin, hücrelerin solundaki renk çubuklarıyla belirtildiği gibi tek bir ardışık düzen adımının parçası olabileceğini ve hücrelerin üzerindeki etiketlere bağlı olarak belirtildiği gibi, bir ardışık düzen adımının önceki adımlara nasıl bağlı olabileceğini öğrenin. Örneğin, aşağıdaki resimde aynı ardışık düzen adımının parçası olan birden çok hücre gösterilmektedir. Bunlar aynı kırmızı renge sahiptir ve önceki bir ardışık düzen adımına bağlıdır.
Derle ve Çalıştır düğmesini tıklayın:
Kale artık not defterinizi Kubeflow Pipelines ardışık düzenine dönüştürüp not defterinizi oluşturuyor. Ayrıca Kale, mevcut not defterinin veri hacminin anlık görüntüsünü almak için Rok ile entegre olduğundan anlık görüntünün ilerleme durumunu izleyebilirsiniz. Rok, veriler için sürüm oluşturma ve tüm ortamı yeniden oluşturma işlemlerini Derle ve Çalıştır düğmesini tıkladığınızda olduğu gibi yapar. Böylece, verileriniz ve kodunuz için bir zaman makineniz olur ve ardışık düzeniniz, yeni Docker görüntüleri derlemenize gerek kalmadan kodunuzu geliştirdiğiniz ortamda çalışır.
Ardışık düzen derlendi ve Kubeflow Pipelines'a yüklendi. Şimdi bağlantıyı tıklayarak Kubeflow Pipelines kullanıcı arayüzüne gidin ve çalıştırmayı görüntüleyin.
Kubeflow Pipelines kullanıcı arayüzü yeni bir sekmede açılır. Koşunun bitmesini bekleyin.
Tebrikler! Not defterinizden başlayarak Kubeflow Pipelines'da uçtan uca bir ardışık düzen çalıştırdınız.
5. Hiperparametre ayarı ile öğrenmeyi aktarma
Sonuçları inceleme
cnn-from-scratch adımı günlüklerine göz atın. (Kubeflow Pipelines kullanıcı arayüzündeki grafikte yer alan adımı, ardından Logs (Günlükler) sekmesini tıklayın.) Bu, konvolüsyonel nöral ağı (CNN) sıfırdan eğittiğiniz adımdır. Eğitilen modelin doğruluk oranının çok düşük olduğunu ve bu adımın tamamlanmasının uzun sürdüğünü görebilirsiniz.
cnn-vgg16 adımının günlüklerine göz atın. Bu adımda, Visual Geometry Group (VGG) tarafından eğitilen bir nöral ağ olan önceden eğitilmiş VGG-16 modelinde aktarım öğrenmesini kullandınız. Doğruluk, önceki modelden çok daha yüksek olsa da daha iyisini sunabiliriz.
Şimdi, cnn-resnet50 adımının günlüklerine göz atın. Bu adımda, önceden eğitilmiş ResNet-50 modelinde aktarımla öğrenmeyi kullandınız. Doğruluk oranı çok daha yüksektir. Bu nedenle, bu codelab'in geri kalanında bu modeli kullanacaksınız.
Hiperparametre ayarı
Kubeflow kullanıcı arayüzünüzde not defteri sunucusuna geri dönün ve dog-breed-katib.ipynb
adlı not defterini (data/kale/examples/dog-breed-classification/
yolunda) açın. Bu not defterinde, Katib'i kullanarak ResNet-50 modeli üzerinde bazı hiperparametre ayarı denemeleri çalıştıracaksınız. Not defterinin başında parametreleri tanımlamak için tek bir hücre olduğuna dikkat edin:
Hiperparametre ayarını çalıştırmak için not defterinin sol bölmesinde Katib ile HP Tuning'i etkinleştirin:
Ardından Katib'i yapılandırmak için Katib İşini ayarla'yı tıklayın:
Her parametre için arama alanını ve bir hedef tanımlayın:
Katib İşini Derle ve Çalıştır düğmesini tıklayın:
Katib denemesinin ilerlemesini izleyin:
Katib denemesini görmek için Görüntüle'yi tıklayın:
Kubeflow Pipelines'da (KFP) çalıştırmaları görmek için Bitti'yi tıklayın:
Katib deneme sayfasında yeni denemeleri göreceksiniz:
Ayrıca KFP kullanıcı arayüzünde yeni çalıştırmaları göreceksiniz:
Az önce olanları açalım. Kale daha önce not defterinden ardışık düzen çalıştırması üretirken şimdi de her biri farklı bağımsız değişken kombinasyonlarıyla beslenen birden fazla ardışık düzen çalıştırması oluşturuyor.
Katib, Kubeflow'un genel amaçlı hiperparametre ayarı işlerini çalıştırmaya yarayan bileşenidir. Katib, yürüttüğü işler hakkında hiçbir bilgiye sahip değil (Katib jargonunda denemeler olarak adlandırıldı). Kale'nin ilgilendiği tek şey arama alanı, optimizasyon algoritması ve hedef. Katib, deneme olarak basit İşlerin (Kapsüllerin) çalıştırılmasını destekler ancak Kale, denemelerin Kubeflow Pipelines'da ardışık düzenlerini çalıştırmasını ve ardından ardışık düzen çalıştırmalarından metrikleri toplamasını sağlamak için bir dolgu uygular.
Katib denemesi deneme üretirken Katib kullanıcı arayüzünde daha fazla deneme göreceksiniz:
KFP kullanıcı arayüzünde başka çalıştırma işlemleri de yapılır:
Katib denemesi tamamlandığında, tüm denemeleri Katib kullanıcı arayüzünde görüntüleyebilirsiniz:
KFP kullanıcı arayüzündeki tüm çalıştırmalar:
Not Defteri'ne geri dönerseniz, Kale panelindeki Katib denemesinin hemen yanında bir bilgi düğmesi görürsünüz:
Bunu tıkladığınızda en iyi sonucu ve bunu üreten parametreleri görürsünüz:
6. Temizleme
MiniKF sanal makinesini kaldır
GCP Console'da Deployment Manager'a gidin ve minikf-on-gcp
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:
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- Haftalık topluluk görüşmesi, Slack ve diğer topluluk ayrıntıları