1. Giriş
Bu codelab'de, Vertex AI AutoML'i kullanarak bir film puanı tahmini modeli oluşturacak ve dağıtılan model uç noktasının Java Cloud Functions'tan tetiklenmesini sağlayacağız. Model, BigQuery'de depolanan ve Vertex AI'da kaydedilen verilerle eğitilir. Hizmet listesi iki bölümden oluşabilir:
- Makine öğrenimi modeli oluşturma ve dağıtma
- ML API'yi kullanarak tahmin yürütmeyi tetikleme
Makine öğrenimi modeli oluşturma:
- CSV'den BigQuery'ye aktarılan veriler
- AutoML model oluşturma için Vertex AI'ye entegre edilmiş BigQuery verileri
- Uç nokta API'si oluşturmak için Vertex AI Model Registry'de dağıtılan model
ML API'yi kullanarak tahmin oluşturma tetikleyicisi:
- Dağıtılan AutoML modelinin uç noktasının çağrılmasını tetiklemek için Java Cloud Functions: Bu uç nokta, kullanıcı arayüzünden istek olarak film ayrıntılarını alır ve tahmin edilen film puanını döndürür.
Aşağıda, uygulamanın üst düzey mimari genel bakışı verilmiştir:

Yukarıdaki mimarinin uygulanması bu codelab'in kapsamı dışındadır. Ancak istemci uygulamasını da geliştirmek isterseniz lütfen bloga bakın.
Uygulama adımlarına göz atalım.
Ne oluşturacaksınız?
Aşağıdakileri oluşturacaksınız:
- 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 tahmin yapmak için Java Cloud Functions tetikleyicisi
2. Şartlar
Ön koşullar aşağıda verilmiştir:
Projenizi oluşturma
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.
- API'yi etkinleştirmek için BigQuery'ye gidin. Ayrıca, tarayıcınıza şu URL'yi girerek BigQuery web kullanıcı arayüzünü doğrudan açabilirsiniz: https://console.cloud.google.com/bigquery
Cloud Shell'i etkinleştirme
- Cloud Shell'i kullanacaksınız. Bu, Google Cloud'da çalışan ve bq ile önceden yüklenmiş bir komut satırı ortamıdır: Cloud Console'da sağ üst köşedeki Cloud Shell'i etkinleştir simgesini tıklayın:

- Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz. Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu komutu çalıştırın:
gcloud auth list
- 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
- Projeniz ayarlanmamışsa 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, tüm veriyle ilgili projelerde, ürünlerde ve uygulamalarda önemli bir adımdır. Optimal bir veri kümesi hazırlamak ve makine öğrenimi projeniz için hazır hale getirmek üzere teknolojiye ek olarak alan uzmanlığı da gerektirir. Bu codelab'in amacı doğrultusunda, verilerin önceden hazırlandığını varsayacak ve önceden işlenmiş bu veri dosyasını kullanacağız.
4. Veri kümesini oluşturma ve yükleme
BigQuery veri kümesi, tabloların bir koleksiyonudur. Bir veri kümesindeki tüm tablolar aynı veri konumunda depolanır. Ayrıca, bir veri kümesine ve tablolarına erişimi sınırlamak için özel erişim kontrolleri de ekleyebilirsiniz.
- Cloud Shell'de, "movies" adlı bir veri kümesi oluşturmak için bq mk komutunu kullanın.
bq mk --location=<<LOCATION>> movies
Konumu bir bölge (asia-south1) olarak ayarlayın. Aynı bölgeyi VERTEX AI adımı için de ayarlamayı unutmayın (her iki örnek de aynı bölgede olmalıdır).
- 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ı çalıştırın:
git clone <<repository link>>
cd movie-score
- CSV dosyanızı bir BigQuery tablosuna yüklemek için bq load komutunu kullanın (BigQuery kullanıcı arayüzünden de doğrudan yükleme yapabileceğinizi lütfen 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
- 3 yöntemden birini kullanarak sorgu oluşturun:
BigQuery ile üç şekilde etkileşim kurabiliriz. Bunlardan ikisini deneyeceğiz: a. BigQuery web kullanıcı arayüzü bq komutu c. API
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;
Sorgu çalıştırmak için BigQuery Web SQL Çalışma Alanı'nı kullandım. SQL Workspace şu şekilde görünür:

bq komutunu kullanma:
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. BigQuery'den AutoML'i de çalıştırabileceğinizi, modeli Vertex AI'ye kaydedebileceğinizi ve uç noktayı kullanıma sunabileceğinizi unutmayın. BigQuery AutoML ile ilgili belgelere 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, Vertex AI API'yi etkinleştirin (daha önce etkinleştirmediyseniz), verileri genişletin ve Veri Kümeleri'ni seçin, Veri kümesi oluştur'u tıklayın, TABULAR veri türünü ve "Regresyon / sınıflandırma" seçeneğini belirleyin ve Oluştur'u tıklayın:

Veri Kaynağı Seçme
Bir sonraki sayfada bir veri kaynağı seçin. "BigQuery'den tablo veya görünüm seçin" seçeneğini belirleyin ve BigQuery yolu GÖZAT alanında BigQuery'den tabloyu seçin. Devam'ı tıklayın.
Unutmayın: BigQuery tablosunun Vertex AI'da görünmesi için BigQuery örneği ve Vertex AI veri kümeleri aynı bölgede olmalıdır.

Kaynak tablonuzu/görünümünüzü seçerken, aşağıdaki adımlara devam etmek için göz atma listesinden radyo düğmesini tıklamayı unutmayın. Yanlışlıkla tablonun/görünümün adını tıklarsanız Dataplex'e yönlendirilirsiniz. Bu durumda Vertex AI'a geri dönmeniz yeterlidir.
Modeli eğitme
- Veri kümesi oluşturulduktan sonra, yeni bir model eğitme seçeneğinin bulunduğu Analiz sayfasını görürsünüz. Şunları tıklayın:

- Hedefi Sınıflandırma olarak bırakın, ilk sayfada AutoML seçeneğini belirleyin ve Devam'ı tıklayın:

- Modelinize bir ad verin, gösterilen açılır listeden Hedef Sütun adı olarak "Puan"ı seçin ve Devam'ı tıklayın.
- Ayrıca, "Test veri kümesini BigQuery'ye aktar" seçeneğini işaretleyebileceğinizi de unutmayın. Bu seçenek, ek bir entegrasyon katmanı olmadan veya verileri hizmetler arasında taşımanız gerekmeden test kümesini sonuçlarla birlikte veritabanında verimli bir şekilde görmenizi kolaylaştırır.
- Sonraki sayfada, ihtiyacınız olan gelişmiş eğitim seçeneklerini ve modelin eğitilmesini istediğiniz saatleri belirleyebilirsiniz. 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.

Modeli Değerlendirme, Dağıtma ve Test Etme
Eğitim tamamlandıktan sonra, sol taraftaki menüde Model Geliştirme başlığı altındaki Eğitim'i tıklayarak Eğitim İşlem Hatları bölümünde eğitiminizi görebilirsiniz. Model Registry sayfasına gitmek için bu bağlantıyı tıklayın. Şunları yapabilmeniz gerekir:
- Eğitim sonuçlarını görüntüleme ve değerlendirme

- Modeli API uç noktanızla dağıtma ve test etme
Modelinizi dağıttıktan sonra, uygulamanızda istek göndermek ve yanıttaki model tahmini sonuçlarını almak için kullanılabilecek bir API uç noktası oluşturulur.

Bu bölümden ayrılmadan önce, Vertex AI uç nokta bölümünüzde dağıtılan modelin uç nokta kimliğini, konumunu ve diğer ayrıntılarını not ettiğinizden emin olun.
6. ML çağrısını tetiklemek için Java Cloud Functions
Makine öğrenimi dağıtım adımından uç nokta ve diğer ayrıntıları aldığımızı hatırlıyor musunuz? Burada bunu kullanacağız ve Java Cloud Functions kullandığımız için bağımlılıkları işlemek için pom.xml dosyasını kullanacağız. Vertex AI AutoML uç nokta API'sini kullanmak için google-cloud-aiplatform kitaplığını kullanırız.
- Google Cloud Console'da Cloud Functions'ı arayın ve "Create Function" (İşlev Oluştur) seçeneğini tıklayın.
- Yapılandırma ayrıntılarını (ör. Ortam, İşlev adı, Bölge, Tetikleyici (bu örnekte HTTPS), istediğiniz kimlik doğrulama) girin, "HTTPS gerektir"i etkinleştirin ve sonraki/kaydet'i tıklayın.

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

- Depodaki java ve pom.xml dosyalarını kopyalayıp satır içi düzenleyicideki ilgili dosyalara yapıştırın. Yerel düzenleyicinizi kullanıyorsanız (önerilir) kaynağı depodan klonlayın.
- Bu örnek için .java kaynak dosyasındaki proje kimliğini, uç nokta kimliğini, konumu ve uç noktayı değiştirin. Ancak kimlik bilgilerini depolamak için en iyi uygulamanın Secret Manager kullanmak olduğunu lütfen unutmayın.
- Bu codelab'in kapsamı için, kopyalanan kaynak kodunuzdaki .java sınıfında MongoDB bölümlerini yorum satırı olarak işaretleyin.
Tüm değişiklikler tamamlandıktan sonra işlevi dağıtabilirsiniz. İstemci uygulamanızda bu Cloud Functions işlevine istek göndermek ve yanıt olarak film puanı almak için kullanılabilecek uç nokta URL'sini görmeniz gerekir.
7. Temizleme
Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:
- Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
- Proje listesinde silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
- İletişim kutusunda proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
8. Tebrikler
Tebrikler! Vertex AI AutoML'de bir film puanı tahmin modeli oluşturup dağıttınız ve dağıtılan modeli Cloud Functions'dan tetiklediniz.