1. Genel Bakış
Bu laboratuvarda, özel olarak eğitilmiş bir modelden online ve toplu tahminler almak için Vertex AI'ı kullanacaksınız.
Bu laboratuvar, Prototipten Üretime video serisinin bir parçasıdır. Bu laboratuvarı denemeden önce önceki laboratuvarı tamamladığınızdan emin olun. Daha fazla bilgi edinmek için aşağıdaki videoyu izleyebilirsiniz:
.
Öğrenecekleriniz
Öğrenecekleriniz:
- Vertex AI Model Registry'ye model yükleme
- Bir uç noktaya model dağıtma
- Kullanıcı arayüzü ve SDK ile online ve toplu tahminler alın
Bu laboratuvarı Google Cloud'da çalıştırmanın toplam maliyeti yaklaşık 1 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.
Vertex AI, uçtan uca makine öğrenimi iş akışlarını destekleyen birçok farklı ürün içerir. Bu laboratuvarda, aşağıda vurgulanan ürünlere odaklanılmaktadır: Estimateions (Tahminler) ve Workbench (Workbench)
3. Ortamınızı ayarlama
Ortamınızı ayarlamak için Vertex AI ile özel modelleri eğitme laboratuvarındaki adımları tamamlayın.
4. Modeli kayıt defterine yükleyin
Modelimizi tahmin almak için kullanmadan önce, makine öğrenimi modellerinizin yaşam döngüsünü yönetebileceğiniz bir depo olan Vertex AI Model Registry'ye yüklenmesini sağlamamız gerekir.
Aşağıda gösterildiği gibi, özel bir eğitim işi yapılandırdığınızda model yükleyebilirsiniz.
Alternatif olarak, kayıtlı model yapılarını bir Cloud Storage paketinde depoladığınız sürece eğitim işi tamamlandıktan sonra modelleri içe aktarabilirsiniz. Bu, bu laboratuvarda kullanacağımız seçenektir.
Konsolda Modeller bölümüne gidin.
IMPORT'u (İÇE AKTAR) seçin:
Yeni model olarak içe aktar'ı seçin ve ardından modeliniz için bir ad girin.
Model ayarları bölümünde, önceden oluşturulmuş bir container'la modeli içe aktarın ve TensorFlow 2.8'i kullanın. Önceden oluşturulmuş tahmin kapsayıcılarının tam listesini burada bulabilirsiniz.
Ardından, özel eğitim işinde model yapılarını kaydettiğiniz bulut depolama paketinin yolunu girin. gs://{PROJECT_ID}-bucket/model_output
gibi bir değer olacaktır
Açıklanabilirlik bölümünü atlayacağız, ancak Vertex Explainable AI hakkında daha fazla bilgi edinmek istiyorsanız belgelere göz atabilirsiniz.
İçe aktarılan modelleri kayıt defterinde görürsünüz.
Bunu kullanıcı arayüzü yerine SDK aracılığıyla yapmak isterseniz modeli yüklemek için Workbench not defterinizden aşağıdaki komutu çalıştırabilirsiniz.
from google.cloud import aiplatform
my_model = aiplatform.Model.upload(display_name='flower-model',
artifact_uri='gs://{PROJECT_ID}-bucket/model_output',
serving_container_image_uri='us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest')
5. Modeli uç noktaya dağıtma
Vertex AI'da çalıştırabileceğimiz iki tür tahmin işi vardır: toplu ve online.
Toplu tahmin, eşzamansız bir istektir. Acil yanıt almanız gerekmiyorsa ve biriken verileri tek bir istekte işlemek istiyorsanız bu yöntem idealdir.
Diğer yandan, modelinize anında iletilen verilerden düşük gecikmeli tahminler almak istiyorsanız online tahmini kullanırsınız.
Model kayıt defterinde olduğuna göre artık toplu tahminler için kullanılabilir.
Ancak online tahminler almak istersek modeli bir uç noktaya dağıtmamız gerekir. Bu işlem, düşük gecikmeli tahminler için kaydedilen model yapılarını fiziksel kaynaklarla ilişkilendirir.
Bir uç noktaya dağıtmak için modelin en sağındaki üç noktayı ve ardından Uç noktaya dağıt'ı seçin.
Uç noktanıza bir ad verin, ardından diğer ayarları olduğu gibi bırakıp DEVAM'ı tıklayın.
Uç noktalar otomatik ölçeklendirmeyi destekler. Bu da minimum ve maksimum değerler ayarlayabileceğiniz anlamına gelir. İşlem düğümleri bu sınırlar içindeki trafik talebini karşılayacak şekilde ölçeklendirilir.
Bu laboratuvar yalnızca tanıtım amaçlı olduğundan ve bu uç nokta fazla trafik olduğunda kullanılmayacak. Bu nedenle Maksimum işlem notu sayısı'nı 1 olarak ayarlayabilir ve Makine türü olarak n1-standard-4'ü seçebilirsiniz.
Model izlemeyi atlayacağız, ancak bu özellik hakkında daha fazla bilgi edinmek istiyorsanız belgelere göz atabilirsiniz.
Ardından DAĞIT'ı tıklayın
Dağıtım birkaç dakika sürer ancak tamamlandıktan sonra modelinizin dağıtım durumunun Vertex AI'da dağıtıldı olarak değiştiğini görürsünüz.
SDK aracılığıyla bir model dağıtmak istiyorsanız aşağıdaki komutu çalıştırın.
my_model = aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}")
endpoint = my_model.deploy(
deployed_model_display_name='my-endpoint',
traffic_split={"0": 100},
machine_type="n1-standard-4",
accelerator_count=0,
min_replica_count=1,
max_replica_count=1,
)
6. Tahmin alma
Online tahminler
Modeliniz bir uç noktaya dağıtıldığında, diğer herhangi bir dinlenme uç noktası gibi onu kullanabilirsiniz. Yani modeli bir bulut işlevinden, chatbot'tan, web uygulamasından vb. çağırabilirsiniz.
Gösterim amacıyla bu uç noktayı Workbench'ten çağıracağız.
Önceki laboratuvarda oluşturduğunuz not defterine dönün. Başlatıcıdan yeni bir TensorFlow 2 not defteri oluşturun.
Vertex AI Python SDK, numpy ve PIL'yi içe aktarma
from google.cloud import aiplatform
import numpy as np
from PIL import Image
Aşağıdaki resmi indirip Workbench örneğinize yükleyin. Bu karahindiba resmi üzerinde modeli test edeceğiz.
İlk olarak uç noktayı tanımlayın. Aşağıdaki {PROJECT_NUMBER}
ve {ENDPOINT_ID}
öğelerini değiştirmeniz gerekecek.
endpoint = aiplatform.Endpoint(
endpoint_name="projects/{PROJECT_NUMBER}/locations/us-central1/endpoints/{ENDPOINT_ID}")
Endpoints_id bilginizi Cloud Console'un Endpoints bölümünde bulabilirsiniz.
Proje Numaranızı konsolun ana sayfasında bulabilirsiniz. Bunun Proje Kimliğinden farklı olduğunu unutmayın.
Aşağıdaki kod, resmi PIL ile açar ve yeniden boyutlandırır.
IMAGE_PATH = "test-image.jpg"
im = Image.open(IMAGE_PATH)
Ardından, Numpy verilerini float32 türüne ve bir listeye dönüştürün. Numpy verileri JSON serileştirilemeyeceğinden isteğimizin gövdesinde gönderemiyoruz. Bu nedenle, verileri listeye dönüştürüyoruz.
x_test = np.asarray(im).astype(np.float32).tolist()
Son olarak, endpoint.predict
adlı kişiyi arayın.
endpoint.predict(instances=x_test).predictions
Elde ettiğiniz sonuç modelin çıkışıdır. Bu model, 5 birimli bir softmax katmanıdır. Dizin yerine dize etiketini döndürecek özel bir mantık yazmak isterseniz özel tahmin rutinlerini kullanabilirsiniz.
Toplu tahminler
Verilerinizi toplu tahmin için biçimlendirmenin farklı yolları vardır. Kolaylık sağlaması için, numpy verilerini bir json dosyasına aktarıp Cloud Storage'a kaydedeceğiz.
with open('test-data.json', 'w') as fp:
json.dump(x_test, fp)
!gsutil cp test-data.json gs://{YOUR_BUCKET}
Ardından, modeli tanımlayın. Bu, uç noktayı tanımlamaya benzer ancak ENDPOINT_ID
yerine MODEL_ID
öğesini sağlamanız gerekir.
my_model=aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}")
Konsolun Modeller bölümünden model adını ve sürümünü, ardından SÜRÜM AYRINTILARI'nı seçerek model kimliğini bulabilirsiniz.
Son olarak, SDK'yı kullanarak bir toplu tahmin işi çağırın. Bunun için json dosyasını depoladığınız Cloud Storage yolunu iletin ve tahmin sonuçlarının depolanacağı bir Cloud Storage konumu sağlayın.
batch_prediction_job = my_model.batch_predict(
job_display_name='flower_batch_predict',
gcs_source='gs://{YOUR_BUCKET}/test-data.json',
gcs_destination_prefix='gs://{YOUR_BUCKET}/prediction-results',
machine_type='n1-standard-4',)
İşin ilerleme durumunu konsolun Toplu Tahminler bölümünden takip edebilirsiniz. Tek bir görüntü için toplu tahmin işi çalıştırmanın verimli olmadığını unutmayın.
Sırada ne var?
Bu örnekte, tahmin çağrısı yapmadan önce test görüntüsünü NumPy'ye dönüştürdük. Daha gerçekçi kullanım örnekleri için, muhtemelen resmi göndermek ve önce NumPy'ye yüklemek zorunda kalmamak istersiniz. Bunu yapmak için, TensorFlow sunma işlevinizi resim baytlarının kodunu çözecek şekilde ayarlamanız gerekir. Biraz daha fazla çalışma gerektirir ancak bu yöntem, büyük resimler ve uygulama geliştirme için çok daha verimli olur. Bu not defterinde bir örnek görebilirsiniz.
🎉 Tebrikler! 🎉
Vertex AI'ı kullanarak şunları öğrendiniz:
- Vertex AI Model Registry'ye model yükleme
- Toplu ve online tahminler alın
Vertex'in farklı bölümleri hakkında daha fazla bilgi edinmek için dokümanlara göz atın.
7. Temizleme
Kullanmayı planlamıyorsanız modellerin uç noktadaki dağıtımını kaldırmak isteyebilirsiniz. Uç noktayı tamamen de silebilirsiniz. Gerekirse istediğiniz zaman bir uç noktaya modeli yeniden dağıtabilirsiniz.
Workbench tarafından yönetilen not defterleri, 180 dakika boşta kalma dakikalarının sonunda otomatik olarak zaman aşımına uğradığından örneği kapatma konusunda endişelenmeniz gerekmez. Örneği manuel olarak kapatmak isterseniz konsolun Vertex AI Workbench bölümündeki Durdur düğmesini tıklayın. Not defterini tamamen silmek isterseniz Sil düğmesini tıklayın.
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: