Membuat embedding dengan model transformer dalam format ONNX

Tutorial ini menunjukkan cara mengekspor model transformer ke format Open Neural Network Exchange (ONNX), mengimpor model ONNX ke dalam set data BigQuery, lalu menggunakan model tersebut untuk membuat embedding dari kueri SQL.

Tutorial ini menggunakan model sentence-transformers/all-MiniLM-L6-v2. Model transformer kalimat ini dikenal karena performanya yang cepat dan efektif dalam membuat embedding kalimat. Embedding kalimat memungkinkan tugas seperti penelusuran semantik, pengelompokan, dan kemiripan kalimat dengan menangkap makna dasar teks.

ONNX menyediakan format seragam yang dirancang untuk merepresentasikan framework machine learning (ML) apa pun. Dengan dukungan ML BigQuery untuk ONNX, Anda dapat melakukan hal berikut:

  • Melatih model menggunakan framework favorit Anda.
  • Mengonversi model ke format model ONNX.
  • Impor model ONNX ke BigQuery dan buat prediksi menggunakan BigQuery ML.

Tujuan

Biaya

Di dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the BigQuery and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  6. Pastikan Anda memiliki izin yang diperlukan untuk melakukan tugas dalam dokumen ini.
  7. Peran yang diperlukan

    Jika membuat project baru, Anda adalah pemilik project, dan Anda diberi semua izin Identity and Access Management (IAM) yang diperlukan untuk menyelesaikan tutorial ini.

    Jika Anda menggunakan project yang sudah ada, lakukan hal berikut.

    Make sure that you have the following role or roles on the project:

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Buka IAM
    2. Pilih project.
    3. Klik Grant access.
    4. Di kolom New principals, masukkan ID pengguna Anda. ID pengguna biasanya adalah alamat email untuk Akun Google.

    5. Di daftar Select a role, pilih peran.
    6. Untuk memberikan peran tambahan, klik Add another role, lalu tambahkan setiap peran tambahan.
    7. Klik Save.
    8. Untuk mengetahui informasi selengkapnya tentang izin IAM di BigQuery, lihat Izin IAM.

      Mengonversi file model transformer ke ONNX

      Jika ingin, Anda dapat mengikuti langkah-langkah di bagian ini untuk mengonversi model dan tokenizer sentence-transformers/all-MiniLM-L6-v2 ke ONNX secara manual. Atau, Anda dapat menggunakan contoh file dari bucket Cloud Storage gs://cloud-samples-data publik yang telah dikonversi.

      Jika memilih untuk mengonversi file secara manual, Anda harus memiliki lingkungan command line lokal yang telah menginstal Python. Untuk mengetahui informasi selengkapnya tentang cara menginstal Python, lihat download Python.

      Mengekspor model transformer ke ONNX

      Gunakan CLI Hugging Face Optimum untuk mengekspor model sentence-transformers/all-MiniLM-L6-v2 ke ONNX. Untuk mengetahui informasi selengkapnya tentang cara mengekspor model dengan Optimum CLI, lihat Mengekspor model ke ONNX dengan optimum.exporters.onnx.

      Untuk mengekspor model, buka lingkungan command line dan ikuti langkah-langkah berikut:

      1. Instal Optimum CLI:

        pip install optimum[onnx]
        
      2. Mengekspor model. Argumen --model menentukan ID model Hugging Face. Argumen --opset menentukan versi library ONNXRuntime, dan ditetapkan ke 17 untuk mempertahankan kompatibilitas dengan library ONNXRuntime yang didukung oleh BigQuery.

        optimum-cli export onnx \
          --model sentence-transformers/all-MiniLM-L6-v2 \
          --task sentence-similarity \
          --opset 17 all-MiniLM-L6-v2/
        

      File model diekspor ke direktori all-MiniLM-L6-v2 sebagai model.onnx.

      Menerapkan kuantisasi pada model transformer

      Gunakan Optimum CLI untuk menerapkan kuantisasi pada model transformer yang diekspor guna mengurangi ukuran model dan mempercepat inferensi. Untuk mengetahui informasi selengkapnya, lihat Kuantisasi.

      Untuk menerapkan kuantisasi ke model, jalankan perintah berikut di command line:

      optimum-cli onnxruntime quantize \
        --onnx_model all-MiniLM-L6-v2/ \
        --avx512_vnni -o all-MiniLM-L6-v2_quantized
      

      File model yang dikuantisasi diekspor ke direktori all-MiniLM-L6-v2_quantized sebagai model_quantized.onnx.

      Mengonversi tokenizer ke ONNX

      Untuk membuat embedding menggunakan model transformer dalam format ONNX, Anda biasanya menggunakan tokenizer untuk menghasilkan dua input ke model, input_ids dan attention_mask.

      Untuk menghasilkan input ini, konversi tokenizer untuk model sentence-transformers/all-MiniLM-L6-v2 ke format ONNX menggunakan library onnxruntime-extensions. Setelah mengonversi tokenizer, Anda dapat melakukan tokenisasi langsung pada input teks mentah untuk membuat prediksi ONNX.

      Untuk mengonversi tokenizer, ikuti langkah-langkah berikut di command line:

      1. Instal Optimum CLI:

        pip install optimum[onnx]
        
      2. Dengan menggunakan editor teks pilihan Anda, buat file bernama convert-tokenizer.py. Contoh berikut menggunakan editor teks nano:

        nano convert-tokenizer.py
        
      3. Salin dan tempel skrip Python berikut ke dalam file convert-tokenizer.py:

        from onnxruntime_extensions import gen_processing_models
        
        # Load the Huggingface tokenizer
        tokenizer = AutoTokenizer.from_pretrained("sentence-transformers/all-MiniLM-L6-v2")
        
        # Export the tokenizer to ONNX using gen_processing_models
        onnx_tokenizer_path = "tokenizer.onnx"
        
        # Generate the tokenizer ONNX model, and set the maximum token length.
        # Ensure 'max_length' is set to a value less than the model's maximum sequence length, failing to do so will result in error during inference.
        tokenizer_onnx_model = gen_processing_models(tokenizer, pre_kwargs={'max_length': 256})[0]
        
        # Modify the tokenizer ONNX model signature.
        # This is because certain tokenizers don't support batch inference.
        tokenizer_onnx_model.graph.input[0].type.tensor_type.shape.dim[0].dim_value = 1
        
        # Save the tokenizer ONNX model
        with open(onnx_tokenizer_path, "wb") as f:
          f.write(tokenizer_onnx_model.SerializeToString())
        
      4. Simpan file convert-tokenizer.py.

      5. Jalankan skrip Python untuk mengonversi tokenizer:

        python convert-tokenizer.py
        

      Tokenizer yang dikonversi diekspor ke direktori all-MiniLM-L6-v2_quantized sebagai tokenizer.onnx.

      Mengupload file model yang dikonversi ke Cloud Storage

      Setelah Anda mengonversi model transformer dan tokenizer, lakukan langkah-langkah berikut:

      Membuat set data

      Buat set data BigQuery untuk menyimpan model ML Anda.

      Konsol

      1. Di konsol Google Cloud , buka halaman BigQuery.

        Buka halaman BigQuery

      2. Di panel Explorer, klik nama project Anda.

      3. Klik View actions > Create dataset.

      4. Di halaman Create dataset, lakukan hal berikut:

        • Untuk Dataset ID, masukkan bqml_tutorial.

        • Untuk Location type, pilih Multi-region, lalu pilih US (multiple regions in United States).

        • Jangan ubah setelan default yang tersisa, lalu klik Create dataset.

      bq

      Untuk membuat set data baru, gunakan perintah bq mk dengan flag --location. Untuk daftar lengkap kemungkinan parameter, lihat referensi perintah bq mk --dataset.

      1. Buat set data bernama bqml_tutorial dengan lokasi data yang ditetapkan ke US dan deskripsi BigQuery ML tutorial dataset:

        bq --location=US mk -d \
         --description "BigQuery ML tutorial dataset." \
         bqml_tutorial

        Perintah ini menggunakan pintasan -d, bukan flag --dataset. Jika Anda menghapus -d dan --dataset, perintah defaultnya adalah membuat set data.

      2. Pastikan set data telah dibuat:

        bq ls

      API

      Panggil metode datasets.insert dengan resource set data yang ditentukan.

      {
        "datasetReference": {
           "datasetId": "bqml_tutorial"
        }
      }

      BigQuery DataFrames

      Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.

      Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.

      import google.cloud.bigquery
      
      bqclient = google.cloud.bigquery.Client()
      bqclient.create_dataset("bqml_tutorial", exists_ok=True)

      Mengimpor model ONNX ke BigQuery

      Impor model tokenizer yang dikonversi dan model sentence transformer sebagai model BigQuery ML.

      Pilih salah satu opsi berikut:

      Konsol

      1. Di konsol Google Cloud , buka BigQuery Studio.

        Buka BigQuery Studio

      2. Di editor kueri, jalankan pernyataan CREATE MODEL berikut untuk membuat model tokenizer.

         CREATE OR REPLACE MODEL `bqml_tutorial.tokenizer`
          OPTIONS (MODEL_TYPE='ONNX',
           MODEL_PATH='TOKENIZER_BUCKET_PATH')

        Ganti TOKENIZER_BUCKET_PATH dengan jalur ke model yang Anda upload ke Cloud Storage. Jika Anda menggunakan model sampel, ganti TOKENIZER_BUCKET_PATH dengan nilai berikut: gs://cloud-samples-data/bigquery/ml/onnx/all-MiniLM-L6-v2/tokenizer.onnx.

        Setelah operasi selesai, Anda akan melihat pesan yang mirip dengan berikut: Successfully created model named tokenizer di panel Query results.

      3. Klik Go to model untuk membuka panel Details.

      4. Tinjau bagian Kolom Fitur untuk melihat input model dan Kolom Label untuk melihat output model.

        Panel **Detail** untuk `model tokenizer

      5. Di editor kueri, jalankan pernyataan CREATE MODEL berikut untuk membuat model all-MiniLM-L6-v2.

         CREATE OR REPLACE MODEL `bqml_tutorial.all-MiniLM-L6-v2`
          OPTIONS (MODEL_TYPE='ONNX',
           MODEL_PATH='TRANSFORMER_BUCKET_PATH')

        Ganti TRANSFORMER_BUCKET_PATH dengan jalur ke model yang Anda upload ke Cloud Storage. Jika Anda menggunakan model sampel, ganti TRANSFORMER_BUCKET_PATH dengan nilai berikut: gs://cloud-samples-data/bigquery/ml/onnx/all-MiniLM-L6-v2/model_quantized.onnx.

        Setelah operasi selesai, Anda akan melihat pesan yang mirip dengan berikut: Successfully created model named all-MiniLM-L6-v2 di panel Query results.

      6. Klik Go to model untuk membuka panel Details.

      7. Tinjau bagian Kolom Fitur untuk melihat input model dan Kolom Label untuk melihat output model.

        Panel **Detail** untuk model `all-MiniLM-L6-v2`

      bq

      Gunakan perintah query alat command line bq untuk menjalankan pernyataan CREATE MODEL.

      1. Pada command line, jalankan perintah berikut untuk membuat model tokenizer.

        bq query --use_legacy_sql=false \
        "CREATE OR REPLACE MODEL
        `bqml_tutorial.tokenizer`
        OPTIONS
        (MODEL_TYPE='ONNX',
        MODEL_PATH='TOKENIZER_BUCKET_PATH')"

        Ganti TOKENIZER_BUCKET_PATH dengan jalur ke model yang Anda upload ke Cloud Storage. Jika Anda menggunakan model sampel, ganti TOKENIZER_BUCKET_PATH dengan nilai berikut: gs://cloud-samples-data/bigquery/ml/onnx/all-MiniLM-L6-v2/tokenizer.onnx.

        Setelah operasi selesai, Anda akan melihat pesan yang mirip dengan berikut: Successfully created model named tokenizer.

      2. Pada command line, jalankan perintah berikut untuk membuat model all-MiniLM-L6-v2.

        bq query --use_legacy_sql=false \
        "CREATE OR REPLACE MODEL
        `bqml_tutorial.all-MiniLM-L6-v2`
        OPTIONS
        (MODEL_TYPE='ONNX',
          MODEL_PATH='TRANSFORMER_BUCKET_PATH')"

        Ganti TRANSFORMER_BUCKET_PATH dengan jalur ke model yang Anda upload ke Cloud Storage. Jika Anda menggunakan model sampel, ganti TRANSFORMER_BUCKET_PATH dengan nilai berikut: gs://cloud-samples-data/bigquery/ml/onnx/all-MiniLM-L6-v2/model_quantized.onnx.

        Setelah operasi selesai, Anda akan melihat pesan yang mirip dengan berikut: Successfully created model named all-MiniLM-L6-v2.

      3. Setelah mengimpor model, verifikasi bahwa model muncul di set data.

        bq ls -m bqml_tutorial

        Outputnya mirip dengan hal berikut ini:

        tableId            Type
        ------------------------
        tokenizer          MODEL
        all-MiniLM-L6-v2   MODEL

      API

      Gunakan metode jobs.insert untuk mengimpor model.Isi parameter query dari resource QueryRequest di isi permintaan dengan pernyataan CREATE MODEL.

      1. Gunakan nilai parameter query berikut untuk membuat model tokenizer.

        {
        "query": "CREATE MODEL `PROJECT_ID :bqml_tutorial.tokenizer` OPTIONS(MODEL_TYPE='ONNX' MODEL_PATH='TOKENIZER_BUCKET_PATH')"
        }

        Ganti kode berikut:

        • PROJECT_ID dengan ID project Anda.
        • TOKENIZER_BUCKET_PATH dengan jalur ke model yang Anda upload ke Cloud Storage. Jika Anda menggunakan model sampel, ganti TOKENIZER_BUCKET_PATH dengan nilai berikut: gs://cloud-samples-data/bigquery/ml/onnx/all-MiniLM-L6-v2/tokenizer.onnx.
      2. Gunakan nilai parameter query berikut untuk membuat model all-MiniLM-L6-v2.

        {
        "query": "CREATE MODEL `PROJECT_ID :bqml_tutorial.all-MiniLM-L6-v2` OPTIONS(MODEL_TYPE='ONNX' MODEL_PATH='TRANSFORMER_BUCKET_PATH')"
        }

        Ganti kode berikut:

        • PROJECT_ID dengan ID project Anda.
        • TRANSFORMER_BUCKET_PATH dengan jalur ke model yang Anda upload ke Cloud Storage. Jika Anda menggunakan model sampel, ganti TRANSFORMER_BUCKET_PATH dengan nilai berikut: gs://cloud-samples-data/bigquery/ml/onnx/all-MiniLM-L6-v2/model_quantized.onnx.

      BigQuery DataFrames

      Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.

      Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.

      Impor model tokenizer dan sentence transformer menggunakan objek ONNXModel.

      import bigframes
      from bigframes.ml.imported import ONNXModel
      
      bigframes.options.bigquery.project = PROJECT_ID
      
      bigframes.options.bigquery.location = "US"
      
      tokenizer = ONNXModel(
        model_path= "TOKENIZER_BUCKET_PATH"
      )
      imported_onnx_model = ONNXModel(
        model_path="TRANSFORMER_BUCKET_PATH"
      )

      Ganti kode berikut:

      • PROJECT_ID dengan ID project Anda.
      • TOKENIZER_BUCKET_PATH dengan jalur ke model yang Anda upload ke Cloud Storage. Jika Anda menggunakan model sampel, ganti TOKENIZER_BUCKET_PATH dengan nilai berikut: gs://cloud-samples-data/bigquery/ml/onnx/all-MiniLM-L6-v2/tokenizer.onnx.
      • TRANSFORMER_BUCKET_PATH dengan jalur ke model yang Anda upload ke Cloud Storage. Jika Anda menggunakan model sampel, ganti TRANSFORMER_BUCKET_PATH dengan nilai berikut: gs://cloud-samples-data/bigquery/ml/onnx/all-MiniLM-L6-v2/model_quantized.onnx.

      Membuat embedding dengan model ONNX yang diimpor

      Gunakan model tokenizer dan sentence transformer yang diimpor untuk membuat embedding berdasarkan data dari set data publik.bigquery-public-data.imdb.reviews

      Pilih salah satu opsi berikut:

      Konsol

      Gunakan fungsi ML.PREDICT untuk membuat embedding dengan model.

      Kueri menggunakan panggilan ML.PREDICT bertingkat, untuk memproses teks mentah secara langsung melalui tokenizer dan model embedding, sebagai berikut:

      • Tokenisasi (kueri dalam): panggilan ML.PREDICT dalam menggunakan model bqml_tutorial.tokenizer. Fungsi ini mengambil kolom title dari set data publik bigquery-public-data.imdb.reviews sebagai input text-nya. Model tokenizer mengonversi string teks mentah menjadi input token numerik yang diperlukan model utama, termasuk input input_ids dan attention_mask.
      • Pembuatan embedding (kueri luar): panggilan ML.PREDICT luar menggunakan model bqml_tutorial.all-MiniLM-L6-v2. Kueri mengambil kolom input_ids dan attention_mask dari output kueri dalam sebagai inputnya.

      Pernyataan SELECT mengambil kolom sentence_embedding, yang merupakan array nilai FLOAT yang merepresentasikan sematan semantik teks.

      1. Di konsol Google Cloud , buka BigQuery Studio.

        Buka BigQuery Studio

      2. Di editor kueri, jalankan kueri berikut.

        SELECT
        sentence_embedding
        FROM
        ML.PREDICT (MODEL `bqml_tutorial.all-MiniLM-L6-v2`,
          (
          SELECT
            input_ids, attention_mask
          FROM
            ML.PREDICT(MODEL `bqml_tutorial.tokenizer`,
              (
              SELECT
                title AS text
              FROM
                `bigquery-public-data.imdb.reviews` limit 10))))

        Hasilnya mirip dengan berikut ini:

        +-----------------------+
        | sentence_embedding    |
        +-----------------------+
        | -0.02361682802438736  |
        | 0.02025664784014225   |
        | 0.005168713629245758  |
        | -0.026361213997006416 |
        | 0.0655381828546524    |
        | ...                   |
        +-----------------------+
        

      bq

      Gunakan perintah query alat command line bq untuk menjalankan kueri. Kueri menggunakan fungsi ML.PREDICT untuk membuat embedding dengan model.

      Kueri menggunakan panggilan ML.PREDICT bertingkat, untuk memproses teks mentah secara langsung melalui tokenizer dan model embedding, sebagai berikut:

      • Tokenisasi (kueri dalam): panggilan ML.PREDICT dalam menggunakan model bqml_tutorial.tokenizer. Fungsi ini mengambil kolom title dari set data publik bigquery-public-data.imdb.reviews sebagai input text-nya. Model tokenizer mengonversi string teks mentah menjadi input token numerik yang diperlukan model utama, termasuk input input_ids dan attention_mask.
      • Pembuatan embedding (kueri luar): panggilan ML.PREDICT luar menggunakan model bqml_tutorial.all-MiniLM-L6-v2. Kueri mengambil kolom input_ids dan attention_mask dari output kueri dalam sebagai inputnya.

      Pernyataan SELECT mengambil kolom sentence_embedding, yang merupakan array nilai FLOAT yang merepresentasikan sematan semantik teks.

      Pada command line, jalankan perintah berikut untuk menjalankan kueri.

      bq query --use_legacy_sql=false \
      'SELECT
      sentence_embedding
      FROM
      ML.PREDICT (MODEL `bqml_tutorial.all-MiniLM-L6-v2`,
        (
        SELECT
          input_ids, attention_mask
        FROM
          ML.PREDICT(MODEL `bqml_tutorial.tokenizer`,
            (
            SELECT
              title AS text
            FROM
              `bigquery-public-data.imdb.reviews` limit 10))))'

      Hasilnya mirip dengan berikut ini:

      +-----------------------+
      | sentence_embedding    |
      +-----------------------+
      | -0.02361682802438736  |
      | 0.02025664784014225   |
      | 0.005168713629245758  |
      | -0.026361213997006416 |
      | 0.0655381828546524    |
      | ...                   |
      +-----------------------+
      

      BigQuery DataFrames

      Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.

      Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.

      Gunakan metode predict untuk membuat embedding menggunakan model ONNX.

      import bigframes.pandas as bpd
      
      df = bpd.read_gbq("bigquery-public-data.imdb.reviews", max_results=10)
      df_pred = df.rename(columns={"title": "text"})
      tokens = tokenizer.predict(df_pred)
      predictions = imported_onnx_model.predict(tokens)
      predictions.peek(5)
      

      Outputnya mirip dengan hal berikut ini:

      Output dari model transformer.

      Pembersihan

      Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

      Menghapus project

      Konsol

      1. In the Google Cloud console, go to the Manage resources page.

        Go to Manage resources

      2. In the project list, select the project that you want to delete, and then click Delete.
      3. In the dialog, type the project ID, and then click Shut down to delete the project.

      gcloud

      1. In the Google Cloud console, go to the Manage resources page.

        Go to Manage resources

      2. In the project list, select the project that you want to delete, and then click Delete.
      3. In the dialog, type the project ID, and then click Shut down to delete the project.

      Menghapus resource satu per satu

      Atau, untuk menghapus setiap resource yang digunakan dalam tutorial ini, lakukan langkah-langkah berikut:

      1. Hapus model yang diimpor.

      2. Opsional: Hapus set data.

      Langkah berikutnya