Vertex AI: AutoML ile sahtekarlık algılama modeli oluşturma

1. Genel Bakış

Bu laboratuvarda, tablo verileriyle bir modeli eğitmek ve sunmak için Vertex AI'ı kullanacaksınız. Bu, Google Cloud'daki en yeni yapay zeka ürünüdür ve şu anda önizleme aşamasındadır.

Öğrenecekleriniz

Öğrenecekleriniz:

  • Vertex AI'a yönetilen veri kümesi yükleme
  • AutoML ile model eğitme
  • Eğitilen AutoML modelinizi bir uç noktaya dağıtma ve bu uç noktayı kullanarak tahminler alma

Bu laboratuvarı Google Cloud'da çalıştırmanın toplam maliyeti yaklaşık 22 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 odaklanılacaktır: Tablo biçimindeki veriler için AutoML, Prediction ve Workbench.

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 kontrol paneli

3. adım: Vertex AI Workbench örneği oluşturma

Cloud Console'unuzun Vertex AI bölümünde Workbench'i tıklayın:

Vertex AI menüsü

Buradan Kullanıcı tarafından yönetilen not defterleri bölümünde Yeni not defteri'ni tıklayın:

Yeni not defteri oluşturma

Ardından, GPU'suz en son TensorFlow Enterprise (LTS özellikli) örnek türünü seçin:

TFE örneği

Varsayılan seçenekleri kullanıp Oluştur'u tıklayın.

5. adım: Not defterinizi açın

Örnek oluşturulduktan sonra Open JupyterLab'i (JupyterLab'i aç) seçin:

Not defterini açma

Modelimizi eğitmek için kullanacağımız veriler, kredi kartı sahtekarlığı algılama veri setinden alınır. Bu veri kümesinin BigQuery'de herkese açık olarak sunulan bir sürümünü kullanacağız.

4. Yönetilen veri kümesi oluşturma

Vertex AI'da çeşitli veri türleri için yönetilen veri kümeleri oluşturabilirsiniz. Ardından bu veri kümeleriyle ilgili istatistikler oluşturabilir ve bunları AutoML ile modelleri eğitmek veya kendi özel model kodunuzla kullanabilirsiniz.

1. adım: Veri kümesi oluşturun

Konsolunuzdaki Vertex menüsünde Veri kümeleri'ni seçin:

Veri kümelerini seçin

Bu laboratuvarda, belirli bir kredi kartı işleminin sahtekarlık olarak sınıflandırılıp sınıflandırılmaması gerektiğini belirlemek için bir sahtekarlık algılama modeli oluşturacağız.

Veri kümeleri sayfasında veri kümesine bir ad verin, ardından Tablo ve Regresyon/sınıflandırma'yı seçin. Ardından veri kümesini oluşturun:

Veri kümesi oluştur

Vertex'teki Yönetilen Veri Kümelerine veri aktarmak için birkaç seçenek vardır:

  • Bilgisayarınızdan yerel bir dosya yükleme
  • Cloud Storage'dan dosya seçme
  • BigQuery'den veri seçme

Burada, herkese açık bir BigQuery tablosundan veri yükleyeceğiz.

2. adım: BigQuery'den veri içe aktarma

İçe aktarma yöntemi olarak "BigQuery'den tablo veya görünüm seçin"i belirleyin ve ardından aşağıdakileri BigQuery tablosu kutusuna kopyalayın: bigquery-public-data.ml_datasets.ulb_fraud_detection. Ardından Devam'ı seçin:

BQ verilerini içe aktarma

Veri kümenizi içe aktardıktan sonra aşağıdakine benzer bir şey görmelisiniz:

İçe aktarılan veriler

İsterseniz bu veri kümesiyle ilgili ek bilgileri görmek için İstatistik oluştur'u tıklayabilirsiniz ancak bir sonraki adıma geçmeden önce bu işlem gerekli değildir. Bu veri kümesi gerçek kredi kartı işlemleri içeriyor. Sütun adlarının çoğu gizlendiği için V1, V2 vb. olarak adlandırılır.

5. AutoML ile model eğitme

Yönetilen bir veri kümesi yüklendiğinde bu verilerle bir modeli eğitmeye hazırız. Belirli bir işlemin sahtekarlık olup olmadığını tahmin etmek için sınıflandırma modeli eğiteceğiz. Vertex AI, modelleri eğitmek için iki seçenek sunar:

  • AutoML: Minimum düzeyde çaba ve makine öğrenimi uzmanlığı ile yüksek kaliteli modeller eğitin.
  • Özel eğitim: Google Cloud'un önceden oluşturulmuş container'larından birini kullanarak veya kendi container'ınızı kullanarak özel eğitim uygulamalarınızı bulutta çalıştırın.

