Ana içeriğe geç

Vertex AI Eğitimi: Yeni Başlayanlar İçin Kapsamlı Rehber

Vertex AI’ı kurmanın ve makine öğrenimi iş akışlarını yürütmenin temellerini öğrenin.
· 14 dk. oku

Yapay Zeka ile Keşfedin

Ç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?

Google Cloud Hizmetleri ana sayfası

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.

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:

Vertex AI için Google Cloud Console

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:

Google Cloud Console’da yeni proje oluşturmayı gösteren bir GIF

Proje oluşturulduktan sonra onu seçin; sayfanın üst çubuğu şunu göstermelidir:

Google Cloud Console üst çubuğu

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

Google Cloud Console’da faturalandırma hesabı ekran görüntüsü

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:

Google Cloud Console’dan başka bir ekran görüntüsü

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:

Tüm Google Cloud ürünlerinin listesi

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:

from pathlib import Path

cwd = Path.cwd()
data_path = cwd / "data" / "Dry_Bean_Dataset.xlsx"

Ardından, bu dosyayı pandas ile okuyup CSV olarak kaydedebiliriz:

import pandas as pd

beans = pd.read_excel(data_path)

beans.shape
(13611, 17)

read_excel fonksiyonunun PIP ile openpyxl kütüphanesini kurmanızı gerektirdiğini unutmayın.

Harika, veri kümesini bir DataFrame olarak aldık. Şimdi CSV olarak kaydedelim:

beans.to_csv(cwd / "data" / "dry_bean.csv", index=False)

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:

Bir faturalandırma hesabını Google Cloud projesine bağlamayı gösteren GIF

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:

Google Cloud depolama kovası oluşturmayı gösteren GIF

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:

Vertex AI panosunda veri kümeleri sekmesine geçmeyi gösteren GIF

Boş olduğunu göreceksiniz; “+Create” düğmesine tıklayın:

Vertex AI veri kümeleri sekmesi ekran görüntüsü

Veri kümesine benzersiz bir ad verin ve tabular seçeneğini seçin:

Vertex AI’da yeni veri kümesi oluşturmayı gösteren GIF

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:

Yerel bir CSV’nin mevcut bir bulut depolama kovasına nasıl ekleneceğini gösteren GIF

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:

Vertex AI Workbench oluşturmayı gösteren GIF

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:

Vertex AI workbench içinde jupyterlab arayüzü ekran görüntüsü

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:

!pip3 install --upgrade --quiet google-cloud-aiplatform

Ardından, hesabınız altındaki projeleri gcloud config list ile listeleyebilirsiniz:

!gcloud config list
[compute]
region = us-central1
[core]
account = # HIDDEN #
disable_usage_reporting = True
project = vertexai-tutorial-423010
[dataproc]
region = us-central1

Your active configuration is: [default]

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'

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)

aiplatform, Vertex AI özellikleriyle etkileşim kurmak için bir SDK görevi görecek.

Kullanılabilir Vertex AI workbench listesini gösteren görsel.

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()

UCI Dry Beans veri kümesinin ilk beş satırı.

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:

beans.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 13611 entries, 0 to 13610
Data columns (total 17 columns):
#   Column           Non-Null Count  Dtype 
---  ------           --------------  ----- 
0   Area             13611 non-null  int64 
1   Perimeter        13611 non-null  float64
2   MajorAxisLength  13611 non-null  float64
3   MinorAxisLength  13611 non-null  float64
4   AspectRation     13611 non-null  float64
5   Eccentricity     13611 non-null  float64
6   ConvexArea       13611 non-null  int64 
7   EquivDiameter    13611 non-null  float64
8   Extent           13611 non-null  float64
9   Solidity         13611 non-null  float64
10  roundness        13611 non-null  float64
11  Compactness      13611 non-null  float64
12  ShapeFactor1     13611 non-null  float64
13  ShapeFactor2     13611 non-null  float64
14  ShapeFactor3     13611 non-null  float64
15  ShapeFactor4     13611 non-null  float64
16  Class            13611 non-null  object
dtypes: float64(14), int64(2), object(1)
memory usage: 1.8+ MB

Yani 15 sayısal özellik ve tek bir hedef sütun — Class var. 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:

feature_names = beans.columns.tolist()

Ş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",
);

Dry Beans veri kümesindeki bazı özelliklerin pairplot’u.

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()

