Menayangkan LLM yang skalabel di GKE menggunakan TorchServe


Tutorial ini menunjukkan cara menyajikan model machine learning (ML) PyTorch terlatih di cluster GKE menggunakan framework TorchServe. Model ML yang digunakan dalam tutorial ini menghasilkan prediksi berdasarkan permintaan pengguna. Anda dapat menggunakan informasi dalam tutorial ini untuk membantu men-deploy dan menyalurkan model Anda sendiri dalam skala besar di GKE.

Tentang aplikasi tutorial

Aplikasi ini adalah aplikasi web Python kecil yang dibuat menggunakan framework Fast Dash. Anda menggunakan aplikasi untuk mengirim permintaan prediksi ke model T5. Aplikasi ini menangkap input teks pengguna dan pasangan bahasa, serta mengirimkan informasi ke model. Model ini menerjemahkan teks dan menampilkan hasilnya ke aplikasi, yang menampilkan hasilnya kepada pengguna. Untuk mengetahui informasi selengkapnya tentang Fast Dash, lihat dokumentasi Fast Dash.

Cara kerjanya

Tutorial ini men-deploy workload di cluster GKE Autopilot. GKE mengelola sepenuhnya node Autopilot, yang mengurangi overhead administratif untuk konfigurasi, penskalaan, dan upgrade node. Saat Anda men-deploy beban kerja dan aplikasi ML pada mode Autopilot, GKE akan memilih jenis dan ukuran mesin dasar yang tepat untuk menjalankan workload. Untuk mengetahui informasi selengkapnya, lihat ringkasan Autopilot.

Setelah men-deploy model, Anda akan mendapatkan URL prediksi yang dapat digunakan aplikasi Anda untuk mengirim permintaan prediksi ke model. Metode ini memisahkan model dari aplikasi, sehingga memungkinkan model melakukan penskalaan secara terpisah dari aplikasi web.

Tujuan

  • Siapkan model T5 terlatih dari repositori Hugging Face untuk inferensi dengan mengemasnya sebagai image container dan mengirimkannya ke Artifact Registry
  • Men-deploy model ke cluster Autopilot
  • Men-deploy aplikasi Fast Dash yang berkomunikasi dengan model
  • Menskalakan model secara otomatis berdasarkan metrik Prometheus

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud 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, lihat Pembersihan.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Menginstal Google Cloud CLI.
  3. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  4. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Aktifkan API Kubernetes Engine, Cloud Storage, Artifact Registry, and Cloud Build:

    gcloud services enable container.googleapis.com storage.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
  7. Menginstal Google Cloud CLI.
  8. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  9. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  10. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  11. Aktifkan API Kubernetes Engine, Cloud Storage, Artifact Registry, and Cloud Build:

    gcloud services enable container.googleapis.com storage.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com

Menyiapkan lingkungan

Clone repositori contoh dan buka direktori tutorial:

git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
cd kubernetes-engine-samples/ai-ml/t5-model-serving

Membuat cluster

Jalankan perintah berikut:

gcloud container clusters create-auto ml-cluster \
    --release-channel=RELEASE_CHANNEL \
    --cluster-version=CLUSTER_VERSION \
    --location=us-central1

Ganti kode berikut:

  • RELEASE_CHANNEL: saluran rilis untuk cluster Anda. Harus salah satu dari rapid, regular, atau stable. Pilih saluran yang memiliki GKE versi 1.28.3-gke.1203000 atau yang lebih baru untuk menggunakan GPU L4. Untuk melihat versi yang tersedia di saluran tertentu, lihat Melihat versi default dan yang tersedia untuk saluran rilis.
  • CLUSTER_VERSION: versi GKE yang akan digunakan. Harus 1.28.3-gke.1203000 atau yang lebih baru.

Operasi ini perlu waktu beberapa menit sampai selesai.

Membuat repositori Artifact Registry

  1. Buat repositori standar Artifact Registry baru dengan format Docker di region yang sama dengan cluster Anda:

    gcloud artifacts repositories create models \
        --repository-format=docker \
        --location=us-central1 \
        --description="Repo for T5 serving image"
    
  2. Verifikasi nama repositori:

    gcloud artifacts repositories describe models \
        --location=us-central1
    

    Outputnya mirip dengan hal berikut ini:

    Encryption: Google-managed key
    Repository Size: 0.000MB
    createTime: '2023-06-14T15:48:35.267196Z'
    description: Repo for T5 serving image
    format: DOCKER
    mode: STANDARD_REPOSITORY
    name: projects/PROJECT_ID/locations/us-central1/repositories/models
    updateTime: '2023-06-14T15:48:35.267196Z'
    

