All Products
Search
Document Center

Function Compute:Praktik terbaik untuk AI

Last Updated:Jul 06, 2025

Anda dapat menerapkan praktik terbaik untuk instans yang dipercepat GPU menggunakan konsol Function Compute, SDK, atau Serverless Devs. Topik ini menjelaskan cara menggunakan Serverless Devs dan konsol Function Compute untuk memproses gambar mentah dengan kode fungsi guna melakukan sintesis gaya dan deteksi objek. Python digunakan sebagai contoh dalam topik ini.

Skenario dan manfaat

Berbagai masalah sering muncul pada infrastruktur GPU tradisional untuk aplikasi AI, seperti siklus konstruksi yang panjang, kompleksitas O&M tinggi, pemanfaatan kluster rendah, dan biaya tinggi. Instans yang dipercepat GPU dari Function Compute menyerahkan masalah-masalah tersebut kepada penyedia layanan cloud, sehingga Anda dapat fokus pada bisnis tanpa khawatir tentang infrastruktur GPU yang mendasarinya.

Bagian ini menjelaskan manfaat instans yang dipercepat GPU dibandingkan dengan instans tanpa percepatan GPU di Function Compute:

  • Skenario aplikasi AI yang mengutamakan biaya

    • Cadangkan instans yang dipercepat GPU sesuai kebutuhan bisnis. Dengan demikian, instans yang dipercepat GPU dari Function Compute menawarkan efisiensi biaya lebih tinggi daripada kluster GPU yang dibangun sendiri.

    • Gunakan sumber daya GPU dalam mode 1/2 atau eksklusif melalui teknologi virtualisasi GPU, sehingga instans yang dipercepat GPU dapat dikonfigurasi secara halus.

  • Skenario aplikasi AI yang mengutamakan efisiensi

    • Fokus pada pengembangan kode dan tujuan bisnis tanpa perlu melakukan O&M pada kluster GPU, seperti manajemen versi driver dan CUDA, manajemen operasi mesin, serta manajemen GPU yang rusak.

Untuk informasi lebih lanjut tentang instans yang dipercepat GPU, lihat Jenis Instans dan Mode Instans.

Tutorial untuk transfer gaya neural

Transfer gaya neural (NST) adalah teknologi yang digunakan untuk menggabungkan dua gambar. Selama proses ini, konten diekstraksi dari satu gambar dan gaya diekstraksi dari gambar lainnya untuk membuat gambar baru. Pada contoh berikut, model preset TensorFlow Hub digunakan untuk menyelesaikan sintesis gaya gambar.

Efek Sintesis

Gambar konten

Gambar gaya

Gambar hasil sintesis

tensorflow_example_dog

tensorflow_example_style_dog

tensorflow_example_result_dog

Before you start

  • Persiapan Umum

    • Untuk pengalaman pengguna terbaik, bergabunglah dengan grup DingTalk (ID 11721331) dan berikan informasi berikut:

      • Nama organisasi, seperti nama perusahaan Anda.

      • ID akun Alibaba Cloud Anda.

      • Wilayah tempat Anda ingin menggunakan instans yang dipercepat GPU, seperti Tiongkok (Shenzhen).

      • Informasi kontak, seperti nomor ponsel, alamat email, atau akun DingTalk Anda.

    • Unggah sumber daya audio dan video yang ingin diproses ke Bucket Object Storage Service (OSS) di wilayah tempat instans yang dipercepat GPU berada. Pastikan Anda memiliki izin baca dan tulis pada objek di bucket. Untuk informasi lebih lanjut tentang cara mengunggah sumber daya audio dan video, lihat Unggah Objek. Untuk informasi lebih lanjut tentang izin, lihat Ubah ACL Bucket.

  • Penyebaran Aplikasi GPU Menggunakan Serverless Devs

