Pelatihan kustom Hello: Menyajikan prediksi dari model klasifikasi gambar kustom

Halaman ini membahas penayangan prediksi dari model klasifikasi gambar Anda dan melihat prediksi ini di aplikasi web.

Dokumen ini adalah bagian dari tutorial "Pengantar pelatihan kustom", yang akan memandu Anda menggunakan Vertex AI untuk melatih model klasifikasi gambar dan menyajikan prediksi menggunakan model tersebut. Dalam tutorial ini, Anda akan menggunakan fitur pelatihan kustom Vertex AI untuk menjalankan aplikasi pelatihan TensorFlow Keras di salah satu lingkungan container bawaan Vertex AI. Tugas pelatihan kustom akan melatih model machine learning (ML) untuk mengklasifikasikan gambar bunga berdasarkan jenisnya. Setelah Anda melatih model ML, tutorial ini akan menunjukkan cara membuat endpoint dan menyajikan prediksi dari endpoint tersebut ke aplikasi web sederhana.


Untuk mengikuti panduan langkah demi langkah tugas ini langsung di Konsol Google Cloud, klik Pandu saya:

Pandu saya


Tutorial ini meliputi beberapa halaman:

  1. Menyiapkan project dan lingkungan.

  2. Melatih model klasifikasi gambar kustom.

  3. Menyajikan prediksi dari model klasifikasi gambar kustom.

  4. Membersihkan project.

Setiap halaman mengasumsikan bahwa Anda telah menjalankan petunjuk dari halaman tutorial sebelumnya.

Bagian selanjutnya dari dokumen ini mengasumsikan bahwa Anda menggunakan lingkungan Cloud Shell yang sama dengan yang Anda buat saat mengikuti halaman pertama tutorial ini. Jika sesi Cloud Shell asli Anda tidak lagi terbuka, Anda dapat kembali ke lingkungan dengan melakukan tindakan berikut:

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

  2. Dalam sesi Cloud Shell, jalankan perintah berikut:

    cd hello-custom-sample
    

Membuat endpoint

Untuk mendapatkan prediksi online dari model ML yang Anda latih saat mengikuti halaman sebelumnya pada tutorial ini, buat endpoint Vertex AI. Endpoint menyajikan prediksi online dari satu atau beberapa model.

  1. Di Konsol Google Cloud, di bagian Vertex AI, buka halaman Model.

    Buka Model

  2. Temukan baris model yang Anda latih di langkah sebelumnya pada tutorial ini, hello_custom, dan klik nama model untuk membuka halaman detail model.

  3. Pada tab Deploy & uji, klik Deploy ke endpoint untuk membuka panel Deploy ke endpoint.

  4. Pada langkah Menentukan endpoint, tambahkan beberapa informasi dasar untuk endpoint:

    1. Pilih Buat endpoint baru.

    2. Di kolom Nama endpoint, masukkan hello_custom.

    3. Di bagian Setelan model, pastikan Anda melihat nama model, yang juga disebut hello_custom. Tentukan setelan model berikut:

      1. Di kolom Pemisahan traffic, masukkan 100. Vertex AI mendukung pemisahan traffic untuk sebuah endpoint menjadi beberapa model, tetapi tutorial ini tidak menggunakan fitur tersebut.

      2. Di kolom Jumlah node komputasi minimum, masukkan 1.

      3. Dalam menu drop-down Jenis mesin, pilih n1-standard-2 dari bagian Standar.

      4. Klik Selesai.

    4. Di bagian Logging, pastikan kedua jenis logging prediksi diaktifkan.

    Klik Lanjutkan.

  5. Pada langkah Detail endpoint, konfirmasi bahwa endpoint Anda akan di-deploy ke us-central1 (Iowa).

    Jangan centang kotak Gunakan kunci enkripsi yang dikelola pelanggan (CMEK). Tutorial ini tidak menggunakan CMEK.

  6. Klik Deploy untuk membuat endpoint dan men-deploy model Anda ke endpoint.

Setelah beberapa menit, akan muncul di samping endpoint baru dalam tabel Endpoint. Pada saat yang sama, Anda juga akan menerima email yang menunjukkan bahwa Anda telah berhasil membuat endpoint dan men-deploy model ke endpoint.

Men-deploy Cloud Function

Anda bisa mendapatkan prediksi dari endpoint Vertex AI yang baru saja dibuat dengan mengirim permintaan ke antarmuka REST Vertex AI API. Namun, hanya akun utama dengan izin aiplatform.endpoints.predict yang dapat mengirim permintaan prediksi online. Anda tidak dapat membuat endpoint menjadi publik agar dapat dikirimi permintaan siapa pun, misalnya melalui aplikasi web.

