Vertex AI: Tahmin için BigQuery Makine Öğrenimi Modeli'ni dışa aktarma ve dağıtma

1. Genel Bakış

Bu laboratuvarda, BigQuery Machine Learning ile bir model eğitecek, ardından bu modeli Vertex AI'a aktarıp dağıtacaksınız. Bu, Google Cloud'daki en yeni yapay zeka ürünüdür.

Öğrenecekleriniz

Öğrenecekleriniz:

  • BigQuery Machine Learning (BQML) ile model eğitme
  • BQML modelinizi Cloud Storage'a aktarma
  • Eğitilmiş BQML modelinizi Vertex AI'a dağıtma
  • Dağıtılmış modelinizle ilgili tahminler alma

Bu laboratuvarı Google Cloud'da çalıştırmanın toplam maliyeti yaklaşık 2 ABD dolarıdır.

2. Vertex AI'a giriş

Bu laboratuvarda, Google Cloud'da sunulan en yeni yapay zeka ürünü kullanılmaktadır. Vertex AI, Google Cloud'daki makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyimi için entegre eder. Daha önce, AutoML ile eğitilmiş modeller ve özel modeller ayrı hizmetler üzerinden erişilebiliyordu. Yeni teklif, diğer yeni ürünlerle birlikte bu iki ürünü tek bir API'de birleştirir. Mevcut projeleri de Vertex AI'a taşıyabilirsiniz. Geri bildiriminiz varsa lütfen destek sayfasına göz atın.

Vertex AI, uçtan uca makine öğrenimi iş akışlarını desteklemek için birçok farklı ürün içerir. Bu laboratuvarda, aşağıda vurgulanan ürünlere (Tahmin ve Not Defterleri) odaklanılacaktır.

Vertex ürününe genel bakış

3. Ortamınızı ayarlama

Bu codelab'i çalıştırmak için faturalandırmanın etkin olduğu bir Google Cloud Platform projesine ihtiyacınız vardır. Proje oluşturmak için buradaki talimatları uygulayın.

1. adım: Compute Engine API'yi etkinleştirin

Compute Engine'e gidin ve henüz etkinleştirilmemişse Etkinleştir'i seçin. Not defteri örneğinizi oluşturmak için bu bilgiye ihtiyacınız vardır.

2. adım: Vertex AI API'yi etkinleştirin

Cloud Console'unuzun Vertex AI bölümüne gidin ve Vertex AI API'yi etkinleştir'i tıklayın.

Vertex AI kontrol paneli

3. adım: Notebooks örneği oluşturun

Modelimizi dağıttıktan sonra tahmin almak için Notebooks'u kullanacağız. Cloud Console'unuzun Vertex AI bölümünde Not Defterleri'ni tıklayın:

Vertex AI menüsü

Buradan Yeni örnek'i seçin. Ardından, GPU'suz TensorFlow Enterprise 2.3 örnek türünü seçin:

TFE örneği