Use Serverless Devs to deploy GPU applications

  1. Buat proyek.

    s init devsapp/start-fc-custom-container-event-python3.9 -d fc-gpu-prj

    Kode sampel berikut menunjukkan direktori proyek yang dibuat:

    fc-gpu-prj
    ├── code
    │   ├── app.py        # Kode fungsi.
    │   └── Dockerfile    # Dockerfile: Image Dockerfile yang berisi kode.
    ├── README.md
    └── s.yaml            # Konfigurasi proyek, yang menentukan bagaimana image diterapkan di Function Compute
  2. Masuk ke direktori proyek.

    cd fc-gpu-prj
  3. Ubah konfigurasi file direktori berdasarkan kebutuhan bisnis Anda.

    • Edit file s.yaml.

      Untuk informasi lebih lanjut tentang parameter dalam file YAML, lihat Spesifikasi YAML.

      edition: 1.0.0
      name: container-demo
      access: default
      vars:
        region: cn-shenzhen
      services:
        customContainer-demo:
          component: devsapp/fc
          props:
            region: ${vars.region}
            service:
              name: tgpu_tf_service
              internetAccess: true
            function:
              name: tgpu_tf_func
              description: test gpu for tensorflow
              handler: not-used
              timeout: 600
              caPort: 9000
              instanceType: fc.gpu.tesla.1
              gpuMemorySize: 8192
              cpu: 4
              memorySize: 16384
              diskSize: 512
              runtime: custom-container
              customContainerConfig:
                #1. Pastikan bahwa namespace:demo namespace dan repo:gpu-tf-style-transfer_s repositori telah dibuat sebelumnya di Alibaba Cloud Container Registry.
                #2. Ubah tag dari v0.1 menjadi v0.2 saat Anda memperbarui fungsi dan jalankan s build && s deploy lagi.
                image: registry.cn-shenzhen.aliyuncs.com/demo/gpu-tf-style-transfer_s:v0.1
              codeUri: ./code
            triggers:
              - name: httpTrigger
                type: http
                config:
                  authType: anonymous
                  methods:
                    - GET
    • Edit file app.py.

      Contoh:

      # -*- coding: utf-8 -*-
      # python2 and python3
      from __future__ import print_function
      from http.server import HTTPServer, BaseHTTPRequestHandler
      from tensorflow import keras
      from tensorflow.keras import layers
      from tensorflow.keras.models import Sequential
      import json
      import sys
      import logging
      import os
      import matplotlib.pyplot as plt
      import matplotlib as mpl
      import numpy as np
      import os
      import PIL
      import tensorflow as tf
      import pathlib
      import urllib.request
      import random
      
      class Resquest(BaseHTTPRequestHandler):
          def upload(self, url, path):
              print("enter upload:", url)
              headers = {
                  'Content-Type': 'application/octet-stream',
                  'Content-Length': os.stat(path).st_size,
              }
              req = urllib.request.Request(url, open(path, 'rb'), headers=headers, method='PUT')
              urllib.request.urlopen(req)
      
          def tensor_to_image(self, tensor):
              tensor = tensor*255
              tensor = np.array(tensor, dtype=np.uint8)
              if np.ndim(tensor)>3:
                  assert tensor.shape[0] == 1
                  tensor = tensor[0]
              return PIL.Image.fromarray(tensor)
      
          def load_img(self, path_to_img):
              max_dim = 512
              img = tf.io.read_file(path_to_img)
              img = tf.image.decode_image(img, channels=3)
              img = tf.image.convert_image_dtype(img, tf.float32)
      
              shape = tf.cast(tf.shape(img)[:-1], tf.float32)
              long_dim = max(shape)
              scale = max_dim / long_dim
      
              new_shape = tf.cast(shape * scale, tf.int32)
      
              img = tf.image.resize(img, new_shape)
              img = img[tf.newaxis, :]
              return img
      
          def do_style_transfer(self):
              mpl.rcParams['figure.figsize'] = (12,12)
              mpl.rcParams['axes.grid'] = False
      
              # Gunakan jalur objek Object Storage Service (OSS) di akun Alibaba Cloud Anda. Anda harus memiliki izin baca dan tulis pada objek tersebut.
              # Baca gambar konten dan gaya dari bucket OSS Anda.
              content_path = tf.keras.utils.get_file(str(random.randint(0,100000000)) + ".jpg", 'https://your_public_oss/c1.png')
              style_path = tf.keras.utils.get_file(str(random.randint(0,100000000)) + ".jpg",'https://your_public_oss/c2.png')
      
              content_image = self.load_img(content_path)
              style_image = self.load_img(style_path)
              print("load image ok")
      
              import tensorflow_hub as hub
              hub_model = hub.load('https://hub.tensorflow.google.cn/google/magenta/arbitrary-image-stylization-v1-256/2')
              # Anda dapat mengemas model hub ke dalam gambar untuk dimuat untuk mempercepat pemrosesan.
              #hub_model = hub.load('/usr/src/app/style_transfer_model')
              stylized_image = hub_model(tf.constant(content_image), tf.constant(style_image))[0]
              print("load model ok")
      
              path = "/tmp/" + str(random.randint(0,100000000)) + ".png"
              self.tensor_to_image(stylized_image).save(path)
              print("generate stylized image ok")
      
              # Gunakan jalur objek Object Storage Service (OSS) di akun Alibaba Cloud Anda. Anda harus memiliki izin baca dan tulis pada objek tersebut.
              # Simpan gambar hasil sintesis ke bucket OSS.
              self.upload("https://your_public_oss/stylized-image.png" ,path)
              return "transfer ok"
      
          def style_transfer(self):
              msg = self.do_style_transfer()
              data = {"result": msg}
              self.send_response(200)
              self.send_header("Content-type", "application/json")
              self.end_headers()
              self.wfile.write(json.dumps(data).encode())
      
          def pong(self):
              data = {"function":"tf_style_transfer"}
              self.send_response(200)
              self.send_header('Content-type', 'application/json')
              self.end_headers()
              self.wfile.write(json.dumps(data).encode())
      
          def dispatch(self):
              mode = self.headers.get('RUN-MODE')
      
              if mode == "ping":
                  self.pong()
              elif mode == "normal":
                  self.style_transfer()
              else:
                  self.pong()
      
          def do_GET(self):
              self.dispatch()
      
          def do_POST(self):
              self.dispatch()
      
      if __name__ == "__main__":
          host = ("0.0.0.0", 9000)
          server = HTTPServer(host, Resquest)
          print("Starting server, listen at: %s:%s" % host)
          server.serve_forever()
    • Edit file Dockerfile.

      Contoh:

      FROM registry.cn-shanghai.aliyuncs.com/serverless_devs/tensorflow:2.7.0-gpu
      WORKDIR /usr/src/app
      RUN apt-get update
      RUN apt-get install -y python3
      RUN apt-get install -y python3-pip
      RUN pip3 install matplotlib
      RUN pip install tensorflow_hub
      COPY . .
      CMD [ "python3", "-u", "/usr/src/app/app.py" ]
      EXPOSE 9000
  4. Bangun sebuah image.

    s build --dockerfile ./code/Dockerfile
  5. Terapkan kode ke Function Compute.

    s deploy
    Catatan

    Jika Anda menjalankan perintah di atas berulang kali dan nama layanan serta nama fungsi tetap tidak berubah, jalankan perintah use local untuk menggunakan konfigurasi lokal.

  6. Konfigurasikan instans yang disediakan.

    s provision put --target 1 --qualifier LATEST
  7. Periksa apakah instans yang disediakan sudah siap.

    s provision get --qualifier LATEST

    Jika nilai current adalah 1, mode disediakan dari instans yang dipercepat GPU sudah siap. Contoh:

    [2022-06-21 11:53:19] [INFO] [FC] - Mendapatkan provision: tgpu_tf_service.LATEST/tgpu_tf_func
    helloworld:
      serviceName:            tgpu_tf_service
      functionName:           tgpu_tf_func
      qualifier:              LATEST
      resource:               188077086902****#tgpu_tf_service#LATEST#tgpu_tf_func
      target:                 1
      current:                1
      scheduledActions:
        (empty array)
      targetTrackingPolicies:
        (empty array)
      currentError:
      alwaysAllocateCPU:      true
  8. Panggil fungsi.

    • Lihat versi fungsi online

      s invoke
      FC Invoke Result:
      {"function": "tf_style_transfer"}
    • Lakukan transfer gaya neural

      s invoke -e '{"method":"GET","headers":{"RUN-MODE":"normal"}}'
      generate stylized image ok
      enter upload: https://your_public_oss/stylized-image.png  # Anda dapat mengunduh file ini untuk melihat efek sintesis.
      FC Invoke Result:
      {"result": "transfer ok"}
  9. Lepaskan instans yang dipercepat GPU.

    s provision put --target 0 --qualifier LATEST