Memaketkan model

Di bagian ini, Anda akan memaketkan model dan framework penayangan dalam satu image container menggunakan Cloud Build dan mengirim image yang dihasilkan ke repositori Artifact Registry.

  1. Tinjau Dockerfile untuk image container:

    # Copyright 2023 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     https://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    ARG BASE_IMAGE=pytorch/torchserve:0.7.1-cpu
    
    FROM alpine/git
    
    ARG MODEL_NAME=t5-small
    ARG MODEL_REPO=https://huggingface.co/${MODEL_NAME}
    ENV MODEL_NAME=${MODEL_NAME}
    ENV MODEL_VERSION=${MODEL_VERSION}
    
    RUN git clone "${MODEL_REPO}" /model
    
    FROM ${BASE_IMAGE}
    
    ARG MODEL_NAME=t5-small
    ARG MODEL_VERSION=1.0
    ENV MODEL_NAME=${MODEL_NAME}
    ENV MODEL_VERSION=${MODEL_VERSION}
    
    COPY --from=0 /model/. /home/model-server/
    COPY handler.py \
         model.py \
         requirements.txt \
         setup_config.json /home/model-server/
    
    RUN  torch-model-archiver \
         --model-name="${MODEL_NAME}" \
         --version="${MODEL_VERSION}" \
         --model-file="model.py" \
         --serialized-file="pytorch_model.bin" \
         --handler="handler.py" \
         --extra-files="config.json,spiece.model,tokenizer.json,setup_config.json" \
         --runtime="python" \
         --export-path="model-store" \
         --requirements-file="requirements.txt"
    
    FROM ${BASE_IMAGE}
    
    ENV PATH /home/model-server/.local/bin:$PATH
    ENV TS_CONFIG_FILE /home/model-server/config.properties
    # CPU inference will throw a warning cuda warning (not error)
    # Could not load dynamic library 'libnvinfer_plugin.so.7'
    # This is expected behaviour. see: https://stackoverflow.com/a/61137388
    ENV TF_CPP_MIN_LOG_LEVEL 2
    
    COPY --from=1 /home/model-server/model-store/ /home/model-server/model-store
    COPY config.properties /home/model-server/
    

    Dockerfile ini mendefinisikan proses build beberapa tahap berikut:

    1. Download artefak model dari repositori Hugging Face.
    2. Kemas model menggunakan alat PyTorch Serve Archive. Langkah ini akan membuat file arsip model (.mar) yang digunakan server inferensi untuk memuat model.
    3. Bangun gambar akhir dengan PyTorch Serve.
  2. Bangun dan kirim image menggunakan Cloud Build:

    gcloud builds submit model/ \
        --region=us-central1 \
        --config=model/cloudbuild.yaml \
        --substitutions=_LOCATION=us-central1,_MACHINE=gpu,_MODEL_NAME=t5-small,_MODEL_VERSION=1.0
    

    Proses build membutuhkan waktu beberapa menit. Jika Anda menggunakan ukuran model yang lebih besar dari t5-small, proses build mungkin memerlukan waktu jauh lebih lama.

  3. Pastikan image ada di repositori:

    gcloud artifacts docker images list us-central1-docker.pkg.dev/PROJECT_ID/models
    

    Ganti PROJECT_ID dengan project ID Google Cloud Anda.

    Outputnya mirip dengan hal berikut ini:

    IMAGE                                                     DIGEST         CREATE_TIME          UPDATE_TIME
    us-central1-docker.pkg.dev/PROJECT_ID/models/t5-small     sha256:0cd...  2023-06-14T12:06:38  2023-06-14T12:06:38
    

Men-deploy model terpaket ke GKE

