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

1. Genel Bakış

Bu laboratuvarda, tablo verileriyle bir model eğitmek ve sunmak için Vertex AI'ı kullanacaksınız. Bu, Google Cloud'daki en yeni yapay zeka ürünü teklifidir 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ğitilmiş AutoML modelinizi bir uç noktaya dağıtın ve bu uç noktayı tahmin almak için kullanın

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'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: tablo verileri için AutoML, Tahmin 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 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 kontrol paneli

3. Adım: Vertex AI Workbench örneği oluşturun

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

Vertex AI menüsü

İlgili sayfada, Kullanıcı tarafından yönetilen Not Defteri'nde Yeni Not Defteri'ni tıklayın:

Yeni not defteri oluştur

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

TFE örneği

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

5. Adım: Not Defterinizi açın

Örnek oluşturulduktan sonra JupyterLab'i aç'ı seçin:

Not defterini aç

Modelimizi eğitmek için kullanacağımız veriler, bu Kredi kartı sahtekarlığı algılama veri kümesinden 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 veya kendi özel model kodunuzla modelleri eğitmek için kullanabilirsiniz.

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

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

Veri kümeleri'ni seçin

Bu laboratuvarda, belirli bir kredi kartı işleminin sahte olarak sınıflandırılıp sınıflandırılmayacağını belirlemek için bir sahtekarlık tespit modeli oluşturacağız.

Veri kümeleri sayfasından veri kümesine bir ad verin, ardından Tablo ve ardından Regresyon/sınıflandırma'yı seçin. Daha sonra 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 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 verileri içe aktarın

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

BQ verilerini içe aktar

Veri kümenizi içe aktardıktan sonra aşağıdakine benzer bir sonuç görürsünüz:

İçe aktarılan veriler

İsterseniz bu veri kümesiyle ilgili ek bilgileri görmek için İstatistik oluştur'u tıklayabilirsiniz, ancak sonraki adıma geçmeden önce bu işleme gerek yoktur. Bu veri kümesi gerçek kredi kartı işlemlerini içerir. Sütun adlarının çoğu belirsiz olduğu için V1, V2 vb. olarak adlandırılmıştı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 sahte olup olmadığını tahmin etmek için bir sınıflandırma modelini eğiteceğiz. Vertex AI, eğitim modelleri için size iki seçenek sunar:

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

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

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

Önceki adımda bıraktığı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'i 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ı kullanın. Hedef sütun altında Sınıf'ı seçin. Belirli bir işlemin sahte olup olmadığını gösteren bir tam sayıdır (sahtekarlık için 0, sahtekarlık 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şlemler içerdiğinden) daha seyrek kullanılan sınıf için hassas geri çağırmayı en üst düzeye çıkaracak AUC PRC seçeneğini tercih edin:

Gelişmiş eğitim seçenekleri

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

Eğitim işiniz tamamlandığında bir e-posta alırsınız. Eğitim, bir saatten biraz daha uzun sürer. Bu süre içinde kaynakların erimesi ve azalması için gereken zamanı hesaba katarsınız.

6. Model değerlendirme metriklerini keşfedin

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

Model eğitimi işiniz tamamlandıktan sonra Vertex'te Modeller sekmesine gidin. Eğittiğiniz modeli tıklayın ve Değerlendir sekmesine göz atın. Burada çok sayıda değerlendirme metriği vardır. Bunlardan ikisine odaklanacağız: Karışıklık Matrisi ve Özellik Önemi.

1. Adım: Karışıklık matrisini anlama

Karışıklık matrisi, test kümemizdeki her sınıftan modelimizin doğru tahmin ettiği örneklerin yüzdesini belirtir. Üzerinde çalıştığımız veri kümesi gibi dengesiz bir veri kümesi söz konusu olduğunda bu, modelimizin performansını genel doğruluktan daha iyi bir şekilde ölçer.

Veri kümemizdeki örneklerin% 1'inden azının sahtekarlık amaçlı işlemler olduğunu unutmayın. Bu nedenle, modellerimizin doğruluğu% 99 ise, sahte olmayan sınıfın% 99'unda rastgele tahminde bulunma ihtimali yüksektir. Bu yüzden, modelimizin her sınıf için doğruluğuna bakmak burada daha iyi bir metriktir.

Değerlendir sekmesini aşağı kaydırırsanız, aşağıdakine benzer bir karışıklık matrisi görürsünüz (tam yüzdeler değişiklik gösterebilir):

Karışıklık matrisi

