Vertex AI AutoML ile Film Derecelendirmesi tahmini

1. Giriş

Bu codelab'de, Vertex AI AutoML'i kullanarak bir film puanı tahmini modeli oluşturacağız ve dağıtılan model uç noktasını Java Cloud Functions'dan tetikleyeceğiz. Model, BigQuery'de depolanan verilerle eğitilir ve Vertex AI'ya kaydedilir. Hizmet listesi iki bölümden oluşabilir:

  1. Makine öğrenimi modeli oluşturma ve dağıtma
  2. ML API'yi kullanarak tahmin yürütmek için tetikleyici

ML Modeli Oluşturma:

  1. CSV'den BigQuery'ye aktarılan veriler
  2. AutoML modeli oluşturmak için Vertex AI'a entegre edilmiş BigQuery verileri
  3. Uç nokta API'si oluşturmak için Vertex AI Model Registry'ye dağıtılan model

ML API'yi kullanarak tahmin etmek için tetikleyici:

  1. Kullanıcı arayüzünden istek olarak film ayrıntılarını alan ve tahmin edilen film PUANI'nı döndüren, dağıtılan AutoML modelinin uç noktasının çağrılmasını tetikleyen Java Cloud Functions

Aşağıda, uygulamanın üst düzey mimarisine genel bir bakış verilmiştir:

5ae50607c0f2db20.png

Yukarıdaki mimarinin uygulanması bu codelab'in kapsamı dışındadır ancak isterseniz istemci uygulamasını da geliştirebilirsiniz. Bunun için lütfen blog'a bakın.

Uygulama adımlarına göz atalım.

Ne oluşturacaksınız?

Bir

  • Tablo ve model bileşenlerini içerecek bir BigQuery veri kümesi
  • Vertex AI AutoML modeli (oluşturma ve dağıtma)
  • ML API'yi kullanarak tahminde bulunmak için Java Cloud Functions tetikleyicisi

2. Şartlar

  • Chrome veya Firefox gibi bir tarayıcı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi

Gerekli ön koşullar aşağıda verilmiştir:

Projenizi oluşturun

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projenizde faturalandırmanın etkinleştirildiğinden emin olun. Projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin.
  3. API'yi etkinleştirmek için BigQuery'ye gidin. BigQuery web kullanıcı arayüzünü doğrudan açmak için tarayıcınızda şu URL'yi de girebilirsiniz: https://console.cloud.google.com/bigquery

Cloud Shell'i etkinleştirme

  1. Google Cloud'da çalışan ve bq ile önceden yüklenmiş bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız: Cloud Console'da sağ üst köşedeki Cloud Shell'i etkinleştir'i tıklayın: 6757b2fb50ddcc2d.png
  2. Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize göre ayarlandığını görürsünüz. Kimliğinizi doğrulamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list
  1. gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın
gcloud config list project
  1. Projeniz ayarlanmadıysa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <PROJECT_ID>

gcloud komutları ve kullanımı için belgelere bakın.

3. Eğitim verilerini hazırlama

Bu, verilerle ilgili tüm projeler, ürünler ve uygulamalarda önemli bir adımdır. Optimum bir veri kümesi hazırlamak ve bunu makine öğrenimi projenize hazır hale getirmek için teknolojinin yanı sıra çok fazla alan uzmanlığı gerektirir. Bu kod laboratuvarının amacı doğrultusunda, verilerin önceden hazırlandığını varsayacağız ve önceden işlenmiş bu veri dosyasını kullanacağız.

4. Veri kümesini oluşturma ve yükleme

BigQuery veri kümesi, tablolardan oluşan bir koleksiyondur. Bir veri kümesindeki tüm tablolar aynı veri konumunda depolanır. Bir veri kümesine ve tablolarına erişimi sınırlamak için özel erişim kontrolleri de ekleyebilirsiniz.

  1. Cloud Shell'de, "movies" adlı bir veri kümesi oluşturmak için bq mk komutunu kullanın.
bq mk --location=<<LOCATION>> movies