Di bagian ini, deploy kode ke Cloud Functions untuk menangani permintaan yang tidak diautentikasi. Kode contoh yang Anda download saat membaca halaman pertama tutorial ini berisi kode untuk Cloud Function ini dalam direktori function/. Anda juga dapat menjalankan perintah berikut untuk mempelajari kode Cloud Function:

less function/main.py

Men-deploy fungsi memiliki fungsi berikut:

  • Anda dapat mengonfigurasi Cloud Function untuk menerima permintaan yang tidak diautentikasi. Selain itu, fungsi dijalankan menggunakan akun layanan dengan peran Editor secara default, yang menyertakan izin aiplatform.endpoints.predict yang diperlukan untuk mendapatkan prediksi dari endpoint Vertex AI Anda.

  • Fungsi ini juga melakukan pra-pemrosesan yang berguna terhadap permintaan. Endpoint Vertex AI mengharapkan permintaan prediksi dalam format lapisan pertama grafik TensorFlow Keras terlatih: tensor float yang dinormalisasi dengan dimensi tetap. Fungsi ini mengambil URL gambar sebagai input dan memproses gambar sebelumnya ke dalam format ini sebelum meminta prediksi dari endpoint Vertex AI.

Untuk men-deploy Cloud Function, lakukan hal berikut:

  1. Di konsol Google Cloud, di bagian Vertex AI, buka halaman Endpoint.

    Buka Endpoint

  2. Temukan baris endpoint yang Anda buat di bagian sebelumnya, yang bernama hello_custom. Di baris ini, klik Permintaan contoh untuk membuka panel Permintaan contoh.

  3. Di panel Permintaan contoh, temukan baris kode shell yang cocok dengan pola berikut:

    ENDPOINT_ID="ENDPOINT_ID"
    

    ENDPOINT_ID adalah angka yang mengidentifikasi endpoint khusus ini.

    Salin baris kode ini, lalu jalankan di sesi Cloud Shell Anda untuk menetapkan variabel ENDPOINT_ID.

  4. Jalankan perintah berikut dalam sesi Cloud Shell Anda untuk men-deploy Cloud Function:

    gcloud functions deploy classify_flower \
      --region=us-central1 \
      --source=function \
      --runtime=python37 \
      --memory=2048MB \
      --trigger-http \
      --allow-unauthenticated \
      --set-env-vars=ENDPOINT_ID=${ENDPOINT_ID}
    

Men-deploy aplikasi web untuk mengirim permintaan prediksi

Terakhir, hosting aplikasi web statis di Cloud Storage untuk mendapatkan prediksi dari model ML terlatih Anda. Aplikasi web mengirimkan permintaan ke Cloud Function Anda, yang melakukan pra-pemrosesan dan mendapatkan prediksi dari endpoint Vertex AI.

Direktori webapp kode contoh yang Anda download berisi aplikasi web contoh. Di sesi Cloud Shell Anda, jalankan perintah berikut untuk menyiapkan dan men-deploy aplikasi web:

  1. Tetapkan beberapa variabel shell untuk perintah dalam langkah berikut yang akan digunakan:

    PROJECT_ID=PROJECT_ID
    BUCKET_NAME=BUCKET_NAME
    

    Ganti kode berikut:

  2. Edit aplikasi untuk memberinya URL pemicu Cloud Function Anda:

    echo "export const CLOUD_FUNCTION_URL = 'https://us-central1-${PROJECT_ID}.cloudfunctions.net/classify_flower';" \
      > webapp/function-url.js
    
  3. Upload direktori webapp ke bucket Cloud Storage Anda:

    gsutil -m cp -r webapp gs://${BUCKET_NAME}/
    
  4. Buat file aplikasi web yang baru saja Anda upload dapat dibaca secara publik:

    gsutil -m acl ch -u AllUsers:R gs://${BUCKET_NAME}/webapp/**
    
  5. Sekarang Anda dapat membuka URL berikut untuk membuka aplikasi web dan mendapatkan prediksi:

    https://storage.googleapis.com/BUCKET_NAME/webapp/index.html
    

    Buka aplikasi web, lalu klik gambar bunga untuk melihat klasifikasi jenis bunga ML Anda. Aplikasi web menampilkan prediksi sebagai daftar jenis bunga dan probabilitas bahwa gambar berisi setiap jenis bunga.

Dalam screenshot berikut, aplikasi web telah mendapatkan satu prediksi dan sedang dalam proses mengirimkan permintaan prediksi lain.

Aplikasi web dengan empat gambar bunga berlabel. Satu memiliki probabilitas
      label yang diprediksi di bawahnya. Satu lagi memiliki kotak
pemuatan di bawahnya.

Langkah berikutnya

Ikuti halaman terakhir tutorial untuk membersihkan resource yang telah dibuat.