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:
- Makine öğrenimi modeli oluşturma ve dağıtma
- ML API'yi kullanarak tahmin yürütmek için tetikleyici
ML Modeli Oluşturma:
- CSV'den BigQuery'ye aktarılan veriler
- AutoML modeli oluşturmak için Vertex AI'a entegre edilmiş BigQuery verileri
- 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:
- 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:
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
Gerekli ön koşullar aşağıda verilmiştir:
Projenizi oluşturun
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projenizde faturalandırmanın etkinleştirildiğinden emin olun. Projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin.
- 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
- 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:
- 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
- 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 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.
- 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).
- 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
- 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
- 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:
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:
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.
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
- 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:
- Hedefi Sınıflandırma olarak bırakın ve ilk sayfada AutoML seçeneğini belirleyip devam'ı tıklayın:
- Modelinize bir ad verin ve 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ş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.
- 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.
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:
- 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, istek göndermek ve yanıtta model tahmini sonuçlarını almak için uygulamanızda kullanılabilecek bir API uç noktası oluşturulur.
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.
- Google Cloud Console'da Cloud Functions'i arayın ve "İşlev Oluştur"u tıklayın.
- 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.
- 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.
- 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.
- 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.
- 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:
- Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
- Proje listesinde, silmek istediğiniz projeyi seçin ve ardından Sil'i tıklayın.
- İ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.