Konum'u bir bölgeye (asia-south1) ayarlayın. Bu bölgeyi VERTEX AI adımı için de ayarlamayı unutmayın (her iki örnek de aynı bölgede olmalıdır).

  1. Veri dosyasının (.csv) hazır olduğundan emin olun. Depoyu klonlamak ve projeye gitmek için Cloud Shell'de aşağıdaki komutları yürütün:
git clone <<repository link>>

cd movie-score
  1. CSV dosyanızı bir BigQuery tablosuna yüklemek için bq load komutunu kullanın (lütfen doğrudan BigQuery kullanıcı arayüzünden de yükleyebileceğinizi unutmayın):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
  1. Sorgu için aşağıdaki 3 yöntemden birini kullanın:

BigQuery ile üç şekilde etkileşim kurabiliriz. Bunlardan ikisini deneyeceğiz: a. BigQuery web kullanıcı arayüzü b. bq komutu c. API

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

Sorguları çalıştırmak için BigQuery Web SQL Workspace'i kullandım. SQL çalışma alanı şu şekilde görünür:

109a0b2c7155e9b3.png

bq komutunu kullanarak:

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

5. Vertex AI AutoML'de BigQuery verilerini kullanma

Vertex AI ile doğrudan bir AutoML modeli oluşturmak için BigQuery'deki verilerinizi kullanın. AutoML'i BigQuery'den de gerçekleştirebileceğimizi, modeli VertexAI'ya kaydedebileceğimizi ve uç noktayı gösterebileceğimizi unutmayın. BigQuery AutoML dokümanlarına bakın. Ancak bu örnekte, modelimizi oluşturmak için Vertex AI AutoML'i kullanacağız.

Vertex AI veri kümesi oluşturma

Google Cloud Console'dan Vertex AI'a gidin, henüz etkinleştirmediyseniz Vertex AI API'yi etkinleştirin, verileri genişletip Veri kümeleri'ni seçin, Veri kümesi oluştur'u tıklayın, TABLO veri türünü ve "Regresyon / sınıflandırma" seçeneğini belirleyin ve Oluştur'u tıklayın:

4104c75c34cbd2d9.png

Veri Kaynağı Seçme

Bir sonraki sayfada bir veri kaynağı seçin. "BigQuery'den tablo veya görünüm seçme" seçeneğini belirleyin ve BigQuery yolu GÖZ AT alanında BigQuery'deki tabloyu seçin. Devam'ı tıklayın.

Hatırlatma: BigQuery tablosunun Vertex AI'da görünmesi için BigQuery örneği ve Vertex AI veri kümelerinin aynı bölgeye sahip olması gerekir.

b787ef18dbca4cff.png

Kaynak tablonuzu/görünümünüzü seçerken, göz atma listesinden radyo düğmesini tıklayarak aşağıdaki adımlara devam etmeyi unutmayın. Tablonun/görünümün adını yanlışlıkla tıklarsanız Dataplex'e yönlendirilirsiniz. Böyle bir durumda Vertex AI'a geri dönmeniz yeterlidir.

Modeli eğitme

  1. Veri kümesi oluşturulduktan sonra, yeni bir model eğitme seçeneğini içeren Analiz sayfasını görürsünüz. Aşağıdakileri tıklayın:

bf095263d57106de.png

  1. Hedefi Sınıflandırma olarak bırakın ve ilk sayfada AutoML seçeneğini belirleyip devam'ı tıklayın: e50597bc3f29894c.png
  2. Modelinize bir ad verin ve gösterilen açılır listeden Hedef sütun adı olarak "Puan"ı seçin ve Devam'ı tıklayın.
  3. Ayrıca, "Test veri kümesini BigQuery'ye aktar" seçeneğini işaretleyebilirsiniz. Bu seçenek, ek bir entegrasyon katmanı olmadan veya verileri hizmetler arasında taşımak zorunda kalmadan test kümesini veritabanında sonuçlarla birlikte verimli bir şekilde görmenizi kolaylaştırır.
  4. Sonraki sayfada, ihtiyacınız olan tüm gelişmiş eğitim seçeneklerini ve modeli eğitmek için ayarlamak istediğiniz saatleri seçebilirsiniz. Eğitim için kullanmak istediğiniz düğüm saati sayısını artırmadan önce fiyatlandırmaya dikkat etmeniz gerektiğini lütfen unutmayın.

