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

1. Genel Bakış

Bu laboratuvarda, BigQuery Makine Öğrenimi ile bir model eğitecek ve ardından bu modeli Vertex AI'a aktarıp dağıtacaksınız. Bu, Google Cloud'daki en yeni AI ürün teklifidir.

Öğrenecekleriniz

Öğrenecekleriniz:

  • BigQuery Makine Öğrenimi (BQML) ile model eğitme
  • BQML modelinizi Cloud Storage'a aktarma
  • Eğitilen BQML'nizi Vertex AI'a dağıtma
  • Dağıtılmış modeliniz hakkında tahmin alın

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'daki en yeni AI ürün teklifi kullanılmaktadır. Vertex AI, Google Cloud'daki makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyimiyle entegre eder. Önceden, AutoML ve özel modellerle eğitilen modellere ayrı hizmetler üzerinden erişilebiliyordu. Yeni teklif, her ikisi de tek bir API'de ve diğer yeni ürünlerle birleştirilir. Dilerseniz mevcut projeleri Vertex AI'a taşıyabilirsiniz. Geri bildiriminiz varsa lütfen destek sayfasını inceleyin.

Vertex AI, uçtan uca makine öğrenimi iş akışlarını destekleyen birçok farklı ürün içerir. Bu laboratuvar, aşağıda vurgulanan ürünlere odaklanacaktır: Tahmin ve Not defterleri.

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 var. Proje oluşturmak için buradaki talimatları uygulayın.

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

Compute Engine'e gidin ve zaten etkinleştirilmemişse Etkinleştir'i seçin. Not defteri örneğinizi oluşturmak için buna ihtiyacınız olacaktır.

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

Cloud Console'un Vertex AI bölümüne gidip Enable Vertex AI API'yi (Vertex AI API'yi etkinleştir) tıklayın.

Vertex AI kontrol paneli

3. Adım: Not defterleri örneği oluşturun

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

Vertex AI menüsü

Burada, 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ın ve ardından Oluştur'u tıklayın. Örnek oluşturulduktan sonra JupyterLab'i aç'ı seçin:

CAIP not defterini aç

4. BigQuery ML modelini eğitme

BigQuery ML, BigQuery'de depolanan verileri kullanarak özel makine öğrenimi modellerini eğitmenize olanak tanır. SQL'de modelleri eğitebilir ve modellerden tahmin alabilirsiniz. Bu laboratuvarda, kredi kartı ödemelerinin varsayılan olarak yapılma 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 model eğitmek için projenizde bu modeli depolayacak bir veri kümesi oluşturmanız gerekir. Soldaki menü çubuğunda projenizi tıklayın, ardından Veri Kümesi Oluştur'u seçin:

BQ veri kümesi oluşturun

Veri Kümesi Kimliği alanına cc_default yazın. Diğer alanları olduğu gibi bırakın ve Veri kümesi oluştur'u tıklayın.

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

Kullanacağımız herkese açık veri kümesinde BigQuery ML modeli oluşturmak ve eğitmek için BigQuery Sorgu düzenleyici'de aşağıdaki CREATE MODEL sorgusunu çalıştırın. your-project kısmını Cloud projenizin adıyla değiştirdiğinizden 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, 0 ile 1 arasında sayısal bir değer üreten bir mantıksal regresyon modeli oluşturur. Bu model, çalıştırılmanın yaklaşık bir dakika süreceğini gösterir. İşlem tamamlandığında modeli veri kümenizin altında görürsünüz:

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 yere dağıtmak için dışa aktarabiliriz. Burada modelimizi dışa aktaracağız. Böylece, modeli Vertex AI'a dağıtarak modeli ölçeklenebilir bir şekilde sunabilir ve tahminler alabiliriz.

1. Adım: Modeliniz için bir 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 GCS paketiniz yoksa endişelenmeyin. Bir tane oluşturmak üzereyiz. İlk olarak 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 (Depolama paketi adlarının küresel olarak benzersiz olması gerekir). Devam'ı tıklayın. Sonraki adımda, Konum türü'nün altında Bölge'yi ve açılır listeden herhangi bir bölgeyi seçin:

Paket konumu

Varsayılan depolama sınıfını kullanın ve erişim denetimi altında 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ılanları kullanın. Ardından Oluştur'u tıklayın.

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

Yeni paketiniz oluşturulduğunda, Ad alanına model-assets değerini (veya istediğiniz bir şeyi) girin ve Seç'i tıklayın:

Model dışa aktarma yolu

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

Modeliniz dışa aktarılırken Cloud Console'un Depolama bölümüne gidin. İşiniz tamamlandığında model öğelerinizin az önce oluşturduğunuz pakete aktarıldığını bir model-assets alt dizininde göreceksiniz:

Dışa aktarılan model öğeleri

6. Modeli Vertex AI'a aktarma

Bu adımda, modeli oluşturmak ve Vertex AI'a aktarmak için model öğelerimizi dışa aktardığımız GCS depolama konumunu referans alacağız.

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

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

Modeli içe aktarın

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

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

Model yapı konumu alanında Browse'u (Göz at) tıklayın, az önce oluşturduğunuz GCS paketini 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. Modelinizi oluşturduktan sonra Cloud konsolunuzun 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ğı, kendisiyle ilişkilendirilmiş birden fazla uç noktaya sahip olabilir ve trafiği uç noktalar arasında bölebilirsiniz.

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

Model sayfanızda Dağıtma ve test etme 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, trafiği bölme ayarlarını olduğu gibi bırakın ve model dağıtımınız için 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ın ve 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ılmış modelinizde tahmin almaya hazırsınız.

8. Dağıtılmış modelimiz hakkında tahmin alma

Model tahminleri almak için birkaç seçenek vardır:

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

Burada, API aracılığıyla nasıl tahmin alabileceğinizi göstereceğiz.

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

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

Daha sonra, oluşturduğunuz not defteri örneğini açın ve Başlatıcı'dan bir Python 3 not defterini 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ğıdakini çalıştırın. Tahmin için modelimize şu örneği göndereceğiz:

%%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, yeni dağıttığınız uç nokta için Örnek İstek'i tıklayın:

Örnek istek

REST sekmesindeki 4. adımdaki kodu not defterinize kopyalayın ve hücreyi çalıştırın:

İstek değişkenleri

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

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ğinde bulunun:

!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örürsünüz (tam tahmin değerleri biraz farklılık gösterir):

{
  "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 alanındaki değerler, her bir sınıf için olasılığı gösterir. Bu örnekte, modelimiz bu kişinin bir sonraki ödemesinde varsayılan olarak yapılmama olasılığının% 81 olduğunu tahmin etmektedir. .819 değeri, 0 sınıfına karşılık gelir (varsayılan değildir).

🎉 Tebrikler! 🎉

Şu konuları öğrendiniz:

  • 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 tahmin alın

Vertex AI'ın farklı bölümleri hakkında daha fazla bilgi edinmek için belgeleri inceleyin.

9. Temizleme

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

Örneği durdur

Not defterini tamamen silmek isterseniz sağ üstte bulunan 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 gidip sil simgesini tıklayın:

Uç noktayı silin

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

Depolama alanını sil