Use the Function Compute console to deploy a GPU-accelerated application

  1. Terapkan sebuah image.

    1. Buat instans Enterprise Edition Container Registry atau instans Personal Edition Container Registry.

      Kami merekomendasikan Anda membuat instans Enterprise Edition. Untuk informasi lebih lanjut, lihat Buat Instans Enterprise Edition Container Registry.

    2. Buat namespace dan repositori gambar.

      Untuk informasi lebih lanjut, lihat bagian Langkah 2: Buat Namespace dan Langkah 3: Buat Repositori Gambar dari topik "Gunakan instans Enterprise Edition Container Registry untuk membangun gambar".

    3. Lakukan operasi pada Docker sesuai petunjuk di konsol Container Registry. Kemudian, dorong sampel app.py dan Dockerfile ke repositori gambar instans. Untuk informasi lebih lanjut tentang file-file tersebut, lihat app.py dan Dockerfile di direktori /code saat Anda menyebarkan aplikasi GPU menggunakan Serverless Devs.

      db-acr-docker

  2. Buat layanan. Untuk informasi lebih lanjut, lihat bagian "Buat Layanan" dari Kelola Layanan.

  3. Buat fungsi. Untuk informasi lebih lanjut, lihat Buat Fungsi Wadah Kustom.

    Catatan

    Pilih GPU Instance untuk Instance Type dan Process HTTP Requests untuk Request Handler Type.

  4. Ubah periode waktu eksekusi fungsi.

    1. Temukan fungsi yang ingin Anda kelola dan klik Configure di kolom Actions.

    2. Di bagian Environment Variables, ubah nilai Execution Timeout Period dan klik Save.

      db-gpu-time

    Catatan

    Durasi transkoding menggunakan CPU melebihi nilai default 60 detik. Oleh karena itu, kami sarankan Anda menetapkan nilai Execution Timeout Period ke nilai yang lebih besar.

  5. Konfigurasikan instans yang dipercepat GPU yang disediakan.

    1. Di halaman detail fungsi, klik tab Auto Scaling dan klik Create Rule.

    2. Di halaman yang muncul, konfigurasikan parameter berikut untuk menyediakan instans yang dipercepat GPU dan klik Create.

      Untuk informasi lebih lanjut tentang cara mengonfigurasi instans yang disediakan, lihat Konfigurasikan Instans yang Disediakan dan Aturan Penskalaan Otomatis.db-fc-yuliu

    Setelah konfigurasi selesai, Anda dapat memeriksa apakah instans yang dipercepat GPU yang disediakan sudah siap di daftar aturan. Secara spesifik, periksa apakah nilai Current Reserved Instances adalah jumlah instans yang disediakan yang ditentukan.

  6. Gunakan cURL untuk menguji fungsi.

    1. Di halaman detail fungsi, klik tab Triggers untuk melihat konfigurasi pemicu dan mendapatkan titik akhir pemicu.

    2. Jalankan perintah berikut di CLI untuk memanggil fungsi yang dipercepat GPU:

      • Lihat versi fungsi online

        curl -v "https://tgpu-ff-console-tgpu-ff-console-ajezot****.cn-shenzhen.fcapp.run"
        {"function": "trans_gpu"}
      • Lakukan transfer gaya neural

        curl "https://tgpu-fu-console-tgpu-se-console-zpjido****.cn-shenzhen.fcapp.run" -H 'RUN-MODE: normal'
        {"result": "transfer ok"}