Bu laboratuvarda eğitim için AutoML'i kullanacağız.

1. adım: Eğitim işini başlatın

Önceki adımda kaldığınız veri kümesi ayrıntıları sayfasında sağ üstteki Yeni modeli eğit'i seçin. Hedef olarak Sınıflandırma'yı seçin, model eğitimi için AutoML'yi seçili bırakın ve ardından Devam'ı tıklayın:

Model eğitimi 1. adım

Modelinize bir ad verin veya varsayılan adı kullanabilirsiniz. Hedef sütun bölümünde Sınıf'ı seçin. Bu, belirli bir işlemin sahtekarlık içerip içermediğini gösteren bir tam sayıdır (sahtekarlık içermeyen işlemler için 0, sahtekarlık içeren işlemler için 1).

Ardından Devam'ı seçin:

Model eğitimi 2. adım

Bu adımda aşağı kaydırın ve Gelişmiş seçenekler'i tıklayarak genişletin. Bu veri kümesi büyük ölçüde dengesiz olduğundan (verilerin% 1'inden azı sahtekarlık içeren işlemleri içerir) daha az yaygın olan sınıf için hassasiyet/geri çağırma değerini en üst düzeye çıkaracak AUC PRC seçeneğini belirleyin:

Gelişmiş eğitim seçenekleri

Devam'ı seçin ve ardından son adıma (işlem ve fiyatlandırma) geçin. Burada, bütçeniz için düğüm saati sayısı olarak 1 girin ve erken durdurma özelliğini etkin bırakın. AutoML modelinizi 1 işlem saati boyunca eğitmek, genellikle seçtiğiniz özellikler ve etiket arasında bir ilişki olup olmadığını anlamak için iyi bir başlangıçtır. Buradan özelliklerinizi değiştirebilir ve model performansını artırmak için daha uzun süre eğitim yapabilirsiniz. Ardından Eğitimi başlat'ı seçin.

Eğitim işiniz tamamlandığında bir e-posta alırsınız. Kaynakların başlatılması ve kapatılması için gereken süre de hesaba katıldığında eğitim bir saatten biraz daha uzun sürer.

6. Model değerlendirme metriklerini keşfetme

Bu adımda modelimizin nasıl performans gösterdiğini göreceğiz.

Model eğitimi işiniz tamamlandıktan sonra Vertex'teki Modeller sekmesine gidin. Eğitimini tamamladığınız modeli tıklayın ve Değerlendir sekmesine göz atın. Burada birçok değerlendirme metriği vardır. Biz Karışıklık Matrisi ve Özellik Önem Derecesi olmak üzere iki metriğe odaklanacağız.

1. adım: Karmaşıklık matrisini anlayın

Karışıklık matrisi, modelimizin test setimizdeki her sınıfa ait örneklerin yüzde kaçını doğru tahmin ettiğini gösterir. Ele aldığımız gibi dengesiz bir veri kümesi söz konusu olduğunda bu, modelimizin performansının genel doğruluktan daha iyi bir ölçüsüdür.

Veri setimizdeki örneklerin% 1'inden azının sahtekarlık amaçlı işlemler olduğunu unutmayın. Bu nedenle, model doğruluğumuz% 99 ise modelin% 99 oranında sahtekarlık içermeyen sınıfı rastgele tahmin etme olasılığı yüksektir. Bu nedenle, modelimizin her sınıf için doğruluğuna bakmak burada daha iyi bir metriktir.

Değerlendir sekmesinde aşağı kaydırdığınızda aşağıdaki gibi bir karmaşıklık matrisi görmeniz gerekir (kesin yüzdeler değişebilir):

Karışıklık matrisi

Karışıklık matrisi, ilk modelimizin test setimizdeki sahtekarlık örneklerinin% 85'ini doğru şekilde sınıflandırabildiğini gösteriyor. Bu sonuç, özellikle önemli veri kümesi dengesizliğimiz göz önüne alındığında oldukça iyi. Ardından, bu %85'lik oranı iyileştirip iyileştiremeyeceğimizi görmek için modelimizi daha fazla işlem saati boyunca eğitmeyi deneyebiliriz.

2. adım: Özellik önemine bakma

Kafa karışıklığı matrisinin altında, aşağıdaki gibi bir özellik önem düzeyi grafiği görürsünüz:

Özelliğin önem düzeyi

Bu, tahmin yaparken modelimize en büyük sinyali sağlayan özellikleri gösterir. Özellik önemi, bir tür açıklanabilir yapay zekadır. Bu alan, bir makine öğrenimi modelinin tahmin yapmasıyla ilgili daha fazla bilgi edinmeye yönelik çeşitli yöntemleri içerir. Burada görülen özellik önem grafiği, test setimizdeki modelimizin tüm tahminlerine bakılarak toplu olarak hesaplanır. Bir grup örnekteki en önemli özellikleri gösterir.