Karışıklık matrisi, ilk modelimizin test setimizdeki sahte örneklerin% 85'ini doğru şekilde sınıflandırabildiğini göstermektedir. Özellikle veri kümesindeki önemli dengesizlikler düşünüldüğünde, bu oldukça iyi bir durum. Sonrasında, bu %85'lik düzeyin iyileştirilip iyileştirilemeyeceğini görmek için modelimizi daha fazla işlem saati için eğitmeyi deneyebiliriz.

2. Adım: Özelliğin önemine bakma

Karışıklık matrisinin altında şuna benzer bir özellik önem grafiği görürsünüz:

Özelliğin önem düzeyi

Bu veriler, tahminde bulunurken modelimize en büyük sinyali sağlayan özellikleri gösterir. Özelliğin önemi, Explainable AI türlerinden biridir. Makine öğrenimi modeli hakkında daha fazla bilgi edinmek için çeşitli yöntemlerin yer aldığı bir alan olan tahminde bulunur. Burada görülen özellik önem grafiği, modelimizin test kümesindeki tüm tahminlerine bakılarak toplu olarak hesaplanır. Bir dizi örnekle en önemli özellikleri gösterir.

Veri kümemizdeki özelliklerin çoğu gizlenmemiş olsaydı bu grafik daha heyecan verici olurdu. Örneğin, bir işlem türünün (aktarım, para yatırma vb.) sahtekarlığın en büyük göstergesi olduğunu öğrenebiliriz.

Gerçek hayattan bir senaryoda, bu özellik önem değerleri, modelimizi iyileştirmemize ve tahminlerinin tahminlerine daha fazla güvenmemize yardımcı olmak için kullanılabilir. Gelecek sefer bir modeli eğitirken en az öneme sahip özellikleri kaldırmaya veya bunun model performansını artırıp artırmayacağını görmek için daha önemli özelliklerimizden ikisini bir özellikler arası altında birleştirmeye karar verebiliriz.

Burada belirli gruplardaki özelliklerin önemine bakıyoruz ancak Vertex AI'da bağımsız tahminler için özellik önemini de öğrenebiliriz. Bunu nasıl yapacağınızı modelimizi dağıttıktan sonra göreceğiz.

7. Modeli uç noktaya dağıtma

Artık eğitilmiş bir modelimiz olduğuna göre, 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 fraud_v1 gibi bir ad verin, Erişim ayarını Standart olarak bırakın ve Devam'ı tıklayın.

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

Bu uç nokta için model izleme kullanmayacağız. Bu nedenle, bunu seçmeden bırakıp 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ı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

Her ikisi de burada gösterilecek.

1. Adım: Kullanıcı arayüzünde model tahminlerini 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 et

Vertex AI, modelimizin her bir özelliği için test tahmini almak üzere kullanabileceğimiz rastgele değerler seçti. Dilerseniz bu değerleri değiştirebilirsiniz. Sayfanın alt kısmına gidin ve Tahmin et'i seçin.

Sayfanın Tahmin sonucu bölümünde her sınıf için modelinizin tahmini yüzdesini göreceksiniz. Örneğin, 0 sınıfı için 0.99 güven puanı, modelinizin bu örneğin% 99'unun sahtekarlık amacı taşımadığını düşündüğü anlamına gelir.

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

Kullanıcı arayüzü, dağıtılan uç noktanızın beklendiği gibi çalıştığından emin olmanın mükemmel bir yoludur ancak muhtemelen REST API çağrısı aracılığıyla tahminleri dinamik olarak almak istersiniz. Size burada model tahminlerinin nasıl alınacağını göstermek için bu laboratuvarın başında oluşturduğunuz Vertex Workbench ö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 defterinizdeki bir hücrede aşağıdaki komutu çalıştırarak Vertex SDK'yı yükleyin:

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

Ardından, SDK'yı içe aktarmak ve az önce dağıttığınız uç noktaya bir referans oluşturmak için 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 bulunan iki değeri proje numaranız ve uç noktanızla değiştirmeniz gerekir. Proje numaranızı proje kontrol panelinize gidip Proje Numarası değerine bakarak bulabilirsiniz.

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

Uç nokta kimliğini bulma

Son olarak, aşağıdaki kodu kopyalayıp yeni bir hücreye ç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örmeniz gerekir. Yani model, bu işlemin sahtekarlık amacı taşımama olasılığının% 67 olduğunu düşünüyor.

🎉 Tebrikler! 🎉

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

  • Yönetilen veri kümesi yükleme
  • AutoML kullanarak tablo verileri üzerinde bir modeli eğitme ve değerlendirme
  • Modeli bir uç noktaya dağıtma
  • Vertex SDK'sını kullanarak model uç noktasında tahmin alma

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'unuzdaki Workbench kullanıcı arayüzünde not defterini, ardından Durdur'u seçin.

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