Yeni modelinizi eğitmeye başlamak için Eğitimi Başlat'ı tıklayın.

e72b004a17849bd.png

Modeli Değerlendirme, Dağıtma ve Test Etme

Eğitim tamamlandıktan sonra Eğitim'i (sol taraftaki menüde Model Geliştirme başlığı altında) tıklayabilir ve eğitiminizi Eğitim Araçları bölümünde görebilirsiniz. Model Registry sayfasına gitmek için bu seçeneği tıklayın. Şunları yapabilirsiniz:

  1. Eğitim sonuçlarını görüntüleme ve değerlendirme 4767b4bbd7cf93fa.png
  2. Modeli API uç noktanızla dağıtma ve test etme

Modelinizi dağıttıktan sonra, istek göndermek ve yanıtta model tahmini sonuçlarını almak için uygulamanızda kullanılabilecek bir API uç noktası oluşturulur.

95fb4495618174f0.png

Bu bölümden geçmeden önce, dağıtılan modelin uç nokta kimliğini, konumunu ve Vertex AI uç nokta bölümünüzdeki diğer ayrıntıları not ettiğinizden emin olun.

6. ML çağrısını tetiklemek için Java Cloud Functions

ML dağıtım adımından uç noktayı ve diğer ayrıntıları nasıl elde ettiğimizi hatırlıyor musunuz? Burada bu yöntemi kullanacağız. Java Cloud Functions kullanıyoruz. Bu nedenle, bağımlılıklarla ilgilenmek için pom.xml dosyasını kullanacağız. Vertex AI AutoML uç noktası API'sini kullanmak için google-cloud-aiplatform kitaplığını kullanırız.

  1. Google Cloud Console'da Cloud Functions'i arayın ve "İşlev Oluştur"u tıklayın.
  2. Ortam, İşlev adı, Bölge, Tetikleyici (bu durumda HTTPS), Seçtiğiniz Kimlik Doğrulama gibi yapılandırma ayrıntılarını girin, "HTTPS'yi zorunlu kıl"ı etkinleştirin ve sonraki/kaydet'i tıklayın.

a68272022df062f2.png

  1. Sonraki sayfada Çalışma Zamanı (Java 11), Kaynak Kodu (Satır içi veya yükleme)'yi seçin ve düzenlemeye başlayın.

13df616369ca5951.png

  1. java ve pom.xml dosyalarını depodan kopyalayıp satır içi düzenleyicide ilgili dosyalara yapıştırın. Yerel düzenleyicinizi kullanıyorsanız (önerilir) kaynağı depodan klonlayın.
  2. Bu örnekteki .java kaynak dosyasında proje kimliğini, uç nokta kimliğini, konumu ve uç noktayı değiştirin. Ancak kimlik bilgilerini depolamak için en iyi uygulamanın Gizli Yönetici'yi kullanmak olduğunu unutmayın.
  3. Bu codelab'in kapsamı için kopyalanan kaynak kodunuzdaki .java sınıfındaki MongoDB bölümlerini yoruma alın.

Tüm değişiklikler tamamlandıktan sonra işlevi dağıtın. Bu Cloud Functions işlevine istek göndermek ve yanıt olarak film puanını almak için istemci uygulamanızda kullanılabilecek uç nokta URL'sini görürsünüz.

7. Temizleme

Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:

  1. Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
  2. Proje listesinde, silmek istediğiniz projeyi seçin ve ardından Sil'i tıklayın.
  3. İletişim kutusuna proje kimliğini yazın ve ardından projeyi silmek için Kapat'ı tıklayın.

8. Tebrikler

Tebrikler! Vertex AI AutoML'de bir Film Puanı Tahmini Modeli oluşturdunuz ve dağıttınız, ardından dağıtılan modeli Cloud Functions'dan tetiklediniz.