Untuk men-deploy image, ubah manifes Kubernetes di repositori contoh agar sesuai dengan lingkungan Anda.

  1. Tinjau manifes untuk beban kerja inferensi:

    # Copyright 2023 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     https://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: t5-inference
      labels:
        model: t5
        version: v1.0
        machine: gpu
    spec:
      replicas: 1
      selector:
        matchLabels:
          model: t5
          version: v1.0
          machine: gpu
      template:
        metadata:
          labels:
            model: t5
            version: v1.0
            machine: gpu
        spec:
          nodeSelector:
            cloud.google.com/gke-accelerator: nvidia-l4
          securityContext:
            fsGroup: 1000
            runAsUser: 1000
            runAsGroup: 1000
          containers:
            - name: inference
              image: us-central1-docker.pkg.dev/PROJECT_ID/models/t5-small:1.0-gpu
              imagePullPolicy: IfNotPresent
              args: ["torchserve", "--start", "--foreground"]
              resources:
                limits:
                  nvidia.com/gpu: "1"
                  cpu: "3000m"
                  memory: 16Gi
                  ephemeral-storage: 10Gi
                requests:
                  nvidia.com/gpu: "1"
                  cpu: "3000m"
                  memory: 16Gi
                  ephemeral-storage: 10Gi
              ports:
                - containerPort: 8080
                  name: http
                - containerPort: 8081
                  name: management
                - containerPort: 8082
                  name: metrics
              readinessProbe:
                httpGet:
                  path: /ping
                  port: http
                initialDelaySeconds: 120
                failureThreshold: 10
              livenessProbe:
                httpGet:
                  path: /models/t5-small
                  port: management
                initialDelaySeconds: 150
                periodSeconds: 5
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: t5-inference
      labels:
        model: t5
        version: v1.0
        machine: gpu
    spec:
      type: ClusterIP
      selector:
        model: t5
        version: v1.0
        machine: gpu
      ports:
        - port: 8080
          name: http
          targetPort: http
        - port: 8081
          name: management
          targetPort: management
        - port: 8082
          name: metrics
          targetPort: metrics
    

  2. Ganti PROJECT_ID dengan ID project Google Cloud Anda:

    sed -i "s/PROJECT_ID/PROJECT_ID/g" "kubernetes/serving-gpu.yaml"
    

    Tindakan ini memastikan bahwa jalur image container dalam spesifikasi Deployment cocok dengan jalur ke image model T5 Anda di Artifact Registry.

  3. Buat resource Kubernetes:

    kubectl create -f kubernetes/serving-gpu.yaml
    

Untuk memverifikasi bahwa model berhasil di-deploy, lakukan hal berikut:

  1. Dapatkan status Deployment dan Service:

    kubectl get -f kubernetes/serving-gpu.yaml
    

    Tunggu hingga output menampilkan Pod yang sudah siap, seperti berikut. Bergantung pada ukuran gambar, pull gambar pertama mungkin memerlukan waktu beberapa menit.

    NAME                            READY   UP-TO-DATE    AVAILABLE   AGE
    deployment.apps/t5-inference    1/1     1             0           66s
    
    NAME                    TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)                       AGE
    service/t5-inference    ClusterIP   10.48.131.86    <none>        8080/TCP,8081/TCP,8082/TCP    66s
    
  2. Buka port lokal untuk Layanan t5-inference:

    kubectl port-forward svc/t5-inference 8080
    
  3. Buka jendela terminal baru dan kirim permintaan pengujian ke Service:

    curl -v -X POST -H 'Content-Type: application/json' -d '{"text": "this is a test sentence", "from": "en", "to": "fr"}' "http://localhost:8080/predictions/t5-small/1.0"
    

    Jika permintaan pengujian gagal dan koneksi Pod ditutup, periksa log:

    kubectl logs deployments/t5-inference
    

    Jika outputnya mirip dengan berikut ini, TorchServe gagal menginstal beberapa dependensi model:

    org.pytorch.serve.archive.model.ModelException: Custom pip package installation failed for t5-small
    

    Untuk mengatasi masalah ini, mulai ulang Deployment:

    kubectl rollout restart deployment t5-inference
    

    Pengontrol Deployment membuat Pod baru. Ulangi langkah sebelumnya untuk membuka port di Pod baru.

Mengakses model yang di-deploy menggunakan aplikasi web

  1. Bangun dan kirim aplikasi web Fast Dash sebagai image container di Artifact Registry:

    gcloud builds submit client-app/ \
        --region=us-central1 \
        --config=client-app/cloudbuild.yaml
    
  2. Buka kubernetes/application.yaml di editor teks dan ganti PROJECT_ID di kolom image: dengan project ID Anda. Atau, jalankan perintah berikut:

    sed -i "s/PROJECT_ID/PROJECT_ID/g" "kubernetes/application.yaml"
    
  3. Buat resource Kubernetes:

    kubectl create -f kubernetes/application.yaml
    

    Deployment dan Service mungkin memerlukan beberapa waktu untuk penyediaan penuh.

  4. Untuk memeriksa status, jalankan perintah berikut:

    kubectl get -f kubernetes/application.yaml
    

    Tunggu hingga output menampilkan Pod yang sudah siap, seperti berikut:

    NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/fastdash   1/1     1            0           1m
    
    NAME               TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    service/fastdash   NodePort   203.0.113.12    <none>        8050/TCP         1m
    
  5. Aplikasi web kini sedang berjalan, meskipun tidak diekspos pada alamat IP eksternal. Untuk mengakses aplikasi web, buka port lokal:

    kubectl port-forward service/fastdash 8050
    
  6. Di browser, buka antarmuka web:

    • Jika Anda menggunakan shell lokal, buka browser dan buka http://127.0.0.1:8050.
    • Jika Anda menggunakan Cloud Shell, klik Web preview lalu klik Change port. Tentukan port 8050.
  7. Untuk mengirim permintaan ke model T5, tentukan nilai di kolom TEXT, FROM LANG, dan TO LANG di antarmuka web, lalu klik Submit. Untuk daftar bahasa yang tersedia, lihat dokumentasi T5.