Verify the result

Anda dapat melihat gambar hasil sintesis dengan mengakses domain berikut di browser Anda:

https://cri-zbtsehbrr8******-registry.oss-cn-shenzhen.aliyuncs.com/stylized-image.png

Domain ini digunakan sebagai contoh. Domain yang sebenarnya berlaku.

Tutorial untuk deteksi objek

Anda dapat menggunakan teknologi deteksi objek untuk membangun batas persegi panjang pada objek yang diinginkan dan melacak objek tersebut saat beberapa objek muncul secara bersamaan. Aplikasi deteksi objek digunakan untuk menandai dan mengidentifikasi sejumlah besar objek dari berbagai jenis. Pada contoh berikut, OpenCV Deep Neural Network (DNN) digunakan untuk melakukan deteksi multi-objek.

Detection performance

Tabel berikut menjelaskan gambar sumber objek yang akan dideteksi (kiri), dan objek yang terdeteksi menggunakan OpenCV DNN (kanan). Gambar di sebelah kanan juga menampilkan nama objek yang terdeteksi dan akurasi deteksi.

Gambar asli

Objek terdeteksi

tensorflow_example_car_detect

tensorflow_example_car_detect_result

Before you start

  • Untuk pengalaman pengguna terbaik, bergabunglah dengan grup DingTalk (ID 11721331) dan berikan informasi berikut:

    • Nama organisasi, seperti nama perusahaan Anda.

    • ID akun Alibaba Cloud Anda.

    • Wilayah tempat Anda ingin menggunakan instans yang dipercepat GPU, seperti Tiongkok (Shenzhen).

    • Informasi kontak, seperti nomor ponsel, alamat email, atau akun DingTalk Anda.

  • Lakukan operasi berikut di wilayah tempat instans yang dipercepat GPU berada:

  • Instal Serverless Devs dan Docker

  • Konfigurasikan Serverless Devs

  • Kompilasi OpenCV.

    OpenCV harus dikompilasi sebelum Anda dapat menggunakan percepatan GPU. Item berikut menjelaskan cara mengompilasi OpenCV:

  • Unggah sumber daya audio dan video yang ingin diproses ke Bucket Object Storage Service (OSS) di wilayah tempat instans yang dipercepat GPU berada. Pastikan Anda memiliki izin baca dan tulis pada objek di bucket. Untuk informasi lebih lanjut tentang cara mengunggah sumber daya audio dan video, lihat Unggah Objek. Untuk informasi lebih lanjut tentang izin, lihat Ubah ACL Bucket.