Varsayılan seçenekleri kullanıp Oluştur'u tıklayın. Örnek oluşturulduktan sonra Open JupyterLab'i (JupyterLab'i aç) seçin:

CAIP Notebook'u açma

4. BigQuery ML modelini eğitme

BigQuery ML, BigQuery'de depolanan verileri kullanarak özel makine öğrenimi modelleri eğitmenize olanak tanır. Modelleri eğitip tahminler alabilirsiniz. Tüm bu işlemler SQL ile yapılabilir. Bu laboratuvarda, kredi kartı ödemesinde temerrüde düşme olasılığını tahmin etmek için BigQuery'de herkese açık bir veri kümesi kullanacağız.

1. adım: Projenizde bir BigQuery veri kümesi oluşturun

BigQuery ML'de bir modeli eğitmek için projenizde bu modeli depolayacak bir veri kümesi oluşturmanız gerekir. Sol menü çubuğunda projenizi tıklayın ve Veri Kümesi Oluştur'u seçin:

BQ veri kümesi oluşturma

Veri kümesi kimliği alanına cc_default girin. Diğer alanları olduğu gibi bırakıp Veri kümesi oluştur'u tıklayın.

2. adım: CREATE MODEL sorgusu çalıştırın

BigQuery Sorgu düzenleyicisinde, kullanacağımız herkese açık veri kümesinde BigQuery ML modeli oluşturup eğitmek için aşağıdaki CREATE MODEL sorgusunu çalıştırın. your-project yerine Cloud projenizin adını yazdığınızdan emin olun:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

Bu işlem, yaklaşık bir dakika sürecek bir çalıştırma süresini belirten 0 ile 1 arasında bir sayısal değer çıkışı veren bir lojistik regresyon modeli oluşturur. İşlem tamamlandığında model, veri kümenizin altında görünür:

BQML modeli ayrıntıları

Eğitim ve değerlendirme metriklerine bakmak için modeli tıklayabilirsiniz.

5. BigQuery ML modelinizi dışa aktarma

Eğitilmiş bir BQML modeliyle tahmin almak için BQML SQL söz dizimini kullanabilir veya modeli başka bir yerde dağıtmak üzere dışa aktarabiliriz. Burada, modeli ölçeklenebilir şekilde sunmak ve tahminler almak için Vertex AI'a dağıtabilmek üzere modelimizi dışa aktaracağız.

1. adım: Modeliniz için Cloud Storage paketi oluşturun

Model ayrıntılarında Modeli Dışa Aktar'ı tıklayın:

BQML modelini dışa aktarma

Bu işlem, modelinizin öğelerinin dışa aktarılmasını istediğiniz Google Cloud Storage (GCS) konumunu girmenizi ister. Henüz bir GCS paketiniz yoksa endişelenmeyin. Şimdi bir tane oluşturacağız. Öncelikle Göz at'ı tıklayın:

GCS paketlerine göz atma

Ardından yeni bir paket oluşturmak için + simgesini tıklayın:

Yeni GCS paketi

Pakete benzersiz bir ad verin (Storage paketi adları genel olarak benzersiz olmalıdır). Devam'ı tıklayın. Sonraki adımda, Konum türü bölümünde Bölge'yi seçin ve açılır listeden bölgelerden birini belirleyin:

Paket konumu

Varsayılan depolama sınıfını kullanın ve erişim denetimi bölümünde Tek tip'in seçili olduğundan emin olun:

Tek tip erişim denetimi

Devam'ı tıklayın ve diğer seçenekler için varsayılan değerleri kullanın. Ardından Oluştur'u tıklayın.

2. adım: BQML modelini dışa aktarın

Yeni paketiniz oluşturulduktan sonra model-assets (veya istediğiniz herhangi bir şeyi) Ad alanına girip Seç'i tıklayın:

Model dışa aktarma yolu

Ardından Dışa aktar'ı tıklayın. Bu işlem, TensorFlow'un SavedModel biçimindeki modelinizi belirttiğiniz yeni oluşturulan GCS paketine aktarmak için BigQuery'de bir iş oluşturur. Bu işlemin dışa aktarılması yaklaşık bir dakika sürer.

Modeliniz dışa aktarılırken Cloud Console'unuzun Storage bölümüne gidin. İşiniz tamamlandığında, model öğelerinizin az önce oluşturduğunuz pakete model-assets alt dizini altında aktarıldığını görürsünüz:

Dışa aktarılan model öğeleri

6. Modeli Vertex AI'a aktarma

Bu adımda, modeli Vertex AI'da oluşturup içe aktarmak için model öğelerimizi dışa aktardığımız GCS depolama konumuna başvuracağız.

1. adım: Modeli içe aktarın

Cloud Console'unuzda Vertex AI Modeller bölümüne gidin. Buradan İçe aktar'ı seçin:

Modeli içe aktarma

İlk adımda modelinize predict_default adını verin. Paketinizi oluşturduğunuz bölgeyi (us-central1, europe-west4 veya asia-east1) seçin. Ardından Devam'ı tıklayın. Model ayarları'nda "Model yapılarını yeni bir önceden oluşturulmuş container'a aktar" seçeneğini işaretli tutun.

Model framework açılır listesinde TensorFlow'u seçin. Ardından, çerçeve sürümü olarak 2.3'ü seçin.

Model yapay nesne konumu alanında Göz at'ı tıklayın, yeni oluşturduğunuz GCS paketini tıklayın ve model-assets dizinini tıklayın:

Model öğeleri yolu

Ardından İçe aktar'ı tıklayın. Modelinizin içe aktarılması birkaç dakika sürer. Oluşturulduktan sonra Cloud Console'unuzun modeller bölümünde görebilirsiniz:

Modeller bölümü

7. Modeli bir uç noktaya dağıtma

Modelimizi yüklediğimize göre bir sonraki adım Vertex'te bir uç nokta oluşturmaktır. Vertex'teki bir Model kaynağıyla birden fazla uç nokta ilişkilendirilebilir ve trafiği uç noktalar arasında bölebilirsiniz.

1. adım: Uç nokta oluşturma

Model sayfanızda Dağıt ve test et sekmesine gidin ve Uç noktaya dağıt'ı tıklayın:

Dağıtma ve test etme

Uç noktanıza default_pred_v1 gibi bir ad verin, trafik bölme ayarlarını olduğu gibi bırakın ve ardından model dağıtımınız için bir makine türü seçin. Burada n1-highcpu-2 kullandık ancak istediğiniz makine türünü seçebilirsiniz.

Ardından Bitti'yi seçin ve Devam'ı tıklayın. Seçili konum ayarlarını olduğu gibi bırakıp Dağıt'ı tıklayın. Uç noktanızın dağıtılması birkaç dakika sürer. İşlem tamamlandığında yanında yeşil bir onay işareti görürsünüz:

Dağıtılan uç nokta

Yaklaşıyorsunuz. Artık dağıtılan modelinizle ilgili tahminler almaya hazırsınız.

8. Dağıtılmış modelimizde tahmin alma

Model tahminleri almanın birkaç yolu vardır:

  • Vertex AI kullanıcı arayüzü
  • Vertex AI API

API aracılığıyla nasıl tahmin alacağınızı burada açıklayacağız.

1. adım: Vertex AI API ile model tahminleri alın

Burada model tahminlerini nasıl alacağınızı göstermek için bu laboratuvarın başında oluşturduğunuz Vertex Notebook örneğini kullanacağız.

Ardından, oluşturduğunuz not defteri örneğini açın ve Başlatıcı'dan bir Python 3 not defteri açın:

Not defterini aç

Not defterinizde, default-pred.json adlı bir JSON dosyasına test örneği yazmak için bir hücrede aşağıdakileri çalıştırın. Bu örneği tahmin için modelimize gönderelim:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

Ardından, Vertex kullanıcı arayüzünde, az önce dağıttığınız uç nokta için Örnek İstek'i tıklayın:

Örnek istek

REST sekmesindeki 4. Adım'da yer alan kodu kopyalayıp not defterinize yapıştırın ve hücreyi çalıştırın:

Değişken isteğinde bulunma

Ardından, paketinizi ve modelinizi oluşturduğunuz bölge için bir değişken ekleyin. Aşağıdaki dizede your-region yerine kendi değerinizi girin:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

Son olarak, aşağıdaki kodu not defterinize kopyalayarak curl ile uç noktanıza bir tahmin isteği gönderin:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

Aşağıdakine benzer bir sonuç görmelisiniz (tam tahmin değerleri biraz farklılık gösterebilir):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

default_payment_next_month_probs içindeki değerler, her sınıfın olasılığını gösterir. Bu örnekte modelimiz, söz konusu kişinin bir sonraki ödemesini aksatmayacağı ihtimalinin% 81 olduğunu tahmin ediyor. .819 değeri, 0 sınıfıyla (varsayılan değil) eşleşiyor.

🎉 Tebrikler! 🎉

Öğrendikleriniz:

  • BQML'de model eğitme
  • BQML modelinizi Cloud Storage'a aktarma
  • Tahmin için BQML modelini Vertex AI'a aktarma
  • Vertex AI modeli oluşturma ve modeli bir uç noktaya dağıtma
  • Vertex Notebooks ve curl aracılığıyla dağıtılan uç noktanızda tahminler alma

Vertex AI'ın farklı bölümleri hakkında daha fazla bilgi edinmek için belgelere göz atın.

9. Temizleme

Bu laboratuvarda oluşturduğunuz not defterini kullanmaya devam etmek istiyorsanız kullanmadığınız zamanlarda kapatmanız önerilir. Cloud Console'unuzdaki Notebooks kullanıcı arayüzünde not defterini ve ardından Durdur'u seçin:

Örneği durdur

Not defterini tamamen silmek isterseniz sağ üstteki Sil düğmesini tıklamanız yeterlidir.

Dağıttığınız uç noktayı silmek için Vertex AI konsolunuzun Uç Noktalar bölümüne gidin ve silme simgesini tıklayın:

Uç noktayı silin

Cloud Console'unuzdaki gezinme menüsünü kullanarak Storage paketini silmek için Storage'a gidin, paketinizi seçin ve Sil'i tıklayın:

Depolama alanını silme