Mengaktifkan penskalaan otomatis untuk model

Bagian ini menunjukkan cara mengaktifkan penskalaan otomatis untuk model berdasarkan metrik dari Google Cloud Managed Service for Prometheus dengan melakukan hal berikut:

  1. Menginstal Adaptor Stackdriver Metrik Kustom
  2. Menerapkan konfigurasi PodMonitoring dan HorizontalPodAutoscaling

Google Cloud Managed Service for Prometheus diaktifkan secara default di cluster Autopilot yang menjalankan versi 1.25 dan yang lebih baru.

Menginstal Adaptor Stackdriver Metrik Kustom

Adaptor ini memungkinkan cluster Anda menggunakan metrik dari Prometheus untuk membuat keputusan penskalaan otomatis Kubernetes.

  1. Deploy adaptor:

    kubectl create -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
    
  2. Buat akun layanan IAM untuk digunakan adaptor:

    gcloud iam service-accounts create monitoring-viewer
    
  3. Beri akun layanan IAM peran monitoring.viewer pada project dan peran iam.workloadIdentityUser:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com" \
        --role roles/monitoring.viewer
    gcloud iam service-accounts add-iam-policy-binding monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[custom-metrics/custom-metrics-stackdriver-adapter]"
    

    Ganti PROJECT_ID dengan project ID Google Cloud Anda.

  4. Beri anotasi pada ServiceAccount Kubernetes adaptor agar dapat meniru akun layanan IAM:

    kubectl annotate serviceaccount custom-metrics-stackdriver-adapter \
        --namespace custom-metrics \
        iam.gke.io/gcp-service-account=monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com
    
  5. Mulai ulang adaptor untuk menerapkan perubahan:

    kubectl rollout restart deployment custom-metrics-stackdriver-adapter \
        --namespace=custom-metrics
    

Menerapkan konfigurasi PodMonitoring dan HorizontalPodAutoscaling

PodMonitoring adalah resource kustom Google Cloud Managed Service untuk Prometheus yang memungkinkan penyerapan metrik dan scraping target dalam namespace tertentu.

  1. Deploy resource PodMonitoring di namespace yang sama dengan Deployment TorchServe:

    kubectl apply -f kubernetes/pod-monitoring.yaml
    
  2. Tinjau manifes HorizontalPodAutoscaler:

    # Copyright 2023 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     https://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: t5-inference
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: t5-inference
      minReplicas: 1
      maxReplicas: 5
      metrics:
      - type: Pods
        pods:
          metric:
            name: prometheus.googleapis.com|ts_queue_latency_microseconds|counter
          target:
            type: AverageValue
            averageValue: "30000"
    

    HorizontalPodAutoscaler menskalakan jumlah Pod model T5 berdasarkan durasi kumulatif antrean permintaan. Penskalaan otomatis didasarkan pada metrik ts_queue_latency_microseconds, yang menunjukkan durasi antrean kumulatif dalam mikrodetik.

  3. Membuat HorizontalPodAutoscaler:

    kubectl apply -f kubernetes/hpa.yaml
    

Memverifikasi penskalaan otomatis menggunakan generator beban

Untuk menguji konfigurasi penskalaan otomatis Anda, buat beban untuk aplikasi penayangan. Tutorial ini menggunakan generator pemuatan Locust untuk mengirim permintaan ke endpoint prediksi model.

  1. Buat generator beban:

    kubectl apply -f kubernetes/loadgenerator.yaml
    

    Tunggu hingga Pod generator pemuatan selesai.

  2. Ekspos antarmuka web generator beban secara lokal:

    kubectl port-forward svc/loadgenerator 8080
    

    Jika Anda melihat pesan error, coba lagi saat Pod berjalan.

  3. Di browser, buka antarmuka web generator beban:

    • Jika Anda menggunakan shell lokal, buka browser, lalu buka http://127.0.0.1:8080.
    • Jika Anda menggunakan Cloud Shell, klik Web preview lalu klik Change port. Masukkan port 8080.
  4. Klik tab Diagram untuk mengamati performa dari waktu ke waktu.

  5. Buka jendela terminal baru dan lihat jumlah replika penskala otomatis Pod horizontal Anda:

    kubectl get hpa -w
    

    Jumlah replika meningkat seiring dengan bertambahnya beban. Peningkatan skala mungkin memerlukan waktu sekitar sepuluh menit. Saat replika baru dimulai, jumlah permintaan yang berhasil dalam diagram Locust akan meningkat.

    NAME           REFERENCE                 TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
    t5-inference   Deployment/t5-inference   71352001470m/7M   1         5        1           2m11s
    