Veri kümemizdeki özelliklerin çoğu gizlenmemiş olsaydı bu grafik daha ilgi çekici olurdu. Örneğin, bir işlemin türünün (transfer, mevduat vb.) sahtekarlığın en büyük göstergesi olduğunu öğrenebiliriz.

Gerçek hayattaki bir senaryoda, bu özellik önem değerleri modelimizi geliştirmemize ve tahminlerine daha fazla güvenmemize yardımcı olabilir. Bir modeli bir sonraki eğitme işlemimizde en az önemli özellikleri kaldırmaya veya model performansını iyileştirip iyileştirmediğini görmek için daha önemli iki özelliğimizi özellikler arası geçişte birleştirmeye karar verebiliriz.

Burada bir toplu iş genelinde özellik önemine bakıyoruz ancak Vertex AI'da tek tek tahminler için de özellik önemini elde edebiliriz. Modelimizi dağıttıktan sonra bunu nasıl yapacağımızı göreceğiz.

7. Modeli uç noktaya dağıtma

Eğitilmiş bir modelimiz olduğuna 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 fraud_v1 gibi bir ad verin, erişimi Standart olarak bırakın ve Devam'ı tıklayın.

Trafiği bölme ve makine türü ayarlarını varsayılan olarak bırakın, Bitti'yi ve ardından Devam'ı tıklayın.

Bu uç nokta için model izleme kullanmayacağız. Bu nedenle, ilgili seçeneğin işaretini kaldırabilir ve Dağıt'ı tıklayabilirsiniz. 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

İkisini de burada göstereceğiz.

1. adım: Kullanıcı arayüzünde model tahminleri alın

Uç noktanızın gösterildiği model sayfanızda (son adımda kaldığımız yer) Modelinizi test edin bölümüne gidin:

Modeli test etme

Burada Vertex AI, test tahmini almak için kullanabileceğimiz modelimizin her özelliği için rastgele değerler seçti. İsterseniz bu değerleri değiştirebilirsiniz. Sayfanın en altına gidin ve Tahmin'i seçin.

Sayfanın Tahmin sonucu bölümünde, modelinizin her sınıf için tahmin ettiği yüzdeyi görmeniz gerekir. Örneğin, 0 sınıfı için 0.99 güven puanı, modelinizin bu örneğin sahtekarlık içermeme olasılığının% 99 olduğunu düşündüğü anlamına gelir.

2. adım: Vertex AI API ile model tahminleri alma

Kullanıcı arayüzü, dağıtılan uç noktanızın beklendiği gibi çalıştığından emin olmanın harika bir yoludur ancak tahminleri dinamik olarak bir REST API çağrısı aracılığıyla almak isteyebilirsiniz. Burada model tahminlerini nasıl alacağınızı göstermek için bu laboratuvarın başında oluşturduğunuz Vertex Workbench ö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ç

Vertex SDK'yı yüklemek için not defterinizdeki bir hücrede aşağıdakileri çalıştırın:

!pip3 install google-cloud-aiplatform --upgrade --user

Ardından, SDK'yı içe aktarmak ve yeni dağıttığınız uç nokta için bir referans oluşturmak üzere not defterinize bir hücre ekleyin:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

Yukarıdaki endpoint_name dizesinde iki değeri proje numaranız ve uç noktanızla değiştirmeniz gerekir. Proje numaranızı bulmak için proje kontrol panelinize gidip Proje Numarası değerini alın.

Uç nokta kimliğinizi, konsolun uç noktalar bölümünde bulabilirsiniz:

Uç nokta kimliğini bulma

Son olarak, aşağıdaki kodu yeni bir hücreye kopyalayıp çalıştırarak uç noktanız için bir tahminde bulunun:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

0 sınıfı için .67 civarında bir tahmin görmelisiniz. Bu, modelin bu işlemin sahtekarlık içermeme olasılığının% 67 olduğunu düşündüğü anlamına gelir.

🎉 Tebrikler! 🎉

Vertex AI'ı kullanarak şunları yapmayı öğrendiniz:

  • Yönetilen veri kümesi yükleme
  • AutoML'i kullanarak tablo biçimindeki veriler üzerinde bir modeli eğitme ve değerlendirme
  • Modeli bir uç noktaya dağıtma
  • Vertex için SDK'yı kullanarak model uç noktasında tahmin 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'daki Workbench kullanıcı arayüzünde not defterini ve ardından Durdur'u seçin.

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 modelin dağıtımını uç noktanızdan kaldırın:

Uç noktayı silin

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

Depolama alanını silme