Procedure

  1. Buat proyek.

    s init devsapp/start-fc-custom-container-event-python3.9 -d fc-gpu-prj

    Kode sampel berikut menunjukkan direktori proyek yang dibuat:

    fc-gpu-prj
    ├── code
    │   ├── app.py        # Kode fungsi.
    │   └── Dockerfile    # Dockerfile: Image Dockerfile yang berisi kode.
    ├── README.md
    └── s.yaml            # Konfigurasi proyek, yang menentukan bagaimana image diterapkan di Function Compute
  2. Masuk ke direktori proyek.

    cd fc-gpu-prj
  3. Ubah konfigurasi file di direktori berdasarkan kebutuhan bisnis Anda.

    • Edit file s.yaml.

      Untuk informasi lebih lanjut tentang parameter dalam file YAML, lihat Spesifikasi YAML.

      edition: 1.0.0
      name: container-demo
      access: default
      vars:
        region: cn-shenzhen
      services:
        customContainer-demo:
          component: devsapp/fc
          props:
            region: ${vars.region}
            service:
              name: tgpu_object_detect_service
              internetAccess: true
            function:
              name: tgpu_object_detect_func
              description: test gpu for opencv
              handler: not-used
              timeout: 600
              caPort: 9000
              memorySize: 16384
              gpuMemorySize: 8192
              instanceType: fc.gpu.tesla.1
              runtime: custom-container
              customContainerConfig:
                #1. Pastikan bahwa namespace:demo namespace dan repo:gpu-transcoding_s repositori telah dibuat sebelumnya di Alibaba Cloud Container Registry.
                #2. Ubah tag dari v0.1 menjadi v0.2 saat Anda memperbarui fungsi dan jalankan s build && s deploy lagi.
                image: registry.cn-shenzhen.aliyuncs.com/demo/gpu-object-detect_s:v0.1
              codeUri: ./code
            triggers:
              - name: httpTrigger
                type: http
                config:
                  authType: anonymous
                  methods:
                    - GET
    • Edit file app.py.

      Contoh:

      # -*- coding: utf-8 -*-
      # python2 and python3
      
      from __future__ import print_function
      from http.server import HTTPServer, BaseHTTPRequestHandler
      import json
      import sys
      import logging
      import os
      import numpy as np
      import cv2
      import urllib.request
      
      class Resquest(BaseHTTPRequestHandler):
          def download(self, url, path):
              print("enter download:", url)
              f = urllib.request.urlopen(url)
              with open(path, "wb") as local_file:
                  local_file.write(f.read())
      
          def upload(self, url, path):
              print("enter upload:", url)
              headers = {
                  'Content-Type': 'application/octet-stream',
                  'Content-Length': os.stat(path).st_size,
              }
              req = urllib.request.Request(url, open(path, 'rb'), headers=headers, method='PUT')
              urllib.request.urlopen(req)
      
          def core(self):
              CLASSES = ["background", "aeroplane", "bicycle", "bird", "boat",
                     "bottle", "bus", "car", "cat", "chair", "cow", "diningtable",
                     "dog", "horse", "motorbike", "person", "pottedplant", "sheep",
                     "sofa", "train", "tvmonitor"]
              COLORS = np.random.uniform(0, 255, size=(len(CLASSES), 3))
      
              print("[INFO] loading model...")
              prototxt = "/usr/src/app/m.prototxt.txt"
              model = "/usr/src/app/m.caffemodel"
              net = cv2.dnn.readNetFromCaffe(prototxt, model)
      
              msg = ""
              mode = ""
              if not cv2.cuda.getCudaEnabledDeviceCount():
                  msg = "No CUDA-capable device is detected |"
              else:
                  msg = "CUDA-capable device supported |"
                  net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
                  net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)
      
              path = "/tmp/target.png"
              # Gunakan jalur objek OSS di akun Alibaba Cloud Anda. Anda harus memiliki izin baca dan tulis pada objek tersebut. Baca gambar dari bucket Anda.
              self.download("https://your_public_oss/a.png", path)
              image = cv2.imread(path)
              (h, w) = image.shape[:2]
              blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 0.007843, (300, 300), 127.5)
      
              print("[INFO] computing object detections...")
              net.setInput(blob)
              detections = net.forward()
      
              # loop over the detections
              for i in np.arange(0, detections.shape[2]):
                  confidence = detections[0, 0, i, 2]
                  if confidence > 0.2:
                      idx = int(detections[0, 0, i, 1])
                      box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
                      (startX, startY, endX, endY) = box.astype("int")
                      cv2.rectangle(image, (startX, startY), (endX, endY), COLORS[idx], 2)
                      x = startX + 10 if startY - 15 < 15 else startX
                      y = startY - 15 if startY - 15 > 15 else startY + 20
                      label = "{}: {:.2f}%".format(CLASSES[idx], confidence * 100)
                      cv2.putText(image, label, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, COLORS[idx], 2)
                      print("[INFO] {}".format(label))
              cv2.imwrite(path, image)
      
              # Gunakan jalur objek OSS di akun Alibaba Cloud Anda. Anda harus memiliki izin baca dan tulis pada objek tersebut. Baca gambar dari bucket Anda.
              self.upload("https://your_public_oss/target.jpg", path)
              msg = msg + " process image ok!"
      
              data = {'result': msg}
              self.send_response(200)
              self.send_header('Content-type', 'application/json')
              self.end_headers()
              self.wfile.write(json.dumps(data).encode())
      
          def pong(self):
              data = {"function":"object-detection"}
              self.send_response(200)
              self.send_header('Content-type', 'application/json')
              self.end_headers()
              self.wfile.write(json.dumps(data).encode())
      
          def dispatch(self):
              mode = self.headers.get('RUN-MODE')
      
              if mode == "ping":
                  self.pong()
              elif mode == "normal":
                  self.core()
              else:
                  self.pong()
      
          def do_GET(self):
              self.dispatch()
      
          def do_POST(self):
              self.dispatch()
      
      if __name__ == '__main__':
          host = ('0.0.0.0', 9000)
          server = HTTPServer(host, Resquest)
          print("Starting server, listen at: %s:%s" % host)
          server.serve_forever()
    • Edit file Dockerfile.

      Contoh:

      FROM registry.cn-shanghai.aliyuncs.com/serverless_devs/opencv-cuda:cuda-10.2-opencv-4.2
      WORKDIR /usr/src/app
      RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
      RUN apt-get clean
      RUN apt-get update --fix-missing
      RUN apt-get install -y build-essential
      RUN apt-get install -y python3
      COPY . .
      CMD [ "python3", "-u", "/usr/src/app/app.py" ]
      EXPOSE 9000
  4. Unduh file berikut dan simpan file tersebut di direktori /code.

  5. Bangun sebuah image.

    s build --dockerfile ./code/Dockerfile
  6. Terapkan kode ke Function Compute.

    s deploy
    Catatan

    Jika Anda menjalankan perintah di atas berulang kali dan nama layanan serta nama fungsi tetap tidak berubah, jalankan perintah use local untuk menggunakan konfigurasi lokal.

  7. Konfigurasikan instans yang disediakan.

    s provision put --target 1 --qualifier LATEST
  8. Periksa apakah instans yang disediakan sudah siap.

    s provision put --target 1 --qualifier LATEST

    Jika nilai current adalah 1, mode disediakan dari instans yang dipercepat GPU sudah siap. Contoh:

    [2021-12-07 02:20:55] [INFO] [S-CLI] - Start ...
    [2021-12-07 02:20:55] [INFO] [FC] - Mendapatkan provision: tgpu_object_detect_service.LATEST/tgpu_object_detect_func
    customContainer-demo:
     serviceName:      tgpu_object_detect_service
     functionName:      tgpu_object_detect_func
     qualifier:       LATEST
     resource:        188077086902****#tgpu_object_detect_service#LATEST#tgpu_object_detect_func
     target:         1
     current:        1
     scheduledActions:    (empty array)
     targetTrackingPolicies: (empty array)
  9. Panggil fungsi.

    • Lihat versi fungsi online

      s invoke
      FC Invoke Result:
      {"result": "CUDA-capable device supported | process image ok!"}
    • Deteksi objek

      s invoke -e '{"method":"GET","headers":{"RUN-MODE":"normal"}}'
      enter upload: https://your_public_oss/target.jpg # Anda dapat mengunduh file ini untuk melihat hasil inferensi.
      FC Invoke Result:
      {"result": "CUDA-capable device supported | process image ok!"}
  10. Lepaskan instans yang dipercepat GPU.

    s provision put --target 0 --qualifier LATEST

Verify the result

Anda dapat melihat gambar setelah objek terdeteksi dengan mengakses domain berikut di browser Anda:

https://cri-zbtsehbrr8******-registry.oss-cn-shenzhen.aliyuncs.com/target2.jpg

Domain ini digunakan sebagai contoh. Domain yang sebenarnya berlaku.