Rekomendasi

  • Bangun model Anda dengan versi image Docker dasar yang sama dengan yang akan digunakan untuk inferensi.
  • Jika model Anda memiliki dependensi paket khusus, atau jika ukuran dependensi Anda besar, buat versi kustom image Docker dasar.
  • Lihat versi hierarki paket dependensi model Anda. Pastikan dependensi paket Anda mendukung versi satu sama lain. Misalnya, Panda versi 2.0.3 mendukung NumPy versi 1.20.3 dan yang lebih baru.
  • Menjalankan model intensif GPU di node GPU dan model yang menggunakan CPU secara intensif di CPU. Hal ini dapat meningkatkan stabilitas penyajian model dan memastikan Anda memakai resource node secara efisien.

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

    Menghapus project Google Cloud:

    gcloud projects delete PROJECT_ID

Menghapus setiap resource

  1. Menghapus resource Kubernetes:

    kubectl delete -f kubernetes/loadgenerator.yaml
    kubectl delete -f kubernetes/hpa.yaml
    kubectl delete -f kubernetes/pod-monitoring.yaml
    kubectl delete -f kubernetes/application.yaml
    kubectl delete -f kubernetes/serving-gpu.yaml
    kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
    
  2. Hapus cluster GKE:

    gcloud container clusters delete "ml-cluster" \
        --location="us-central1" --quiet
    
  3. Hapus akun layanan IAM dan binding kebijakan IAM:

    gcloud projects remove-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com" \
        --role roles/monitoring.viewer
    gcloud iam service-accounts remove-iam-policy-binding monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[custom-metrics/custom-metrics-stackdriver-adapter]"
    gcloud iam service-accounts delete monitoring-viewer
    
  4. Hapus image di Artifact Registry. Jika ingin, hapus seluruh repositori. Untuk mengetahui petunjuknya, lihat dokumentasi Artifact Registry tentang Menghapus image.

Ringkasan komponen

Bagian ini menjelaskan komponen yang digunakan dalam tutorial ini, seperti model, aplikasi web, framework, dan cluster.

Tentang model T5

Tutorial ini menggunakan model T5 multibahasa terlatih. T5 adalah transformer teks-ke-teks yang mengonversi teks dari satu bahasa ke bahasa lain. Di T5, input dan output selalu berupa string teks, berbeda dengan model bergaya BERT yang hanya dapat menghasilkan label class atau span input. Model T5 juga dapat digunakan untuk tugas-tugas seperti perangkuman, tanya jawab, atau klasifikasi teks. Model ini dilatih dengan sejumlah besar teks dari Colossal Clean Crawled Corpus (C4) dan Wiki-DPR.

Untuk informasi selengkapnya, lihat dokumentasi model T5.

Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, dan Peter J. Liu mempresentasikan model T5 dalam Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, yang dipublikasikan di Journal of Machine Learning Research.

Model T5 mendukung berbagai ukuran model, dengan berbagai tingkat kompleksitas yang sesuai dengan kasus penggunaan tertentu. Tutorial ini menggunakan ukuran default, t5-small, tetapi Anda juga dapat memilih ukuran lain. Ukuran T5 berikut didistribusikan berdasarkan lisensi Apache 2.0:

  • t5-small: 60 juta parameter
  • t5-base: 220 juta parameter
  • t5-large: 770 juta parameter. Download 3 GB.
  • t5-3b: 3 miliar parameter. Download 11 GB.
  • t5-11b: 11 miliar parameter. Download 45 GB.

Untuk model T5 lain yang tersedia, lihat repositori Wajah Melebarkan.

Tentang TorchServe

TorchServe adalah alat fleksibel untuk menyajikan model PyTorch. Library ini memberikan dukungan siap pakai untuk semua framework deep learning utama, termasuk PyTorch, TensorFlow, dan ONNX. TorchServe dapat digunakan untuk men-deploy model dalam produksi, atau untuk pembuatan prototipe dan eksperimen yang cepat.

Langkah selanjutnya