Dry Beans veri kümesinin sayısal özellikleri için korelasyon matrisi

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:

ds = ai.TabularDataset.create(
   display_name="dry_bean_dataset", gcs_source=gcs_path
)
TabularDataset created. 
type(ds)
google.cloud.aiplatform.datasets.tabular_dataset.TabularDataset
ds.resource_name
'projects/10783853768/locations/us-central1/datasets/4978116960081412096'

TabularDataset.create yöntemini kullanarak ds olarak başlattık. Vertex AI kendi adını atar; bu ad resource_name niteliği üzerinden erişilebilir.

Şimdi ai.AutoMLTabularTrainingJob sınıfı ile işi başlatıyoruz. İki argüman ister:

  • İş için bir görünen ad
  • Görevin amacı — bu durumda sınıflandırma.
job = ai.AutoMLTabularTrainingJob(
   display_name="dry-bean-classification",
   optimization_prediction_type="classification",
)

Sonra işin run metodunu çalıştırıyoruz:

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,
)

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:

Vertex AI’da devam eden bir eğitim işi

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:

Vertex AI’da eğitilmiş bir modelin metriklerini gösteren GIF

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:

endpoint = model.deploy(machine_type="n1-standard-4")

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:

prediction = endpoint.predict(
   [
       {
           "Area": "30099",
           "Perimeter": "638.8209999999999",
           "MajorAxisLength": "237.14191130827916",
           "MinorAxisLength": "162.3034300714102",
           "AspectRation": "1.4611022774068396",
           "Eccentricity": "0.7290928631259719",
           "ConvexArea": "30477",
           "EquivDiameter": "195.76321681302556",
           "Extent": "0.8036043251902283",
           "Solidity": "0.9875972044492568",
           "roundness": "0.9268374259664279",
           "Compactness": "0.8255108332939839",
           "ShapeFactor1": "0.007878730566074592",
           "ShapeFactor2": "0.002256976927384019",
           "ShapeFactor3": "0.6814681358857279",
           "ShapeFactor4": "0.9956946453228307",
       }
   ]
)

print(prediction)

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:

Vertex AI’de model kayıt defterinin DEPLOY ve TEST sekmesi

‘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 arayüzünü kullanarak eğitilmiş bir modeli test etmeyi gösteren GIF

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:

Workbench’te Jupyterlab’de terminale geçişi gösteren GIF

Sonra “dry-beans” adlı yeni bir dizin oluşturun ve içine geçin:

$ mkdir dry-beans
$ cd dry-beans/

dry-beans içinde trainer adlı başka bir dizin ve içinde train.py adlı bir Python dosyası oluşturun:

$ mkdir trainer
$ touch trainer/train.py

Dockerfile oluşturma

Sonraki adımda yeni bir Dockerfile oluşturun:

$ touch Dockerfile

Dosyayı açıp aşağıdaki içeriği yapıştırın:

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"]

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:

$ pip install xgboost==1.6.2
$ python trainer/train.py

Docker imajı oluşturma

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 same

Bu değişkenler, konteyneri oluştururken kullanılacaktır; dolayısıyla şunu yapıyoruz:

$ docker build ./ -t $IMAGE_URI

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:

$ docker run $IMAGE_URI
Model trained successfully!
Model uploaded successfully!

Yukarıdaki başarı iletilerini alırsanız, konteyner itilmeye hazır demektir:

$ docker push $IMAGE_URI

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

Vertex AI’da yeni özel eğitim işi oluşturma

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:

Vertex AI’da özel eğitim işi için konteyner imajı seçimi

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

Vertex AI’da özel eğitim işi formunun Compute and pricing paneli

4 CPU’lu standart bir n1 makine seçin ve sonunda "START TRAINING"e tıklayın. Ardından panonuzun "TRAINING" sekmesine geçin.

Vertex AI panosunun training sekmesi ekran görüntüsü.

Bu noktada iki durumdan birini göreceksiniz:

  1. Eğitim başarısız durumu
  2. Devam eden eğitim durumu

Benimki ilkiydi; nedenini anlamak için model adına tıklayalım:

Vertex AI’da özel eğitim işinden hata iletisi

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:

Bexruz (Bex) Tuychiev

Yazar

Bexruz (Bex) Tuychiev

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. 

Konular

İlgili