Çoğu kişi Google’ı arama motorlarıyla özdeşleştirse de şirketin veri bilimi sektöründe de köklü bir geçmişi var. Veriden en yüksek faydayı sağlamaya yönelik son teknoloji ürün ve çözümler sunmaya devam ediyor. Bu ürünlerden biri olan Vertex AI, kurumsal ölçekte makine öğrenimi sürecini basitleştirmek amacıyla 2021’de piyasaya sürüldü.
Bu eğitimde Google’ın Vertex AI platformunu kullanmaya nasıl başlayacağınızı ve ML yaşam döngüsünün geniş bir bölümünü nasıl kapsayacağınızı öğreneceğiz. Sonunda, bir sınıflandırma görevi için tahmin üretmek üzere istek gönderebileceğimiz şekilde dağıtılmış bir modelle ayrılacağız.
Vertex AI nedir?
Tipik bir makine öğrenimi yaşam döngüsü birçok aşamadan oluşur:
Veri hazırlama, alma, keşif
Özellik mühendisliği, seçim
Model eğitimi ve ayarlama
Dağıtım ve model izleme
Bu aşamaların ve alt aşamaların her biri, onları koordine etmek için farklı araç setleri ve çeşitli uzman ekipler gerektirir.
Google Cloud’un Vertex AI’ı bu sürecin tamamını tek bir platformda sadeleştirir ve birleştirir.
Büyük ölçekli ML uygulamaları deneyimli uzmanlar gerektirse de Vertex AI her beceri düzeyinden kullanıcıyı güçlendirir:
Yeni başlayanlar için AutoML: Yazılım bilgisi gerekmez. Verinizi içeri aktarın; birkaç tıklamayla AutoML sizin için yüksek kaliteli bir model üretir. Veri hazırlama, algoritma seçimi ve hiperparametre ayarı dahil model oluşturmanın tüm ağır işleri kaputun altında yapılır.
Uzmanlar için özel model eğitimi: Deneyiminiz sınırları belirler. Deneyimli veri bilimciler ve ML mühendisleri için Vertex AI, PyTorch, TensorFlow veya XGBoost gibi tercih ettikleri çerçevelerle model eğitme esnekliği sağlar.
Herkes için dağıtım: Modelinizi ister AutoML ile ister özel olarak eğitin, Vertex AI dağıtımı çok kolaylaştırır. Modelleri ürünlerinize entegre etmek için gerçek zamanlı API’ler olarak yayımlayabilir veya büyük ölçekli görevler için toplu tahmin kullanabilirsiniz.
Bu bölümde değinmediğimiz pek çok şey var; ancak bu eğitimi takip ederken çoğuyla bizzat çalışacaksınız.
Google Cloud Hizmetleri nedir?
Platformu keşfetmeye başlamadan önce, bağlı olduğu çatı yapıyı — Google Cloud hizmetlerini — anmak gerekir. Google Cloud Hizmetleri; depolama, ağ, veritabanları, analitik ve makine öğrenimi yetenekleri sunan geniş bir bulut bilişim çözümleri yelpazesini kapsar.
Bu hizmetler, makine öğrenimi iş akışınızı birleştirmek için Vertex AI ile senkronize şekilde çalışır. Vertex AI ile sık kullanılan hizmetlerin dökümü şöyledir:
Veri depolama ve yönetimi
Cloud Storage: Ham veriniz için merkezi bir havuz görevi görür; Vertex AI eğitim ve analiz için buraya erişir.
BigQuery: Büyük veri kümelerini depolayıp sorgulamak için güçlü bir veri ambarı; Vertex AI’ın BigQuery ML ile yerinde eğitim yapmasını sağlar.
Hesaplama kaynakları
Compute Engine: Özel model eğitim ihtiyaçlarınız için çeşitli yapılandırmalarda sanal makineler sağlar. Vertex AI, yoğun kaynak gerektiren eğitim işleriniz için bu makinelere bağlanabilir.
Vertex AI pipelines: Verimlilik için çeşitli hesaplama kaynakları arasında karmaşık ML iş akışlarını koordine eder.
Google Cloud hizmetleri, cloud.google.com’u ziyaret ettiğinizde Google hesabınız üzerinden her zaman kullanılabilir. Daha önce hiç kullanmadıysanız, ücretsiz deneme kazanmak için “Get started for free”yi tıklayın.
Bilgilendirme: Eğitimi adım adım takip etmek isterseniz, Vertex AI için 25-30 ABD doları harcama yapmaya hazırlıklı olun. En ucuz yapılandırmaları kullanacağız.
Google Cloud Console’a gittiğinizde büyük olasılıkla aşağıdaki karşılama sayfasına ulaşacaksınız:
Burada çalışma alanı adınız listelenir; benimki ibexprogramming.com.
İlk yapacağımız şey bir proje oluşturmak. Google Cloud projeleri, belirli bir görev için kaynakları yönetmek üzere kullanılan üst düzey organizasyon birimleridir. İşte nasıl oluşturulacağını gösteren bir GIF:
Proje oluşturulduktan sonra onu seçin; sayfanın üst çubuğu şunu göstermelidir:
Şimdi bir faturalandırma hesabı oluşturmanız gerekiyor; çünkü Vertex AI hizmetlerini etkinleştirmek için fatura bilgisi ister. Endişelenmeyin — ücretli kaynakları kullanana kadar ücretlendirilmezsiniz. Bu yüzden https://console.cloud.google.com/billing: adresine gidin.
Benimki gibi halihazırda bir hesabınız yoksa “Create account”a tıklayın ve yönergeleri izleyin. Bu faturalandırma hesabını bir sonraki bölümde projemize bağlayacağız.
Sonraki sayfa, projeniz için Google Cloud’un sunduğu tüm hizmetleri listeler. “Vertex AI” (Ctrl + F) diye aratıp menünüze kolay erişim için sabitleyin. Ardından, hizmetin kendisine tıklayın:
Bu işlem sizi Vertex AI panonuza yönlendirir. Vertex AI API’sini etkinleştirmenizi isteyen bir pencere açılabilir — “Enable”ı seçin. Pencere açılmazsa, aynı işlemi yapmak için “Enable all API permissions” düğmesine tıklayabilirsiniz.
Artık Vertex AI’a bir veri kümesi yüklemeye hazırız.
Vertex AI’da Veri Kümesi Yükleme
Vertex AI’a veri kümesi eklemenin çeşitli yolları vardır. Bu bölümde basitlik adına yerel bir CSV dosyası kullanacağız.
Örnek veri kümesini indirme
Bu makalede, UCI Makine Öğrenimi deposundaki Dry Bean veri kümesini kullanacağız. 13 binin üzerinde bakla örneği ve bunların 15 sayısal ölçümünü içerir.
Görev, bunları yedi bakla türüne sınıflandırmaktır: Seker, Barbunya, Bombay, Cali, Dermosan, Horoz ve Sira.
İndirdikten sonra, ZIP içindeki Excel dosyasını yerel dizininize kaydedin:
Daha önce belirttiğimiz gibi, ham verimizi depolamak için bir Google Storage Bucket’a ihtiyacımız var. Ürünün panosuna gitmek için aşağıdaki GIF’i izleyin:
GIF, depolama hizmetlerini kullanmaya başlamak için bir faturalandırma hesabı bağlamamız gerektiğini ve bunu daha önce oluşturduğumuz hesapla yaptığımızı gösteriyor. Ardından, küresel olarak benzersiz bir ada sahip bir kova oluşturabileceksiniz:
Benzersiz bir ad bulduğunuzda, kova oluşturulana kadar “Continue”a tıklayın — tüm alanlar için varsayılan seçenekleri seçebilirsiniz.
Artık önceki bölümde kaydettiğimiz CSV dosyasını içe almaya hazırız.
Yerel bir CSV’yi Vertex AI’a içe aktarma
Şimdi Vertex AI panomuza geri dönelim ve Datasets sekmesine bakalım:
Boş olduğunu göreceksiniz; “+Create” düğmesine tıklayın:
Veri kümesine benzersiz bir ad verin ve tabular seçeneğini seçin:
Ardından platform size kaynak seçeneklerini gösterir. Yerel bir CSV dosyası yüklemeyi seçin ve Cloud Storage yolu için az önce oluşturduğunuz kovayı seçin:
Veri kümesi başarıyla yüklendiğinde, CSV dosyası hakkında temel meta verileri gösteren “Analyze” sekmesi karşınıza çıkacaktır. Ayrıca, bir AutoML eğitim işini başlatacak “TRAIN NEW MODEL” düğmesini de göreceksiniz.
Ancak, bu düğmeyi kullanmayacağız; çünkü tamamen ML’ye yeni başlayanlar için. Bunun yerine, AutoML ve özel kütüphaneleri çalıştırmak üzere bir Jupyterlab kodlama ortamı ve hesaplama kaynakları yapılandırmak için Vertex AI Workbench’i kullanacağız.
Vertex AI Workbench’te Jupyterlab ve Hesaplama Kaynaklarını Yapılandırma
Vertex AI birleşik bir platform olduğundan, workbench adı verilen geliştirme ortamları da sunar. Bir workbench oluşturmak için kendi sekmesine gidin ve aşağıdaki GIF’teki adımları izleyin:
Her workbench, önceden kurulu Jupyterlab 3 ile gelir. Dolayısıyla yalnızca bütçenize ve ihtiyaçlarınıza göre donanım seçeneklerini yapılandırmanız gerekir. Veri kümemiz oldukça küçük olduğu için yalnızca örnek olması amacıyla en zayıf örneği seçtim; saatlik maliyeti yaklaşık 0,12 ABD dolarıdır (Hesaplamaların hızlanması için daha fazla CPU çekirdeğine sahip bir makine seçmenizi öneririm).
Ayrıca boşta kalma kapatma süresini 10 dakikaya indirdim; böylece kapatmayı unutursam ortam otomatik olarak durur.
Workbench’in başlatılması biraz zaman alacaktır. Tamamlandığında “OPEN JUPYTERLAB” düğmesi görünür ve tıklayabiliriz:
Alışık olduğumuz Jupyterlab arayüzüne yönlendirileceğiz. Buradan yeni bir Python 3 not defteri oluşturup dilediğiniz gibi yeniden adlandırın. İlk hücrede Google Cloud hizmetleri SDK’sı google-cloud-aiplatform’u kurun/yükseltin:
[compute]
region = us-central1
[core]
account = # HIDDEN #
disable_usage_reporting = True
project = vertexai-tutorial-423010
[dataproc]
region = us-central1
Your active configuration is: [default]
Altyapı:
gcloud ve gsutil tüm workbench’lerde mevcut terminal araçlarıdır. Google Cloud hizmetlerinizi verimli biçimde yönetmenizi sağlarlar.
Yazdırılan çıktıda yer alan aşağıdaki bilgileri Python değişkenleri olarak kaydedin:
PROJECT_ID ='vertexai-tutorial-423010'
BUCKET_URI ='gs://vetex-tutorial-bucket-bex'
REGION ='us-central1'Altyapı:
BUCKET_URI’yi kendi kova adınıza göre değiştirmeyi unutmayın. Ardından aiplatform alt modülünü içe aktarın ve başlatın:
from google.cloud import aiplatform as ai
ai.init(project=PROJECT_ID, location=REGION, staging_bucket=BUCKET_URI)Altyapı:
aiplatform, Vertex AI özellikleriyle etkileşim kurmak için bir SDK görevi görecek.
Eğitimi bitirdiğinizde veya ara verdiğinizde, istenmeyen maliyetleri önlemek için örneği DURDURmayı unutmayın.
Vertex AI’da AutoML Modellerini Eğitme ve Dağıtma
Şimdi, daha önce bahsettiğimiz gibi tüm ağır işleri bizim yerimize üstlenen ve verilen veri kümesi için eğitebildiği en iyi modeli döndüren AutoML ile bir model eğitelim. Bu, AutoML’den tam anlamıyla yararlanmak için, beslediğiniz veri kümesinin mümkün olduğunca yüksek kalitede olmasını sağlamanız gerektiği anlamına gelir. Bu nedenle, önceden biraz zaman ayırıp yeni özellikler geliştirmek ve gerekli ön işleme adımlarını uygulamak değerlidir.
AutoML veri kümesini dahili olarak ön işler; ancak veri kümenizdeki tüm sorunları çözemeyebilir.
Bununla birlikte, bu bölümde sadelik için ön işleme veya özellik mühendisliği olmadan yalnızca bir baz AutoML modeli eğiteceğiz.
Google Storage kovasından veri yükleme
İlk olarak, kovamızdaki CSV veri kümesini yükleyip biraz keşfetmek istiyoruz. Unutmayın, EDA önemli bir adımdır; daha fazlası için Python ile Keşifsel Veri Analizi kursumuza göz atın!
import pandas as pd
# Path to your CSV file in GCS bucket
gcs_path ="gs://vertex-tutorial-bucket-bex/dry_bean.csv"
beans = pd.read_csv(gcs_path)
beans.head()Altyapı:
Güzel haber şu ki pandas, GCS yollarından dosya indirebilir. Tek nokta, yukarıdaki kodun yalnızca Google Cloud kimlik bilgilerinizle zaten kimliği doğrulanmış olan Vertex AI workbench’lerinde çalışmasıdır.
Vertex AI’da pandas ile veriyi keşfetme
Makalenin ana konusundan sapmamak için veri kümesi üzerinde derin bir analiz yapmayacağız. Bu nedenle, birkaç özet istatistik ve grafik yazdırmakla yetineceğiz:
Şimdi de önemli göründükleri birkaç özelliğin çiftli dağılım grafiğini oluşturalım:
import seaborn as sns
sns.pairplot(
beans,vars=["Area","MajorAxisLength","MinorAxisLength","Eccentricity","roundness"],
hue="Class",);Altyapı:
Birkaç ilginç eğilim görüyoruz — özellikle Bombay (yeşil) baklaların fiziksel ölçümleri bakımından diğerlerinden belirgin şekilde ayrıldığını anlıyoruz.
Bir de korelasyon matrisi çizelim:
import matplotlib.pyplot as plt
correlation = beans.corr(numeric_only=True)# Create a square heatmap with center at 0
sns.heatmap(correlation, center=0, square=True, cmap="coolwarm", vmin=-1, vmax=1)
plt.show()Altyapı:
Neredeyse mükemmel korelasyona sahip birkaç özellik var ve bu, fiziksel ölçümlerle ilişkili oldukları için mantıklı. Bununla birlikte, hiç ya da çok az korelasyon gösteren bazı özellik çiftleri de mevcut.
Bu noktadan sonra, keşfi sürdürmeyi ve veri kümesi hakkında yanıtlanacak bazı sorular bulmayı size bırakıyorum.
Bir AutoML eğitim işi çalıştırma
Bir AutoML eğitim işine başlamak için önce onunla uyumlu bir veri kümesi nesnesine ihtiyacımız var:
model = job.run(
dataset=ds,
target_column="Class",
training_fraction_split=0.8,
validation_fraction_split=0.1,
test_fraction_split=0.1,
model_display_name="baseline-classification-model",
disable_early_stopping=False,)Altyapı:
Yöntemin parametreleri oldukça açık. Kodun tamamlanması biraz zaman alacaktır (hesaplama gücünüze bağlı olarak).
Pano üzerinde “MODEL DEVELOPMENT > TRAINING” sekmesine gidip iş adına tıklarsanız, canlı eğitim ilerlemesini görebilirsiniz. Aşağıdaki görsel eğitim sürecinin ön işleme aşamasında olduğunu gösteriyor:
Sonuçlara bakma
Eğitim tamamlandığında, eğitim sekmesine tekrar gidip model adına tıklayın. Bu kez, modelin yanında performans metrikleri listelenecek:
Gördüğünüz gibi, baz bir model için bile metrikler oldukça iyi; hepsi 0,90’ın üzerinde.
deploy yöntemi yalnızca tek bir argüman ister — çıkarım yapacak makine türü. Yukarıdaki satırı fiilen çalıştırmayacağım; çünkü model çevrimiçi kaldığı sürece dağıtım ek maliyet doğurur.
Bununla birlikte, çalıştırırsanız, deploy yöntemi istek gönderebileceğimiz bir Endpoint nesnesi döndürür:
Bir liste halinde örnekler kabul eden bir predict yöntemi vardır. Örnekler JSON biçiminde verilmelidir.
Modelleri dağıtmak için panoyu da kullanabilirsiniz. “MODEL REGISTRY” sekmesine giderseniz modeli orada listelenmiş görürsünüz. Adına tıklayın ve “DEPLOY & TEST” sekmesini seçin:
‘DEPLOY TO ENDPOINT’ düğmesine tıklamak, modelinizi dağıtacağınız makineyi yapılandırabileceğiniz ayrı bir sayfaya götürür. Ancak bunu yapmadan önce, dağıtım düğmesinin altındaki alanda modeli test edebilirsiniz:
Vertex AI’da Özel Modelleri Eğitme ve Dağıtma
Vertex AI’da özel modelleri dağıtmak, AutoML modellere göre daha zorludur ve daha maliyetlidir; çünkü Workbench ve dağıtım harcamalarınıza ek olarak bazı Docker konteynerleri de işin içine girer. Hazırsanız başlayalım!
Vertex AI’da özel eğitim için üst düzey bakış
Özel eğitim, özel bir model eğitim betiğiyle başlar. Bu betikte şunları yaptığınız sürece dilediğinizi yapabilirsiniz:
Veriyi GCS kovasından yükler
Bir ML çerçevesi (TF, PyTorch, Scikit-learn, XGBoost) ile model eğitir
İsteğe bağlı olarak modelin hiperparametrelerini ayarlar
Eğitilmiş veya ayarlanmış modeli yakalamak için GCS kovasına kaydeder.
Ardından bu eğitim betiği bir Docker konteynerine dönüştürülmeli ve Google Container Registry’ye itilmeli. Buradan Vertex AI Python SDK’sını veya paneli kullanarak özel modeli eğitebiliriz.
Eğitim kodu için dizin yapısı oluşturma
Önce, Google’ın bu kod laboratuvarında önerildiği gibi dizin yapısını oluşturalım. Workbench’inizde yeni bir başlatıcı açarak terminale geçin:
Sonra “dry-beans” adlı yeni bir dizin oluşturun ve içine geçin:
FROM gcr.io/deeplearning-platform-release/tf2-cpu.2-6
WORKDIR /# Copies the trainer code to the docker image.
COPY trainer /trainer
# Install XGBoost
RUN pip install xgboost==1.6.2# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python","-m","trainer.train"]Altyapı:
Bu Dockerfile, TensorFlow yüklü olarak Google Container Registry’nin resmi derin öğrenme imajını kullanır. Dosya, trainer dizinimizi kopyalar ve ardından XGBoost’u kurar. En sonunda Python betiğimizi çalıştırır.
Eğitim betiğini yazma
Betik, GCP kovamızdan Dry Beans veri kümesini yüklemeli, bunun üzerinde bir XGBoost sınıflandırıcısı eğitmeli ve modeli tekrar kovaya kaydetmelidir. Bu görevleri yerine getiren basit bir betiği bu GitHub gistinde yazdım (yeri tasarruf etmek için burada paylaşmıyorum).
Koddaki içeriği kopyalayıp train.py dosyasına yapıştırın. Ardından terminale dönüp, seçtiğiniz Workbench’te önceden kurulu olmadığı için XGBoost’u kurun ve betiği çalıştırın:
Betik hatasız çalışırsa, terminale şu iki değişkeni girerek devam edin:
$ PROJECT_ID='vertexai-tutorial-423010'# Replace with your PROJECT_ID from earlier
$ IMAGE_URI="gcr.io/$PROJECT_ID/dry-beans:v1"# This stays the sameAltyapı:
Bu değişkenler, konteyneri oluştururken kullanılacaktır; dolayısıyla şunu yapıyoruz:
Bu noktada işin büyük kısmı bitti. Şimdi panele geçip az önce ittiğimiz konteyneri kullanarak özel bir eğitim işi oluşturabiliriz. “MODEL REGISTRY” sekmesine gidin ve “CREATE”e tıklayın:
Eğitim yöntemi için “No managed dataset” ve “Custom training” seçeneklerini seçin. Sonraki panelde (Model details) modele bir ad verin — dry-beans-classifier.
Eğitim konteyneri panelinde:
Özel imaj için ittiğimiz konteyneri ve model çıktısı için cloud-ai-platform kovasını seçin. Ardından "Compute and pricing" paneline gelene kadar devam edin:
4 CPU’lu standart bir n1 makine seçin ve sonunda "START TRAINING"e tıklayın. Ardından panonuzun "TRAINING" sekmesine geçin.
Bu noktada iki durumdan birini göreceksiniz:
Eğitim başarısız durumu
Devam eden eğitim durumu
Benimki ilkiydi; nedenini anlamak için model adına tıklayalım:
Hata, izin verilen özel eğitim CPU sayısını aştığımı söylüyor. Konuyu daha derin inceledim ve bulduklarım epey moral bozucuydu.
Normalde GCP, herhangi bir hesaplama bölgesi için en az 20 CPU kotası verir; ancak profilimi kontrol ettiğimde kotamın yalnızca 1 olduğunu gördüm. Bu da Google’ın sunduğu tüm makinelerde en az iki CPU bulunduğundan hiçbir özel eğitim işi çalıştıramayacağım anlamına geliyordu.
Bu StackOverflow dizisindeki yanıtlardan yararlanarak kotamı artırmayı denedim; ancak işe yaramadılar. Aldığım mesaj, yeni Vertex AI kullanıcılarına yalnızca tek CPU biriminin izin verildiği yönündeydi. Kotamı artırmak istersem destek talebi göndermem gerekiyordu ki bu da ücretsiz değilmiş (ücretli destek sözleşmesi gerekiyor).
Siz de benim gibi şanssızsanız, SO dizisindeki yanıtları deneyin. Bazı kişiler için işe yaramış; ama sizde işe yaramazsa tek seçeneğiniz destekle iletişime geçmek.
Ancak şanslıysanız ve eğitiminiz biterse, modeli AutoML modelleri için özetlediğim adımlarla dağıtabileceksiniz.
Sonuç
Vertex AI, birçok özellikle devasa bir platform. Bu eğitimde buzdağının yalnızca ucuna dokunduk; ancak platformun en önemli yapı taşlarını ele aldık. Depolama kovaları, workbench’ler ve eğitim işlerini ustalaştığınızda, platformun geri kalanını keşfetmeye gayet hazır olursunuz.
Google Cloud hizmetleri hakkında daha fazla bilgi edinmek isterseniz, şu ilgili kaynaklara göz atın:
2 yılı aşkın deneyime sahip bir veri bilimi içerik üreticisiyim ve Medium’da en büyük takipçi kitlelerinden birine sahibim. Yapay zekâ ve makine öğrenimi üzerine, biraz da alaycı bir üslupla yazılmış, ayrıntılı makaleler kaleme almayı seviyorum; çünkü onları biraz daha az sıkıcı hale getirmek için bir şeyler yapmak gerekiyor. 130’un üzerinde makale ve bir de DataCamp kursu ürettim; bir diğeri de hazırlık aşamasında. İçeriklerim 5 milyondan fazla kişi tarafından görüldü; bunların 20 bini Medium ve LinkedIn’de takipçim oldu.
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.
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!
Çoğu kişi Google’ı arama motorlarıyla özdeşleştirse de şirketin veri bilimi sektöründe de köklü bir geçmişi var. Veriden en yüksek faydayı sağlamaya yönelik son teknoloji ürün ve çözümler sunmaya devam ediyor. Bu ürünlerden biri olan Vertex AI, kurumsal ölçekte makine öğrenimi sürecini basitleştirmek amacıyla 2021’de piyasaya sürüldü.
Bu eğitimde Google’ın Vertex AI platformunu kullanmaya nasıl başlayacağınızı ve ML yaşam döngüsünün geniş bir bölümünü nasıl kapsayacağınızı öğreneceğiz. Sonunda, bir sınıflandırma görevi için tahmin üretmek üzere istek gönderebileceğimiz şekilde dağıtılmış bir modelle ayrılacağız.
Vertex AI nedir?
Tipik bir makine öğrenimi yaşam döngüsü birçok aşamadan oluşur:
Bu aşamaların ve alt aşamaların her biri, onları koordine etmek için farklı araç setleri ve çeşitli uzman ekipler gerektirir.
Google Cloud’un Vertex AI’ı bu sürecin tamamını tek bir platformda sadeleştirir ve birleştirir.
Büyük ölçekli ML uygulamaları deneyimli uzmanlar gerektirse de Vertex AI her beceri düzeyinden kullanıcıyı güçlendirir:
Bu bölümde değinmediğimiz pek çok şey var; ancak bu eğitimi takip ederken çoğuyla bizzat çalışacaksınız.
Google Cloud Hizmetleri nedir?
Platformu keşfetmeye başlamadan önce, bağlı olduğu çatı yapıyı — Google Cloud hizmetlerini — anmak gerekir. Google Cloud Hizmetleri; depolama, ağ, veritabanları, analitik ve makine öğrenimi yetenekleri sunan geniş bir bulut bilişim çözümleri yelpazesini kapsar.
Bu hizmetler, makine öğrenimi iş akışınızı birleştirmek için Vertex AI ile senkronize şekilde çalışır. Vertex AI ile sık kullanılan hizmetlerin dökümü şöyledir:
Veri depolama ve yönetimi
Hesaplama kaynakları
Google Cloud hizmetleri, cloud.google.com’u ziyaret ettiğinizde Google hesabınız üzerinden her zaman kullanılabilir. Daha önce hiç kullanmadıysanız, ücretsiz deneme kazanmak için “Get started for free”yi tıklayın.
Aksi halde doğrudan console.cloud.google.com adresine giderek başlayabiliriz.
Vertex AI için Google Cloud Console’unuzu kurma
Bilgilendirme: Eğitimi adım adım takip etmek isterseniz, Vertex AI için 25-30 ABD doları harcama yapmaya hazırlıklı olun. En ucuz yapılandırmaları kullanacağız.
Google Cloud Console’a gittiğinizde büyük olasılıkla aşağıdaki karşılama sayfasına ulaşacaksınız:
Burada çalışma alanı adınız listelenir; benimki
ibexprogramming.com.İlk yapacağımız şey bir proje oluşturmak. Google Cloud projeleri, belirli bir görev için kaynakları yönetmek üzere kullanılan üst düzey organizasyon birimleridir. İşte nasıl oluşturulacağını gösteren bir GIF:
Proje oluşturulduktan sonra onu seçin; sayfanın üst çubuğu şunu göstermelidir:
Şimdi bir faturalandırma hesabı oluşturmanız gerekiyor; çünkü Vertex AI hizmetlerini etkinleştirmek için fatura bilgisi ister. Endişelenmeyin — ücretli kaynakları kullanana kadar ücretlendirilmezsiniz. Bu yüzden https://console.cloud.google.com/billing: adresine gidin.
Benimki gibi halihazırda bir hesabınız yoksa “Create account”a tıklayın ve yönergeleri izleyin. Bu faturalandırma hesabını bir sonraki bölümde projemize bağlayacağız.
Ardından https://console.cloud.google.com/ adresine dönüp sayfanın altındaki “View all products” düğmesine tıklayın:
Sonraki sayfa, projeniz için Google Cloud’un sunduğu tüm hizmetleri listeler. “Vertex AI” (Ctrl + F) diye aratıp menünüze kolay erişim için sabitleyin. Ardından, hizmetin kendisine tıklayın:
Bu işlem sizi Vertex AI panonuza yönlendirir. Vertex AI API’sini etkinleştirmenizi isteyen bir pencere açılabilir — “Enable”ı seçin. Pencere açılmazsa, aynı işlemi yapmak için “Enable all API permissions” düğmesine tıklayabilirsiniz.
Artık Vertex AI’a bir veri kümesi yüklemeye hazırız.
Vertex AI’da Veri Kümesi Yükleme
Vertex AI’a veri kümesi eklemenin çeşitli yolları vardır. Bu bölümde basitlik adına yerel bir CSV dosyası kullanacağız.
Örnek veri kümesini indirme
Bu makalede, UCI Makine Öğrenimi deposundaki Dry Bean veri kümesini kullanacağız. 13 binin üzerinde bakla örneği ve bunların 15 sayısal ölçümünü içerir.
Görev, bunları yedi bakla türüne sınıflandırmaktır: Seker, Barbunya, Bombay, Cali, Dermosan, Horoz ve Sira.
İndirdikten sonra, ZIP içindeki Excel dosyasını yerel dizininize kaydedin:
Ardından, bu dosyayı pandas ile okuyup CSV olarak kaydedebiliriz:
read_excelfonksiyonunun PIP ileopenpyxlkütüphanesini kurmanızı gerektirdiğini unutmayın.Harika, veri kümesini bir DataFrame olarak aldık. Şimdi CSV olarak kaydedelim:
Bulut depolama kovası oluşturma
Daha önce belirttiğimiz gibi, ham verimizi depolamak için bir Google Storage Bucket’a ihtiyacımız var. Ürünün panosuna gitmek için aşağıdaki GIF’i izleyin:
GIF, depolama hizmetlerini kullanmaya başlamak için bir faturalandırma hesabı bağlamamız gerektiğini ve bunu daha önce oluşturduğumuz hesapla yaptığımızı gösteriyor. Ardından, küresel olarak benzersiz bir ada sahip bir kova oluşturabileceksiniz:
Benzersiz bir ad bulduğunuzda, kova oluşturulana kadar “Continue”a tıklayın — tüm alanlar için varsayılan seçenekleri seçebilirsiniz.
Artık önceki bölümde kaydettiğimiz CSV dosyasını içe almaya hazırız.
Yerel bir CSV’yi Vertex AI’a içe aktarma
Şimdi Vertex AI panomuza geri dönelim ve Datasets sekmesine bakalım:
Boş olduğunu göreceksiniz; “+Create” düğmesine tıklayın:
Veri kümesine benzersiz bir ad verin ve tabular seçeneğini seçin:
Ardından platform size kaynak seçeneklerini gösterir. Yerel bir CSV dosyası yüklemeyi seçin ve Cloud Storage yolu için az önce oluşturduğunuz kovayı seçin:
Veri kümesi başarıyla yüklendiğinde, CSV dosyası hakkında temel meta verileri gösteren “Analyze” sekmesi karşınıza çıkacaktır. Ayrıca, bir AutoML eğitim işini başlatacak “TRAIN NEW MODEL” düğmesini de göreceksiniz.
Ancak, bu düğmeyi kullanmayacağız; çünkü tamamen ML’ye yeni başlayanlar için. Bunun yerine, AutoML ve özel kütüphaneleri çalıştırmak üzere bir Jupyterlab kodlama ortamı ve hesaplama kaynakları yapılandırmak için Vertex AI Workbench’i kullanacağız.
Vertex AI Workbench’te Jupyterlab ve Hesaplama Kaynaklarını Yapılandırma
Vertex AI birleşik bir platform olduğundan, workbench adı verilen geliştirme ortamları da sunar. Bir workbench oluşturmak için kendi sekmesine gidin ve aşağıdaki GIF’teki adımları izleyin:
Her workbench, önceden kurulu Jupyterlab 3 ile gelir. Dolayısıyla yalnızca bütçenize ve ihtiyaçlarınıza göre donanım seçeneklerini yapılandırmanız gerekir. Veri kümemiz oldukça küçük olduğu için yalnızca örnek olması amacıyla en zayıf örneği seçtim; saatlik maliyeti yaklaşık 0,12 ABD dolarıdır (Hesaplamaların hızlanması için daha fazla CPU çekirdeğine sahip bir makine seçmenizi öneririm).
Ayrıca boşta kalma kapatma süresini 10 dakikaya indirdim; böylece kapatmayı unutursam ortam otomatik olarak durur.
Workbench’in başlatılması biraz zaman alacaktır. Tamamlandığında “OPEN JUPYTERLAB” düğmesi görünür ve tıklayabiliriz:
Alışık olduğumuz Jupyterlab arayüzüne yönlendirileceğiz. Buradan yeni bir Python 3 not defteri oluşturup dilediğiniz gibi yeniden adlandırın. İlk hücrede Google Cloud hizmetleri SDK’sı
google-cloud-aiplatform’u kurun/yükseltin:Ardından, hesabınız altındaki projeleri
gcloud config listile listeleyebilirsiniz:gcloudvegsutiltüm workbench’lerde mevcut terminal araçlarıdır. Google Cloud hizmetlerinizi verimli biçimde yönetmenizi sağlarlar.Yazdırılan çıktıda yer alan aşağıdaki bilgileri Python değişkenleri olarak kaydedin:
BUCKET_URI’yi kendi kova adınıza göre değiştirmeyi unutmayın. Ardından aiplatform alt modülünü içe aktarın ve başlatın:aiplatform, Vertex AI özellikleriyle etkileşim kurmak için bir SDK görevi görecek.Eğitimi bitirdiğinizde veya ara verdiğinizde, istenmeyen maliyetleri önlemek için örneği DURDURmayı unutmayın.
Vertex AI’da AutoML Modellerini Eğitme ve Dağıtma
Şimdi, daha önce bahsettiğimiz gibi tüm ağır işleri bizim yerimize üstlenen ve verilen veri kümesi için eğitebildiği en iyi modeli döndüren AutoML ile bir model eğitelim. Bu, AutoML’den tam anlamıyla yararlanmak için, beslediğiniz veri kümesinin mümkün olduğunca yüksek kalitede olmasını sağlamanız gerektiği anlamına gelir. Bu nedenle, önceden biraz zaman ayırıp yeni özellikler geliştirmek ve gerekli ön işleme adımlarını uygulamak değerlidir.
AutoML veri kümesini dahili olarak ön işler; ancak veri kümenizdeki tüm sorunları çözemeyebilir.
Bununla birlikte, bu bölümde sadelik için ön işleme veya özellik mühendisliği olmadan yalnızca bir baz AutoML modeli eğiteceğiz.
Google Storage kovasından veri yükleme
İlk olarak, kovamızdaki CSV veri kümesini yükleyip biraz keşfetmek istiyoruz. Unutmayın, EDA önemli bir adımdır; daha fazlası için Python ile Keşifsel Veri Analizi kursumuza göz atın!
Güzel haber şu ki pandas, GCS yollarından dosya indirebilir. Tek nokta, yukarıdaki kodun yalnızca Google Cloud kimlik bilgilerinizle zaten kimliği doğrulanmış olan Vertex AI workbench’lerinde çalışmasıdır.
Vertex AI’da pandas ile veriyi keşfetme
Makalenin ana konusundan sapmamak için veri kümesi üzerinde derin bir analiz yapmayacağız. Bu nedenle, birkaç özet istatistik ve grafik yazdırmakla yetineceğiz:
Yani 15 sayısal özellik ve tek bir hedef sütun —
Classvar. Yalnızca ~13 bin kayıt ve hiç eksik değer yok. Bu, eğitimi epeyce basitleştirecek.Özellik adlarını daha sonra ihtiyacımız olabilir diye ayrı bir listeye kaydedelim:
Şimdi de önemli göründükleri birkaç özelliğin çiftli dağılım grafiğini oluşturalım:
Birkaç ilginç eğilim görüyoruz — özellikle Bombay (yeşil) baklaların fiziksel ölçümleri bakımından diğerlerinden belirgin şekilde ayrıldığını anlıyoruz.
Bir de korelasyon matrisi çizelim:
Neredeyse mükemmel korelasyona sahip birkaç özellik var ve bu, fiziksel ölçümlerle ilişkili oldukları için mantıklı. Bununla birlikte, hiç ya da çok az korelasyon gösteren bazı özellik çiftleri de mevcut.
Bu noktadan sonra, keşfi sürdürmeyi ve veri kümesi hakkında yanıtlanacak bazı sorular bulmayı size bırakıyorum.
Bir AutoML eğitim işi çalıştırma
Bir AutoML eğitim işine başlamak için önce onunla uyumlu bir veri kümesi nesnesine ihtiyacımız var:
TabularDataset.createyöntemini kullanarakdsolarak başlattık. Vertex AI kendi adını atar; bu adresource_nameniteliği üzerinden erişilebilir.Şimdi
ai.AutoMLTabularTrainingJobsınıfı ile işi başlatıyoruz. İki argüman ister:Sonra işin
runmetodunu çalıştırıyoruz:Yöntemin parametreleri oldukça açık. Kodun tamamlanması biraz zaman alacaktır (hesaplama gücünüze bağlı olarak).
Pano üzerinde “MODEL DEVELOPMENT > TRAINING” sekmesine gidip iş adına tıklarsanız, canlı eğitim ilerlemesini görebilirsiniz. Aşağıdaki görsel eğitim sürecinin ön işleme aşamasında olduğunu gösteriyor:
Sonuçlara bakma
Eğitim tamamlandığında, eğitim sekmesine tekrar gidip model adına tıklayın. Bu kez, modelin yanında performans metrikleri listelenecek:
Gördüğünüz gibi, baz bir model için bile metrikler oldukça iyi; hepsi 0,90’ın üzerinde.
Bir AutoML modelini dağıtma ve tahmin üretme
Artık bu
modeli tek satır kodla dağıtabiliriz:deployyöntemi yalnızca tek bir argüman ister — çıkarım yapacak makine türü. Yukarıdaki satırı fiilen çalıştırmayacağım; çünkü model çevrimiçi kaldığı sürece dağıtım ek maliyet doğurur.Bununla birlikte, çalıştırırsanız,
deployyöntemi istek gönderebileceğimiz birEndpointnesnesi döndürür:Bir liste halinde örnekler kabul eden bir
predictyöntemi vardır. Örnekler JSON biçiminde verilmelidir.Modelleri dağıtmak için panoyu da kullanabilirsiniz. “MODEL REGISTRY” sekmesine giderseniz modeli orada listelenmiş görürsünüz. Adına tıklayın ve “DEPLOY & TEST” sekmesini seçin:
‘DEPLOY TO ENDPOINT’ düğmesine tıklamak, modelinizi dağıtacağınız makineyi yapılandırabileceğiniz ayrı bir sayfaya götürür. Ancak bunu yapmadan önce, dağıtım düğmesinin altındaki alanda modeli test edebilirsiniz:
Vertex AI’da Özel Modelleri Eğitme ve Dağıtma
Vertex AI’da özel modelleri dağıtmak, AutoML modellere göre daha zorludur ve daha maliyetlidir; çünkü Workbench ve dağıtım harcamalarınıza ek olarak bazı Docker konteynerleri de işin içine girer. Hazırsanız başlayalım!
Vertex AI’da özel eğitim için üst düzey bakış
Özel eğitim, özel bir model eğitim betiğiyle başlar. Bu betikte şunları yaptığınız sürece dilediğinizi yapabilirsiniz:
Ardından bu eğitim betiği bir Docker konteynerine dönüştürülmeli ve Google Container Registry’ye itilmeli. Buradan Vertex AI Python SDK’sını veya paneli kullanarak özel modeli eğitebiliriz.
Eğitim kodu için dizin yapısı oluşturma
Önce, Google’ın bu kod laboratuvarında önerildiği gibi dizin yapısını oluşturalım. Workbench’inizde yeni bir başlatıcı açarak terminale geçin:
Sonra “dry-beans” adlı yeni bir dizin oluşturun ve içine geçin:
dry-beansiçindetraineradlı başka bir dizin ve içindetrain.pyadlı bir Python dosyası oluşturun:Dockerfile oluşturma
Sonraki adımda yeni bir Dockerfile oluşturun:
Dosyayı açıp aşağıdaki içeriği yapıştırın:
Bu Dockerfile, TensorFlow yüklü olarak Google Container Registry’nin resmi derin öğrenme imajını kullanır. Dosya,
trainerdizinimizi kopyalar ve ardından XGBoost’u kurar. En sonunda Python betiğimizi çalıştırır.Eğitim betiğini yazma
Betik, GCP kovamızdan Dry Beans veri kümesini yüklemeli, bunun üzerinde bir XGBoost sınıflandırıcısı eğitmeli ve modeli tekrar kovaya kaydetmelidir. Bu görevleri yerine getiren basit bir betiği bu GitHub gistinde yazdım (yeri tasarruf etmek için burada paylaşmıyorum).
Koddaki içeriği kopyalayıp
train.pydosyasına yapıştırın. Ardından terminale dönüp, seçtiğiniz Workbench’te önceden kurulu olmadığı için XGBoost’u kurun ve betiği çalıştırın:Docker imajı oluşturma
Betik hatasız çalışırsa, terminale şu iki değişkeni girerek devam edin:
Bu değişkenler, konteyneri oluştururken kullanılacaktır; dolayısıyla şunu yapıyoruz:
Oluşturma işlemi biraz zaman alacaktır. Tamamlandıktan sonra her şeyin düzgün çalıştığından emin olmak için konteyneri çalıştırın:
Yukarıdaki başarı iletilerini alırsanız, konteyner itilmeye hazır demektir:
Özel bir eğitim işi oluşturma
Bu noktada işin büyük kısmı bitti. Şimdi panele geçip az önce ittiğimiz konteyneri kullanarak özel bir eğitim işi oluşturabiliriz. “MODEL REGISTRY” sekmesine gidin ve “CREATE”e tıklayın:
Eğitim yöntemi için “No managed dataset” ve “Custom training” seçeneklerini seçin. Sonraki panelde (Model details) modele bir ad verin —
dry-beans-classifier.Eğitim konteyneri panelinde:
Özel imaj için ittiğimiz konteyneri ve model çıktısı için
cloud-ai-platformkovasını seçin. Ardından "Compute and pricing" paneline gelene kadar devam edin:4 CPU’lu standart bir n1 makine seçin ve sonunda "START TRAINING"e tıklayın. Ardından panonuzun "TRAINING" sekmesine geçin.
Bu noktada iki durumdan birini göreceksiniz:
Benimki ilkiydi; nedenini anlamak için model adına tıklayalım:
Hata, izin verilen özel eğitim CPU sayısını aştığımı söylüyor. Konuyu daha derin inceledim ve bulduklarım epey moral bozucuydu.
Normalde GCP, herhangi bir hesaplama bölgesi için en az 20 CPU kotası verir; ancak profilimi kontrol ettiğimde kotamın yalnızca 1 olduğunu gördüm. Bu da Google’ın sunduğu tüm makinelerde en az iki CPU bulunduğundan hiçbir özel eğitim işi çalıştıramayacağım anlamına geliyordu.
Bu StackOverflow dizisindeki yanıtlardan yararlanarak kotamı artırmayı denedim; ancak işe yaramadılar. Aldığım mesaj, yeni Vertex AI kullanıcılarına yalnızca tek CPU biriminin izin verildiği yönündeydi. Kotamı artırmak istersem destek talebi göndermem gerekiyordu ki bu da ücretsiz değilmiş (ücretli destek sözleşmesi gerekiyor).
Siz de benim gibi şanssızsanız, SO dizisindeki yanıtları deneyin. Bazı kişiler için işe yaramış; ama sizde işe yaramazsa tek seçeneğiniz destekle iletişime geçmek.
Ancak şanslıysanız ve eğitiminiz biterse, modeli AutoML modelleri için özetlediğim adımlarla dağıtabileceksiniz.
Sonuç
Vertex AI, birçok özellikle devasa bir platform. Bu eğitimde buzdağının yalnızca ucuna dokunduk; ancak platformun en önemli yapı taşlarını ele aldık. Depolama kovaları, workbench’ler ve eğitim işlerini ustalaştığınızda, platformun geri kalanını keşfetmeye gayet hazır olursunuz.
Google Cloud hizmetleri hakkında daha fazla bilgi edinmek isterseniz, şu ilgili kaynaklara göz atın: