All Products
Search
Document Center

Platform For AI:Solusi potret AI

Last Updated:Jan 28, 2026

Solusi potret AI memungkinkan Anda melatih model low-rank adaptation (LoRA) secara otomatis dan menggunakan model LoRA beserta gambar templat untuk menghasilkan potret AI yang dipersonalisasi. Elastic Algorithm Service (EAS) adalah platform layanan model yang disediakan oleh Platform for AI (PAI). Solusi ini mendefinisikan proses algoritmik yang dapat diterapkan sebagai layanan model online EAS serta menyediakan API terkait untuk menghasilkan potret AI. Topik ini menjelaskan cara menerapkan layanan model online EAS dan memanggilnya untuk menghasilkan potret AI.

Informasi latar belakang

Fitur EAS

EAS adalah platform layanan model yang disediakan oleh PAI. Dalam solusi potret AI, fitur inti EAS berikut digunakan:

  • Terapkan layanan model, termasuk layanan verifikasi, layanan pelatihan, dan layanan prediksi, dengan menggunakan gambar kustom. EAS menyediakan API untuk verifikasi gambar, pelatihan LoRA, dan pembuatan gambar berdasarkan proses algoritmik solusi potret AI, serta mendukung load balancing dan skalabilitas otomatis pada instans yang dipercepat GPU untuk layanan tersebut.

  • Konfigurasikan antrian asinkron untuk layanan. Anda dapat melakukan kueri dan mengelola status konsumsi antrian, serta mengatur prioritas data yang akan didorong ke antrian. Untuk informasi selengkapnya, lihat Layanan inferensi asinkron.

  • Gunakan SDK untuk Python dan Java untuk memanggil layanan. Anda dapat meneruskan parameter kustom sesuai kebutuhan bisnis. Untuk informasi selengkapnya, lihat SDK.

Proses algoritmik solusi potret AI

  1. Verifikasi gambar

    Lakukan pemeriksaan awal pada gambar untuk memastikan kesesuaian gambar tersebut.

  2. Pelatihan LoRA

    Pra-proses dan periksa kualitas gambar, lalu latih serta evaluasi model secara otomatis menggunakan LoRA untuk menghasilkan model yang telah dioptimalkan.

  3. Hasilkan potret AI

    1. Pra-proses gambar templat.

    2. Hasilkan gambar pada difusi pertama.

    3. Hasilkan gambar pada difusi kedua.

Prasyarat

  • Virtual private cloud (VPC) telah dibuat dan akses Internet diaktifkan untuk VPC tersebut.

    1. VPC, vSwitch, dan grup keamanan telah dibuat. Untuk informasi selengkapnya, lihat Buat VPC dengan blok CIDR IPv4 dan Buat grup keamanan.

    2. Gateway NAT Internet telah dibuat dalam VPC. Alamat IP elastis (EIP) dikaitkan dengan gateway tersebut dan entri SNAT dikonfigurasi pada gateway. Untuk informasi selengkapnya, lihat Gunakan fitur SNAT gateway NAT Internet untuk mengakses Internet.

  • EAS telah diaktifkan dan ruang kerja default telah dibuat. Untuk informasi selengkapnya, lihat Aktifkan PAI dan buat ruang kerja default.

  • Jika Anda ingin menerapkan layanan model sebagai Pengguna Resource Access Management (RAM), pastikan pengguna RAM tersebut telah diberikan izin manajemen atas EAS. Untuk informasi selengkapnya, lihat Berikan izin yang diperlukan untuk menggunakan EAS.

  • Untuk pelatihan model dan pembuatan potret, siapkan 5 hingga 20 gambar pelatihan dan 1 gambar templat. Format gambar yang didukung: .jpg, .jpeg, dan .png. Pastikan ukuran setiap gambar lebih besar dari 512 x 512 piksel.

    • Potret satu orang: Gambar templat harus berisi wajah seseorang. Wajah dalam beberapa gambar pelatihan harus berasal dari orang yang sama.

    • Potret multi-orang: Gambar templat harus berisi beberapa wajah, dan jumlah wajah tersebut harus sama dengan nilai parameter model_id yang ditentukan untuk pelatihan model.

Batasan

Solusi potret AI hanya didukung di wilayah China (Beijing) dan Singapura.

Terapkan layanan model online EAS

Terapkan layanan verifikasi

  1. Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).

  2. Klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.

  3. Pada halaman Custom Deployment, konfigurasikan parameter utama berikut.

    • Pada bagian Basic Information, sesuaikan nama layanan sesuai petunjuk pada halaman. Contohnya: photog_check.

    • Pada bagian Environment Information, konfigurasikan parameter berikut:

      Parameter

      Description

      Deployment Method

      Pilih Image-based Deployment dan pilih Asynchronous Queue.

      Image Configuration

      Pilih Image Address dan masukkan alamat gambar pada kotak teks:

      • Alamat gambar untuk wilayah China (Beijing): registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:check.1.0.0.pub.

      • Alamat gambar untuk wilayah Singapura: registry.ap-southeast-1.aliyuncs.com/mybigpai/photog_pub:check.1.0.0.pub.

      Mount storage

      Konfigurasikan salah satu metode pemasangan berikut:

      • OSS

        • Uri: Pilih jalur bucket OSS Anda sendiri. Contohnya, oss://examplebucket/.

        • Mount Path: Atur ke /photog_oss.

      • NAS

        • Select File System: Pilih sistem file NAS.

        • Mount Target: Pilih titik pemasangan NAS.

        • File System Path: Atur ke jalur sumber dalam NAS yang akan dipasang, misalnya /.

        • Mount Path: Atur ke /photog_oss.

      Command

      Atur ke python app.py.

      Port Number

      Atur ke 7860.

    • Pada bagian Resource Information, konfigurasikan parameter berikut:

      Parameter

      Description

      Resource Type

      Pilih Public Resources.

      Deployment

      Pilih tipe GPU seri GU30. Kami merekomendasikan ml.gu7i.c32m188.1-gu30.

      Configure a system disk

      Atur ke 120 GiB.

    • Pada bagian Asynchronous Queue, konfigurasikan parameter berikut:

      Parameter

      Description

      Resource Type

      Pilih Public Resource Group.

      Deployment

      Konfigurasikan parameter berikut:

      • Minimum Instances: 1

      • vCPUs: 8 cores

      • Memory: 64 GB

      Maximum Data for A Single Input Request

      Atur ke 20480 KB untuk mencegah ruang penyimpanan tidak mencukupi untuk setiap permintaan dalam antrian.

      Maximum Data for A Single Output

    • Pada bagian Network Information, pilih VPC, vSwitch, dan grup keamanan yang telah Anda buat.

    • Pada bagian Service Configuration, klik tombol Edit dan tambahkan konfigurasi berikut. Anda dapat merujuk contoh konfigurasi lengkap di bawah ini untuk menambahkan parameter baru.

      Field

      New parameters

      metadata

      Tambahkan yang berikut:

      "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              }
      • keepalive: Waktu pemrosesan maksimum untuk satu permintaan dalam milidetik, diatur ke 3600000.

      • worker_threads: Jumlah thread yang digunakan oleh EAS untuk pemrosesan permintaan konkuren dalam setiap instans.

        Nilai default adalah 5, artinya lima tugas pertama yang masuk ke antrian akan dialokasikan ke instans yang sama. Atur parameter ini ke 1 untuk memastikan permintaan diproses secara berurutan.

      queue

      Tambahkan "max_delivery": 1 untuk mencegah pengiriman ulang setelah kegagalan.

      Contoh konfigurasi lengkap:

      {
          "metadata": {
              "name": "photog_check",
              "instance": 1,
              "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              },
              "type": "Async"
          },
          "cloud": {
              "computing": {
                  "instance_type": "ml.gu7i.c32m188.1-gu30",
                  "instances": null
              },
              "networking": {
                  "vswitch_id": "vsw-2ze4o9kww55051tf2****",
                  "security_group_id": "sg-2ze0kgiee55d0fn4****",
                  "vpc_id": "vpc-2ze5hl4ozjl4fo7q3****"
              }
          },
          "features": {
              "eas.aliyun.com/extra-ephemeral-storage": "100Gi"
          },
          "queue": {
              "cpu": 8,
              "max_delivery": 1,
              "min_replica": 1,
              "memory": 64000,
              "resource": "",
              "source": {
                  "max_payload_size_kb": 20480
              },
              "sink": {
                  "max_payload_size_kb": 20480
              }
          },
          "storage": [
              {
                  "oss": {
                      "path": "oss://examplebucket/",
                      "readOnly": false
                  },
                  "properties": {
                      "resource_type": "code"
                  },
                  "mount_path": "/photog_oss"
              }
          ],
          "containers": [
              {
                  "image": "registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:check.1.0.0.pub",
                  "script": "python app.py",
                  "port": 7860
              }
          ]
      }
  4. Klik Deploy.

    Ketika Service Status berubah menjadi Running, layanan berhasil diterapkan.

Terapkan layanan pelatihan

  1. Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).

  2. Klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.

  3. Pada halaman Custom Deployment, konfigurasikan parameter utama berikut.

    • Pada bagian Basic Information, sesuaikan nama layanan sesuai petunjuk pada halaman. Contohnya: photog_train_pmml.

    • Pada bagian Environment Information, konfigurasikan parameter berikut:

      Parameter

      Description

      Deployment Method

      Pilih Image-based Deployment, dan pilih Asynchronous Queue.

      Image Configuration

      Pilih Image Address, dan masukkan alamat gambar pada kotak teks:

      • Alamat gambar untuk wilayah China (Beijing): registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:train.1.0.0.pub.

      • Alamat gambar untuk wilayah Singapura: registry.ap-southeast-1.aliyuncs.com/mybigpai/photog_pub:train.1.0.0.pub.

      Mount storage

      Konfigurasikan salah satu metode pemasangan berikut:

      • OSS

        • Uri: Pilih jalur bucket OSS Anda sendiri, yang harus sama dengan jalur OSS yang dipilih untuk layanan verifikasi. Contohnya oss://examplebucket/.

        • Mount Path: Atur ke /photog_oss.

      • NAS

        • Select File System: Pilih sistem file NAS.

        • Mount Target: Pilih titik pemasangan NAS.

        • File System Path: Atur ke jalur sumber dalam NAS yang perlu dipasang, misalnya /.

        • Mount Path: Atur ke /photog_oss.

      Command

      Atur ke python app.py.

      Port Number

      Atur ke 7860.

    • Pada bagian Resource Information, konfigurasikan parameter berikut:

      Parameter

      Description

      Resource Type

      Pilih Public Resources.

      Deployment

      Pilih tipe GPU seri GU30. Kami merekomendasikan ml.gu7i.c32m188.1-gu30.

      Configure a system disk

      Atur ke 120 GiB.

    • Pada bagian Asynchronous Queue, konfigurasikan parameter berikut:

      Parameter

      Description

      Resource Type

      Pilih Public Resources.

      Deployment

      Konfigurasikan parameter berikut:

      • Minimum Instances: 1

      • vCPUs: 8 cores

      • Memory: 64 GB

      Maximum Data for A Single Input Request

      Atur ke 20480 KB untuk menghindari ruang penyimpanan tidak mencukupi untuk setiap permintaan dalam antrian.

      Maximum Data for A Single Output

    • Pada bagian Network Information, pilih VPC, vSwitch, dan grup keamanan yang telah Anda buat.

    • Pada bagian Service Configuration, klik Edit, dan tambahkan konfigurasi berikut. Anda dapat merujuk contoh konfigurasi lengkap di bawah ini untuk menambahkan parameter baru.

      Field

      New parameters

      autoscaler

      (Opsional) Konfigurasi auto-scaling horizontal. Untuk informasi selengkapnya, lihat Horizontal auto scaling.

      "behavior": {
        "scaleDown": {
          "stabilizationWindowSeconds": 60
        }
      },
      "max": 5,
      "min": 1,
      "strategies": {
                  "queue[backlog]": 1
      }

      metadata

      Tambahkan parameter berikut:

      "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              }
      • keepalive: Waktu pemrosesan maksimum untuk satu permintaan dalam milidetik, diatur ke 3600000.

      • worker_threads: Jumlah thread yang digunakan oleh EAS untuk pemrosesan permintaan konkuren dalam setiap instans.

        Nilai default adalah 5, artinya lima tugas pertama yang masuk ke antrian akan dialokasikan ke instans yang sama. Atur parameter ini ke 1 untuk memastikan permintaan diproses secara berurutan.

      queue

      Tambahkan "max_delivery": 1 untuk mencegah pengiriman ulang setelah kegagalan.

      Contoh konfigurasi lengkap:

      {
          "autoscaler": {
              "behavior": {
                  "scaleDown": {
                      "stabilizationWindowSeconds": 60
                  }
              },
              "max": 5,
              "min": 1,
              "strategies": {
                  "queue[backlog]": 1
              }
          },
          "metadata": {
              "name": "photog_train_pmml",
              "instance": 1,
              "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              },
              "type": "Async"
          },
          "cloud": {
              "computing": {
                  "instance_type": "ml.gu7i.c32m188.1-gu30",
                  "instances": null
              },
              "networking": {
                  "vswitch_id": "vsw-2ze4o9kww55051tf2****",
                  "security_group_id": "sg-2ze0kgiee55d0fn4****",
                  "vpc_id": "vpc-2ze5hl4ozjl4fo7q3****"
              }
          },
          "features": {
              "eas.aliyun.com/extra-ephemeral-storage": "120Gi"
          },
          "queue": {
              "cpu": 8,
              "max_delivery": 1,
              "min_replica": 1,
              "memory": 64000,
              "resource": "",
              "source": {
                  "max_payload_size_kb": 20480
              },
              "sink": {
                  "max_payload_size_kb": 20480
              }
          },
          "storage": [
              {
                  "oss": {
                      "path": "oss://examplebucket/",
                      "readOnly": false
                  },
                  "properties": {
                      "resource_type": "code"
                  },
                  "mount_path": "/photog_oss"
              }
          ],
          "containers": [
              {
                  "image": "registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:train.1.0.0.pub",
                  "script": "python app.py",
                  "port": 7860
              }
          ]
      }
  4. Klik Deploy.

    Ketika Service Status berubah menjadi Running, layanan berhasil diterapkan.

Terapkan layanan prediksi

  1. Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).

  2. Klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.

  3. Pada halaman Custom Deployment, konfigurasikan parameter utama berikut.

    • Pada bagian Basic Information, sesuaikan nama layanan sesuai petunjuk pada halaman. Contohnya: photog_pre_pmml.

    • Pada bagian Environment Information, konfigurasikan parameter berikut:

      Parameter

      Description

      Deployment Method

      Pilih Image-based Deployment dan centang Asynchronous Queue.

      Image Configuration

      Pilih Image Address dan masukkan alamat gambar pada kotak teks. Anda perlu mengonfigurasi alamat gambar layanan prediksi potret AI dan layanan prediksi WebUI. Pada bagian ini, Anda hanya perlu mengonfigurasi alamat gambar layanan prediksi potret AI. Alamat gambar layanan prediksi WebUI akan dikonfigurasi di bagian konfigurasi layanan nanti. Daftar gambar yang didukung sebagai berikut. Solusi ini memilih alamat gambar di wilayah China (Beijing).

      • Alamat gambar untuk wilayah China (Beijing):

        • Layanan prediksi potret AI: registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:infer.1.0.0.pub.

        • Layanan prediksi WebUI: eas-registry-vpc.cn-beijing.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:3.2.

      • Alamat gambar untuk wilayah Singapura

        • Layanan prediksi potret AI: registry.ap-southeast-1.aliyuncs.com/mybigpai/photog_pub:infer.1.0.0.pub.

        • Layanan prediksi WebUI: eas-registry-vpc.ap-southeast-1.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:3.2.

      Mount storage

      Konfigurasikan salah satu metode pemasangan berikut. Solusi ini memilih pemasangan OSS.

      • OSS

        • Uri: Pilih jalur bucket OSS Anda sendiri, yang harus sama dengan jalur OSS yang dipilih untuk layanan verifikasi. Contohnya, oss://examplebucket/.

        • Mount Path: Atur ke /photog_oss.

      • NAS

        • Select File System: Pilih sistem file NAS.

        • Mount Target: Pilih titik pemasangan NAS.

        • File System Path: Atur ke jalur sumber dalam NAS yang akan dipasang, misalnya /.

        • Mount Path: Atur ke /photog_oss.

      Unduh dan ekstrak file model yang diperlukan untuk WebUI, lalu simpan di jalur bucket OSS Anda oss://examplebucket/photog_oss/webui atau jalur NAS /photog_oss/webui sesuai tata letak yang ditunjukkan pada tangkapan layar di bawah. Untuk informasi selengkapnya tentang cara mengunggah file ke jalur bucket OSS, lihat ossutil 1.0. Untuk informasi selengkapnya tentang cara mengunggah file ke jalur NAS, lihat Pasang sistem file pada instans ECS Linux dan Kelola file.image.png

      Environment Variable

      Klik Add untuk menambahkan dua variabel lingkungan berikut:

      • Nama variabel: URL. Nilai variabel: http://127.0.0.1:8000.

      • Nama variabel: AUTHORIZATION. Nilai variabel: =.

      Command

      Atur ke python app.py.

      Port Number

      Atur ke 7860.

    • Pada bagian Resource Information, konfigurasikan parameter berikut:

      Parameter

      Description

      Resource Type

      Pilih Public Resources.

      Deployment

      Pilih tipe GPU seri GU30. Kami merekomendasikan ml.gu7i.c32m188.1-gu30.

      Configure a system disk

      Atur ke 120 GiB.

    • Pada bagian Asynchronous Queue, konfigurasikan parameter berikut:

      Parameter

      Description

      Resource Type

      Pilih Public Resources.

      Deployment

      Konfigurasikan parameter berikut:

      • Minimum Instances: 1.

      • vCPUs: 8 cores.

      • Memory: 64 GB.

      Maximum Data for A Single Input Request

      Atur ke 20480 KB. Ini mencegah ruang penyimpanan tidak mencukupi untuk setiap permintaan dalam antrian.

      Maximum Data for A Single Output

    • Pada bagian Network Information, pilih VPC, vSwitch, dan grup keamanan yang telah Anda buat.

    • Pada bagian Service Configuration, tambahkan konfigurasi berikut. Anda dapat merujuk contoh konfigurasi lengkap di bawah ini untuk menambahkan parameter baru.

      Field

      New parameters

      metadata

      Tambahkan parameter berikut:

      "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              }
      • keepalive: Waktu pemrosesan maksimum untuk satu permintaan, dalam milidetik, diatur ke 3600000.

      • worker_threads: Jumlah thread yang digunakan oleh EAS untuk pemrosesan permintaan konkuren dalam setiap instans.

        Nilai default adalah 5, artinya lima tugas pertama yang masuk ke antrian akan dialokasikan ke instans yang sama. Disarankan mengatur parameter ini ke 1 untuk memastikan permintaan diproses secara berurutan.

      containers

      Tambahkan parameter berikut:

      {
                  "image": "eas-registry-vpc.cn-beijing.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:3.2",
                  "port": 8000,
                  "script": "./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-install --api --filebrowser --sd-dynamic-cache --data-dir /photog_oss/photog/webui/"
              }

      Ini merepresentasikan gambar layanan prediksi WebUI beserta perintah run dan nomor port yang sesuai.

      queue

      Tambahkan parameter "max_delivery": 1 untuk mencegah pengiriman ulang setelah kegagalan.

      Contoh konfigurasi lengkap:

      {
          "metadata": {
              "name": "photog_pre_pmml",
              "instance": 1,
              "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              },
              "type": "Async"
          },
          "cloud": {
              "computing": {
                  "instance_type": "ecs.gn6v-c8g1.2xlarge",
                  "instances": null
              },
              "networking": {
                  "vswitch_id": "vsw-2ze4o9kww55051tf2****",
                  "security_group_id": "sg-2ze0kgiee55d0fn4****",
                  "vpc_id": "vpc-2ze5hl4ozjl4fo7q3****"
              }
          },
          "features": {
              "eas.aliyun.com/extra-ephemeral-storage": "120Gi"
          },
          "queue": {
              "cpu": 8,
              "max_delivery": 1,
              "min_replica": 1,
              "memory": 64000,
              "resource": "",
              "source": {
                  "max_payload_size_kb": 20480
              },
              "sink": {
                  "max_payload_size_kb": 20480
              }
          },
          "storage": [
              {
                  "oss": {
                      "path": "oss://examplebucket/",
                      "readOnly": false
                  },
                  "properties": {
                      "resource_type": "code"
                  },
                  "mount_path": "/photog_oss"
              }
          ],
          "containers": [
              {
                  "image": "registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:infer.1.0.0.pub",
                  "env": [
                      {
                          "name": "URL",
                          "value": "http://127.0.0.1:8000"
                      },
                      {
                          "name": "AUTHORIZATION",
                          "value": "="
                      }
                  ],
                  "script": "python app.py",
                  "port": 7861
              },
              {
                  "image": "eas-registry-vpc.cn-beijing.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:3.2",
                  "port": 8000,
                  "script": "./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-install --api --filebrowser --sd-dynamic-cache --data-dir /photog_oss/photog/webui/"
              }
          ]
      }
  4. Klik Deploy.

    Ketika Service Status berubah menjadi Running, layanan berhasil diterapkan.

Panggil layanan

Langkah 1: Panggil layanan verifikasi

  1. Pada halaman Elastic Algorithm Service (EAS), klik nama layanan untuk membuka halaman Overview. Di bagian Basic Information, klik View Endpoint Information. Pada tab Asynchronous Invocation, peroleh endpoint layanan dan token.image

  2. Buat antrian input untuk verifikasi gambar dan kueri informasi tentang antrian input tersebut.

    Contoh permintaan:

    SDK untuk Python

    import json
    from eas_prediction import QueueClient
    
    # Buat objek antrian input untuk menerima data input. 
    input_queue = QueueClient('182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'photog_check')
    input_queue.set_token('<token>')
    input_queue.init()
    
    datas = json.dumps(
        {
           'request_id'    : 12345,
           'images'        : ["xx.jpg", "xx.jpg"], # urls, a list
           'configure'     : {
                'face_reconize' : True, # Menilai apakah semua gambar merupakan satu orang
            }
        }
    )
    
    index, request_id = input_queue.put(f'{datas}')
    print(index, request_id)
    
    # Kueri detail antrian input. 
    attrs = input_queue.attributes()
    print(attrs)

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Description

    Default value

    Required

    input_queue

    Endpoint layanan verifikasi yang Anda peroleh. Nilainya harus bertipe STRING. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter ini, lihat kode di atas.

    N/A

    Yes

    <token>

    Token layanan verifikasi yang Anda peroleh. Nilainya harus bertipe STRING.

    N/A

    Yes

    request_id

    ID permintaan. Nilainya harus bertipe STRING.

    N/A

    Yes

    images

    URL gambar yang digunakan untuk pelatihan model. Nilainya harus bertipe LIST.

    N/A

    Yes

    configure

    face_reconize

    Menentukan apakah akan memeriksa apakah wajah dalam gambar berasal dari orang yang sama. Nilainya harus bertipe BOOLEAN.

    False

    No

    SDK untuk Java

    import com.aliyun.openservices.eas.predict.http.HttpConfig;
    import com.aliyun.openservices.eas.predict.http.QueueClient;
    import com.aliyun.openservices.eas.predict.queue_client.QueueUser;
    import org.apache.commons.lang3.tuple.Pair;
    
    public class AsyncTest {
        public static void main(String[] args) throws Exception {
            /** Buat klien layanan antrian. */
            String queueEndpoint = "182848887922****.cn-shanghai.pai-eas.aliyuncs.com";
            String inputQueueName = "photog_check";
            String queueToken = "YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA3OTZmNzc1MT****==";
    
            QueueClient inputQueue =
                new QueueClient(queueEndpoint, inputQueueName, queueToken, new HttpConfig(), new QueueUser());
    
            /** Data permintaan. */
            String data = "{\n" +
                "    'request_id': 12345,\n" +
                "    'images'    : [\"xx.jpg\", \"xx.jpg\"],\n" +
                "    'configure' : {\n" +
                "        'face_reconize' : True,\n" +
                "    }\n" +
                "}";
            Pair<Long, String> entry = inputQueue.put(data.getBytes(), null);
            System.out.println(String.format("index = %s, request id = %s", entry.getKey(), entry.getValue()));
    
            // Kueri detail antrian input.
            System.out.println(inputQueue.attributes());
    
            /** Matikan klien. */
            inputQueue.shutdown();
        }
    }

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Description

    Default value

    Required

    queueEndpoint

    Endpoint layanan verifikasi yang Anda peroleh. Nilainya harus bertipe STRING.

    N/A

    Yes

    inputQueueName

    Nama layanan verifikasi. Nilainya harus bertipe STRING.

    N/A

    Yes

    queueToken

    Token layanan verifikasi yang Anda peroleh. Nilainya harus bertipe STRING.

    N/A

    Yes

    request_id

    ID permintaan. Nilainya harus bertipe STRING.

    N/A

    Yes

    images

    URL gambar yang digunakan untuk pelatihan model. Nilainya harus bertipe LIST.

    N/A

    Yes

    configure

    face_reconize

    Menentukan apakah akan memeriksa apakah wajah dalam gambar berasal dari orang yang sama. Nilainya harus bertipe BOOLEAN.

    False

    No

    Contoh respons:

    SDK untuk Python

    1 6bdea119-01f3-4728-b3d3-b0af366ad3eb
    {'consumers.list.[0]': 'Id: photog_check.photog-check-738569a9-798897bdf5-76****, Index: 0, Pending: 0, Status: Running, Idle: 1h10m4.997s, Window: 1, Slots: 1, AutoCommit: false', 'consumers.stats.total': '1', 'consumers.status.total': '1', 'groups.list.[0]': 'Id: photog_check, Index: 1, Pending: 1, Delivered: 2, Consumers: 1', 'meta.header.group': 'X-EAS-QueueService-Gid', 'meta.header.priority': 'X-EAS-QueueService-Priority', 'meta.header.user': 'X-EAS-QueueService-Uid', 'meta.name': 'photog-check-queue-95e006df', 'meta.state': 'Normal', 'stream.approxMaxLength': '1439', 'stream.firstEntry': '1', 'stream.lastEntry': '1', 'stream.length': '1', 'stream.maxPayloadBytes': '20971520'}

    SDK untuk Java

    index = 2, request id = 61132b43-a527-40dc-89bb-a9a48316ddea
    {"meta.header.priority":"X-EAS-QueueService-Priority","consumers.status.total":"1","stream.firstEntry":"2","stream.maxPayloadBytes":"20971520","consumers.stats.total":"1","stream.approxMaxLength":"1439","stream.length":"1","groups.list.[0]":"Id: photog_check, Index: 2, Pending: 1, Delivered: 3, Consumers: 1","meta.header.group":"X-EAS-QueueService-Gid","stream.lastEntry":"2","consumers.list.[0]":"Id: photog_check.photog-check-738569a9-798897bdf5-76j48, Index: 2, Pending: 0, Status: Running, Idle: 19m11.174s, Window: 1, Slots: 1, AutoCommit: false","meta.name":"photog-check-queue-95e006df","meta.state":"Normal","meta.header.user":"X-EAS-QueueService-Uid"}
    
    Process finished with exit code 0

    Parameter utama dalam kode di atas:

    • index: posisi permintaan di antara semua permintaan yang dikirim ke EAS.

    • request_id: ID permintaan. ID ini digunakan untuk mengkueri hasil output.

    • Parameter lain menunjukkan detail antrian input.

  3. Buat antrian output dan kueri hasil output untuk memeriksa apakah gambar sesuai.

    Contoh permintaan:

    SDK untuk Python

    # Buat objek antrian output untuk berlangganan hasil pemrosesan di antrian output. 
    sink_queue = QueueClient('182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'photog_check/sink')
    sink_queue.set_token('<token>')
    sink_queue.init()
    
    sink_queue.get(request_id, auto_delete=True)[0].data.decode('utf-8')

    Parameter utama dalam kode di atas:

    • sink_queue: endpoint layanan verifikasi yang Anda peroleh.

    • <token>: token layanan verifikasi yang Anda peroleh.

    • auto_delete: menentukan apakah hasil output yang dikueri akan dihapus dari antrian output. Nilai default: True. Jika Anda hanya menentukan parameter request_id tanpa menentukan parameter auto_delete, hasil output yang dikueri akan dihapus dari antrian output. Kami menyarankan agar Anda secara eksplisit mengatur parameter auto_delete ke True karena hasil output biasanya perlu dihapus dari antrian output.

    SDK untuk Java

    import com.aliyun.openservices.eas.predict.http.HttpConfig;
    import com.aliyun.openservices.eas.predict.http.QueueClient;
    import com.aliyun.openservices.eas.predict.queue_client.DataFrame;
    import com.aliyun.openservices.eas.predict.queue_client.QueueUser;
    import org.apache.commons.lang3.tuple.Pair;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class AsyncPhotoTest {
        public static void main(String[] args) throws Exception {
            /** Buat klien layanan antrian. */
            String queueEndpoint = "166233998075****.cn-beijing.pai-eas.aliyuncs.com";
            String inputQueueName = "photog_check";
            String sinkQueueName = String.format("%s/sink", inputQueueName);
            String queueToken = "YjczMzFlYmRkMDU4YmZmMGQ4NTEwODA4NDk3NmFhODE5N2ExMzEy****";
    
            QueueClient inputQueue =
                new QueueClient(queueEndpoint, inputQueueName, queueToken, new HttpConfig(), new QueueUser());
            QueueClient sinkQueue =
                new QueueClient(queueEndpoint, sinkQueueName, queueToken, new HttpConfig(), new QueueUser());
    
            /** Data permintaan. */
            String data = "{\n" +
                "  \"request_id\": 12345,\n" +
                "  \"images\": [\"xx.jpg\", \"xx.jpg\"],\n" +
                "  \"configure\": {\n" +
                "    \"face_reconize\": true\n" +
                "  }\n" +
                "}";
            Pair<Long, String> entry = inputQueue.put(data.getBytes(), null);
            Long index = entry.getKey();
            final String requestId = entry.getValue();
            System.out.println(String.format("index = %d, request id = %s", index, requestId));
    
            // Kueri detail antrian input.
            System.out.println(inputQueue.attributes());
    
            // Kueri data input.
            Map<String, String> tags =
                new HashMap<String, String>() {
                    {
                        put("requestId", requestId);
                    }
                };
            DataFrame[] dfs = inputQueue.get(0, 1L, 0, false, tags);
            if (dfs.length > 0) {
                System.out.println(String.format("Successfully get input data = %s, index = %d, tags = %s", new String(dfs[0].getData()), dfs[0].getIndex(), dfs[0].getTags()));
            } else {
                System.out.println("no data");
            }
    
            // Kueri data output.
            while (true) {
                dfs = sinkQueue.get(0, 1L, 0, true, tags);
                if (dfs.length > 0) {
                    System.out.println(String.format("Successfully get sink data = %s, tags = %s", new String(dfs[0].getData()), dfs[0].getTags()));
                    break;
                } else {
                    System.out.println("no data");
                    Thread.sleep(5000);
                }
            }
    
            /** Matikan klien. */
            inputQueue.shutdown();
            sinkQueue.shutdown();
        }
    }

    Parameter utama dalam kode di atas:

    • queueEndpoint: endpoint layanan verifikasi yang Anda peroleh.

    • inputQueueName: nama layanan verifikasi.

    • queueToken: token layanan verifikasi yang Anda peroleh.

    • images: URL gambar yang digunakan untuk pelatihan model.

    Contoh respons:

    SDK untuk Python

    '{"request_id": "12345", "code": "OK", "message": "success", "data": {"request_id": 12345, "images": ["xx.jpg", "https://xxx.oss-cn-beijing.aliyuncs.com/photog/user_images/foto/train/0.jpg"], "configure": {"face_reconize": true}, "cost_time": 9.820043325424194, "check_results": [{"url": "https://xx-cn-beijing.aliyuncs.com/photog/user_images/foto/train/1.jpg", "message": "success", "code": 1, "frontal": true}, {"url": "https://xx-cn-beijing.aliyuncs.com/photog/user_images/foto/train/0.jpg", "message": "success", "code": 1, "frontal": false}]}}'

    SDK untuk Java

    Successfully get sink data = {"request_id": "12345", "code": "OK", "message": "success", "data": {"request_id": 12345, "images": ["xx.jpg", "xx.jpg"], "configure": {"face_reconize": true}, "cost_time": 0.2047882080078125, "check_results": [{"url": "https://xx-cn-beijing.aliyuncs.com/photog/user_images/foto/train/1.jpg", "message": "success", "code": 1, "frontal": true}, {"url": "https://xx-cn-beijing.aliyuncs.com/photog/user_images/foto/train/0.jpg", "message": "success", "code": 1, "frontal": false}]}}

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Description

    request_id

    ID permintaan. Nilainya bertipe STRING.

    code

    Kode status permintaan. Nilainya bertipe STRING. Nilai valid:

    • OK: Verifikasi selesai.

    • error: Verifikasi belum selesai.

    message

    Informasi detail tentang status permintaan. Nilai success menunjukkan bahwa gambar sesuai. Jika nilai lain dikembalikan, selesaikan masalah berdasarkan pesan yang dikembalikan.

    data

    Konten respons detail. Parameter:

    • check_results: hasil verifikasi gambar.

      • url: URL gambar.

      • message: detail verifikasi gambar. Nilai success menunjukkan bahwa gambar sesuai. Untuk informasi selengkapnya tentang nilai valid parameter message dan nilai kode yang sesuai, lihat bagian parameter message topik ini.

      • frontal: menunjukkan apakah gambar merupakan gambar wajah depan.

    • cost_time: waktu pemrosesan untuk permintaan di sisi server.

    • images: URL gambar yang diverifikasi. Nilainya bertipe LIST.

    • request_id: ID permintaan. Nilainya bertipe STRING.

    Parameter message

    Valid value

    code

    Description

    success

    1

    Gambar sesuai.

    Image decode error

    2

    Gambar tidak dapat diunduh atau didekode.

    Number of face is not 1

    3

    Jumlah wajah bukan satu.

    Image detect error

    4

    Terjadi kesalahan dalam pengenalan wajah.

    Image encoding error

    5

    Terjadi kesalahan saat mengenkoding wajah menjadi vektor fitur, yang menunjukkan bahwa wajah tidak dapat dikenali.

    This photo is not the same person in photos

    6

    Jika hanya pesan ini yang dikembalikan, gambar berisi wajah yang berbeda dari gambar lainnya.

Langkah 2: Panggil layanan pelatihan

  1. Pada halaman Elastic Algorithm Service (EAS), klik nama layanan pelatihan untuk membuka halaman Overview. Di area Basic Information, klik View Endpoint Information. Pada tab Asynchronous Invocation, peroleh endpoint layanan dan Token.image

  2. Buat antrian input untuk pelatihan model LoRA dan kueri informasi tentang antrian input tersebut.

    Contoh permintaan:

    SDK untuk Python

    photog_train_pmmln import json
    from eas_prediction import QueueClient
    
    # Buat objek antrian input untuk menerima data input. 
    input_queue = QueueClient('182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'photog_train_pmml')
    input_queue.set_token('<token>')
    input_queue.init()
    
    datas = json.dumps(
        {
            'request_id'    : 12345,
            'images'        : ["xx.jpg", "xx.jpg"], # urls
            'configure'     : {
                'user_id'   : "zhoumo", # user id
            }
        }
    )
    
    index, request_id = input_queue.put(f'{datas}')
    print(index, request_id)
    
    # Kueri detail antrian input. 
    attrs = input_queue.attributes()
    print(attrs)

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Description

    Default value

    Required

    input_queue

    Endpoint layanan pelatihan yang Anda peroleh. Nilainya harus bertipe STRING. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter ini, lihat kode di atas.

    N/A

    Yes

    <token>

    Token layanan pelatihan yang Anda peroleh. Nilainya harus bertipe STRING.

    N/A

    Yes

    request_id

    ID permintaan. Nilainya harus bertipe STRING.

    N/A

    Yes

    images

    URL gambar yang digunakan untuk pelatihan model. Nilainya harus bertipe LIST.

    N/A

    Yes

    configure

    user_id

    ID pengguna. Nilainya harus bertipe STRING.

    N/A

    Yes

    sex

    Jenis kelamin orang dalam gambar untuk pelatihan model.

    secret

    No

    max_train_steps

    Jumlah total langkah pelatihan.

    400

    No

    val_save_checkpointing_steps

    Jumlah langkah antara dua evaluasi model.

    50

    No

    SDK untuk Java

    import com.aliyun.openservices.eas.predict.http.HttpConfig;
    import com.aliyun.openservices.eas.predict.http.QueueClient;
    import com.aliyun.openservices.eas.predict.queue_client.QueueUser;
    import org.apache.commons.lang3.tuple.Pair;
    
    public class AsyncTest {
        public static void main(String[] args) throws Exception {
            /** Buat klien layanan antrian. */
            String queueEndpoint = "182848887922****.cn-shanghai.pai-eas.aliyuncs.com";
            String inputQueueName = "photog_train_pmml";
            String queueToken = "YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA3OTZmNzc1MT****==";
    
            QueueClient inputQueue =
                new QueueClient(queueEndpoint, inputQueueName, queueToken, new HttpConfig(), new QueueUser());
    
            /** Data permintaan. */
            String data = "{\n" +
                "        'request_id'    : 12345,\n" +
                "        'images'        : [\"xx.jpg\", \"xx.jpg\"],\n" +
                "        'configure'     : {\n" +
                "            'user_id'   : \"zhoumo\",\n" +
                "        }\n" +
                "    }";
            Pair<Long, String> entry = inputQueue.put(data.getBytes(), null);
            System.out.println(String.format("index = %s, request id = %s", entry.getKey(), entry.getValue()));
    
            // Kueri detail antrian input.
            System.out.println(inputQueue.attributes());
    
            /** Matikan klien. */
            inputQueue.shutdown();
        }
    }

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Description

    Default value

    Required

    queueEndpoint

    Endpoint layanan pelatihan yang Anda peroleh. Nilainya harus bertipe STRING.

    N/A

    Yes

    inputQueueName

    Nama layanan pelatihan. Nilainya harus bertipe STRING.

    N/A

    Yes

    queueToken

    Token layanan pelatihan yang Anda peroleh. Nilainya harus bertipe STRING.

    N/A

    Yes

    request_id

    ID permintaan. Nilainya harus bertipe STRING.

    N/A

    Yes

    images

    URL gambar yang digunakan untuk pelatihan model. Nilainya harus bertipe LIST.

    N/A

    Yes

    configure

    user_id

    ID pengguna. Nilainya harus bertipe STRING.

    N/A

    Yes

    sex

    Jenis kelamin orang dalam gambar untuk pelatihan model.

    secret

    No

    max_train_steps

    Jumlah total langkah pelatihan.

    400

    No

    val_save_checkpointing_steps

    Jumlah langkah antara dua evaluasi model.

    50

    No

    Contoh respons:

    SDK untuk Python

    2 bb4ce34d-47e4-425d-bee7-b806e29c6d78
    {'consumers.list.[0]': 'Id: photog_train_pmml.photog-train-pmml-78550f91-7545766654-jpdtp, Index: 2, Pending: 0, Status: Running, Idle: 18h46m24.039s, Window: 1, Slots: 1, AutoCommit: false', 'consumers.stats.total': '1', 'consumers.status.total': '1', 'groups.list.[0]': 'Id: photog_train_pmmln, Index: 2, Pending: 1, Delivered: 3, Consumers: 1', 'meta.header.group': 'X-EAS-QueueService-Gid', 'meta.header.priority': 'X-EAS-QueueService-Priority', 'meta.header.user': 'X-EAS-QueueService-Uid', 'meta.name': 'photog-train-pmmln-queue-7a5e7cc6', 'meta.state': 'Normal', 'stream.approxMaxLength': '1438', 'stream.firstEntry': '2', 'stream.lastEntry': '2', 'stream.length': '1', 'stream.maxPayloadBytes': '20971520'}

    SDK untuk Java

    index = 3, request id = ec3b7c21-c395-4490-ae42-8f66d06e9d4d
    {"meta.header.priority":"X-EAS-QueueService-Priority","consumers.status.total":"1","stream.firstEntry":"3","stream.maxPayloadBytes":"20971520","consumers.stats.total":"1","stream.approxMaxLength":"1438","stream.length":"1","groups.list.[0]":"Id: photog_train_pmml, Index: 3, Pending: 1, Delivered: 4, Consumers: 1","meta.header.group":"X-EAS-QueueService-Gid","stream.lastEntry":"3","consumers.list.[0]":"Id: photog_train_pmmln.photog-train-pmmln-78550f91-7545766654-jpdtp, Index: 3, Pending: 0, Status: Running, Idle: 2h30m57.08s, Window: 1, Slots: 1, AutoCommit: false","meta.name":"photog-train-pmmln-queue-7a5e7cc6","meta.state":"Normal","meta.header.user":"X-EAS-QueueService-Uid"}
    
    Process finished with exit code 0

    Parameter utama dalam kode di atas:

    • index: posisi permintaan di antara semua permintaan yang dikirim ke EAS.

    • request_id: ID permintaan. ID ini digunakan untuk mengkueri hasil output.

    • Parameter lain menunjukkan detail antrian input.

  3. Buat antrian output dan berlangganan hasil pemrosesan untuk memeriksa apakah model berhasil dilatih.

    Contoh permintaan:

    SDK untuk Python

    # Buat objek antrian output untuk berlangganan hasil pemrosesan di antrian output. 
    sink_queue = QueueClient('182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'photog_train_pmml/sink')
    sink_queue.set_token('<token>')
    sink_queue.init()
    
    sink_queue.get(request_id, auto_delete=True)[0].data.decode('utf-8')

    Parameter utama dalam kode di atas:

    • sink_queue: endpoint layanan pelatihan yang Anda peroleh.

    • <token>: token layanan pelatihan yang Anda peroleh.

    SDK untuk Java

    import com.aliyun.openservices.eas.predict.http.HttpConfig;
    import com.aliyun.openservices.eas.predict.http.QueueClient;
    import com.aliyun.openservices.eas.predict.queue_client.DataFrame;
    import com.aliyun.openservices.eas.predict.queue_client.QueueUser;
    import org.apache.commons.lang3.tuple.Pair;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class AsyncPhotoTest {
        public static void main(String[] args) throws Exception {
            /** Buat klien layanan antrian. */
            String queueEndpoint = "166233998075****.cn-beijing.pai-eas.aliyuncs.com";
            String inputQueueName = "photog_train_pmml";
            String sinkQueueName = String.format("%s/sink", inputQueueName);
            String queueToken = "N2E2YWI0Y2MyNjZmNjdlMWFmZjNhOTM5M2E5ZGNlMGY1NDQwZGYw****";
    
            QueueClient inputQueue =
                    new QueueClient(queueEndpoint, inputQueueName, queueToken, new HttpConfig(), new QueueUser());
            QueueClient sinkQueue =
                    new QueueClient(queueEndpoint, sinkQueueName, queueToken, new HttpConfig(), new QueueUser());
    
            /** Data permintaan. */
            String data = "{\n" +
                    "  \"request_id\": 12345,\n" +
                    "  \"images\": [\"xx.jpg\", \"xx.jpg\"],\n" +
                    "  \"configure\": {\n" +
                    "    \"user_id\": \"zhoumo\"\n" +
                    "  }\n" +
                    "}";
            Pair<Long, String> entry = inputQueue.put(data.getBytes(), null);
            Long index = entry.getKey();
            final String requestId = entry.getValue();
            System.out.println(String.format("index = %d, request id = %s", index, requestId));
    
            // Kueri detail antrian input.
            System.out.println(inputQueue.attributes());
    
            // Kueri data input.
            Map<String, String> tags =
                    new HashMap<String, String>() {
                        {
                            put("requestId", requestId);
                        }
                    };
            DataFrame[] dfs = inputQueue.get(0, 1L, 0, false, tags);
            if (dfs.length > 0) {
                System.out.println(String.format("Successfully get data = %s, index = %d, tags = %s", new String(dfs[0].getData()), dfs[0].getIndex(), dfs[0].getTags()));
            } else {
                System.out.println("no data");
            }
    
            // Kueri data output.
            while (true) {
                dfs = sinkQueue.get(0, 1L, 0, true, tags);
                if (dfs.length > 0) {
                    System.out.println(String.format("Successfully get data = %s, tags = %s", new String(dfs[0].getData()), dfs[0].getTags()));
                    break;
                } else {
                    System.out.println("no data");
                }
            }
    
            /** Matikan klien. */
            inputQueue.shutdown();
            sinkQueue.shutdown();
        }
    }

    Parameter utama dalam kode di atas:

    • queueEndpoint: endpoint layanan pelatihan yang Anda peroleh.

    • inputQueueName: nama layanan pelatihan.

    • queueToken: token layanan pelatihan yang Anda peroleh.

    • images: URL gambar yang digunakan untuk pelatihan model.

    Contoh respons:

    SDK untuk Python

    '{"request_id": "12345", "code": "OK", "message": "success", "data": {"user_id": "zhoumo", "cost_time": 272.7406361103058}}'
    Catatan

    Jika nilai parameter code dalam respons adalah 502, pelatihan sedang berlangsung.

    SDK untuk Java

    ...
    no data
    no data
    Successfully get data = {"request_id": "12345", "code": "OK", "message": "success", "data": {"user_id": "zhoumo", "cost_time": 260.7540729045868}}
    Catatan

    Jika no data dikembalikan dalam respons, pelatihan sedang berlangsung.

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Description

    request_id

    ID permintaan. Nilainya bertipe STRING.

    code

    Status pelatihan. Nilai valid:

    • OK: Pelatihan selesai.

    • error: Pelatihan belum selesai.

    message

    Informasi detail tentang status pelatihan. Nilai success menunjukkan bahwa model telah dilatih.

    data

    Konten respons detail. Parameter:

    • user_id: ID pengguna.

    • cost_time: waktu pemrosesan untuk permintaan di sisi server.

Langkah 3: Panggil antarmuka pembuatan gambar

  1. Buka halaman Elastic Algorithm Service (EAS) dan klik nama layanan prediksi untuk membuka halaman Overview. Di bagian Basic Information, klik View Endpoint Information. Pada tab Asynchronous Invocation, peroleh endpoint layanan dan token.image

  2. Buat antrian input untuk prediksi gambar dan kueri informasi tentang antrian input tersebut.

    Contoh permintaan:

    SDK untuk Python

    import json
    from eas_prediction import QueueClient
    
    # Buat objek antrian input untuk menerima data input. 
    input_queue = QueueClient('182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'photog_pre_pmml')
    input_queue.set_token('<token>')
    input_queue.init()
    
    datas = json.dumps({
        'request_id'    : 12345, 
        'template_image': "xx.jpg", 
        'configure'     : { 
            'user_id'   : "zhoumo", # threshold to get tags.
        } 
    })
    
    index, request_id = input_queue.put(f'{datas}')
    print(index, request_id)
    
    # Kueri detail antrian input. 
    attrs = input_queue.attributes()
    print(attrs)
    
    # Kueri permintaan tertentu berdasarkan ID permintaan.
    print(input_queue.get(request_id, auto_delete=False)[0].data.decode('utf-8'))

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Description

    Default value

    Required

    input_queue

    Endpoint layanan prediksi yang Anda peroleh. Nilainya harus bertipe STRING. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter ini, lihat kode di atas.

    N/A

    Yes

    <token>

    Token layanan prediksi yang Anda peroleh. Nilainya harus bertipe STRING.

    N/A

    Yes

    request_id

    ID permintaan. Nilainya harus bertipe STRING.

    N/A

    Yes

    template_image

    URL gambar templat.

    N/A

    Yes

    configure

    user_id

    ID pengguna. Nilainya harus bertipe STRING.

    N/A

    Yes

    sex

    Jenis kelamin orang dalam gambar untuk pelatihan model. Nilainya harus bertipe STRING.

    secret

    No

    first_diffusion_steps

    Jumlah langkah dalam difusi pertama. Nilainya harus bertipe INT.

    50

    No

    first_denoising_strength

    Kekuatan difusi pertama. Nilainya harus bertipe FLOAT.

    0.45

    No

    second_diffusion_steps

    Jumlah langkah dalam difusi kedua. Nilainya harus bertipe INT.

    20

    No

    second_denoising_strength

    Kekuatan difusi kedua. Nilainya harus bertipe FLOAT.

    0.30

    No

    more_like_me_before

    Tingkat fusi wajah pertama. Nilai yang lebih tinggi menunjukkan kemiripan yang lebih tinggi. Nilainya harus bertipe FLOAT.

    0.50

    No

    more_like_me

    Tingkat fusi wajah kedua. Nilai yang lebih tinggi menunjukkan kemiripan yang lebih tinggi. Nilainya harus bertipe FLOAT.

    0.50

    No

    mask_region

    Wilayah masker. Nilainya harus bertipe STRING. Nilai valid:

    • edge: merekonstruksi hanya tepi pada difusi kedua.

    • face: merekonstruksi seluruh wajah pada difusi kedua.

    edge

    No

    crop_face_preprocess

    Menentukan apakah akan merekonstruksi potret setelah area potret dipotong. Nilainya harus bertipe BOOLEAN.

    True

    No

    apply_face_fusion_before

    Menentukan apakah akan melakukan fusi wajah pertama. Nilainya harus bertipe BOOLEAN.

    True

    No

    apply_face_fusion_after

    Menentukan apakah akan melakukan fusi wajah kedua. Nilainya harus bertipe BOOLEAN.

    True

    No

    color_shift_middle

    Menentukan apakah akan melakukan penyeimbangan warna wajah pertama. Nilainya harus bertipe BOOLEAN.

    True

    No

    color_shift_last

    Menentukan apakah akan melakukan penyeimbangan warna wajah kedua. Nilainya harus bertipe BOOLEAN.

    True

    No

    background_restore

    Menentukan apakah akan merekonstruksi latar belakang. Nilainya harus bertipe BOOLEAN.

    False

    No

    skin_retouching_bool

    Menentukan apakah akan melakukan penghalusan kulit. Nilainya harus bertipe BOOLEAN.

    True

    No

    photo_enhancement_bool

    Menentukan apakah akan meningkatkan potret. Nilainya harus bertipe BOOLEAN.

    True

    No

    photo_enhancement_method

    Metode yang digunakan untuk meningkatkan potret. Nilai valid:

    • photo_fix

    • super_resolution

    photo_fix

    No

    makeup_transfer

    Menentukan apakah akan mentransfer riasan. Nilainya harus bertipe BOOLEAN.

    False

    No

    makeup_transfer_ratio

    Kekuatan transfer riasan. Nilainya harus bertipe FLOAT.

    0.50

    No

    SDK untuk Java

    import com.aliyun.openservices.eas.predict.http.HttpConfig;
    import com.aliyun.openservices.eas.predict.http.QueueClient;
    import com.aliyun.openservices.eas.predict.queue_client.DataFrame;
    import com.aliyun.openservices.eas.predict.queue_client.QueueUser;
    import org.apache.commons.lang3.tuple.Pair;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class AsyncTest {
        public static void main(String[] args) throws Exception {
            /** Buat klien layanan antrian. */
            String queueEndpoint = "166233998075****.cn-beijing.pai-eas.aliyuncs.com";
            String inputQueueName = "photog_pre_pmml";
            String queueToken = "NjViMTI2NGQxZWQxYTI1NGE5MGQ1YTQ5Y2Y2MGZjY2VlZTVmNWE1****";
    
            QueueClient inputQueue =
                    new QueueClient(queueEndpoint, inputQueueName, queueToken, new HttpConfig(), new QueueUser());
    
            /** Data permintaan. */
            String data = "{\n" +
                    "    'request_id'    : 12345, \n" +
                    "    'template_image': \"xx.jpg\", \n" +
                    "    'configure'     : { \n" +
                    "        'user_id'   : \"zhoumo\",\n" +
                    "    } \n" +
                    "}";
            Pair<Long, String> entry = inputQueue.put(data.getBytes(), null);
            System.out.println(String.format("index = %s, request id = %s", entry.getKey(), entry.getValue()));
    
            // Kueri detail antrian input.
            System.out.println(inputQueue.attributes());
    
            // Kueri permintaan tertentu berdasarkan ID permintaan.
            final String requestId = entry.getValue();
            Map<String, String> tags =
                    new HashMap<String, String>() {
                        {
                            put("requestId", requestId);
                        }
                    };
            DataFrame df = inputQueue.get(0, 1L, 0, false, tags)[0];
            System.out.println(String.format("Successfully get data = %s, tags = %s", new String(df.getData()), df.getTags()));
    
            /** Matikan klien. */
            inputQueue.shutdown();
        }
    }

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Description

    Default value

    Required

    queueEndpoint

    Endpoint layanan prediksi yang Anda peroleh. Nilainya harus bertipe STRING.

    N/A

    Yes

    inputQueueName

    Nama layanan prediksi.

    N/A

    Yes

    queueToken

    Token layanan prediksi yang Anda peroleh. Nilainya harus bertipe STRING.

    N/A

    Yes

    request_id

    ID permintaan. Nilainya harus bertipe STRING.

    N/A

    Yes

    template_image

    URL gambar templat.

    N/A

    Yes

    configure

    user_id

    ID pengguna. Nilainya harus bertipe STRING.

    N/A

    Yes

    sex

    Jenis kelamin orang dalam gambar untuk pelatihan model. Nilainya harus bertipe STRING.

    secret

    No

    first_diffusion_steps

    Jumlah langkah dalam difusi pertama. Nilainya harus bertipe INT.

    50

    No

    first_denoising_strength

    Kekuatan difusi pertama. Nilainya harus bertipe FLOAT.

    0.45

    No

    second_diffusion_steps

    Jumlah langkah dalam difusi kedua. Nilainya harus bertipe INT.

    20

    No

    second_denoising_strength

    Kekuatan difusi kedua. Nilainya harus bertipe FLOAT.

    0.30

    No

    more_like_me_before

    Tingkat fusi wajah pertama. Nilai yang lebih tinggi menunjukkan kemiripan yang lebih tinggi. Nilainya harus bertipe FLOAT.

    0.50

    No

    more_like_me

    Tingkat fusi wajah kedua. Nilai yang lebih tinggi menunjukkan kemiripan yang lebih tinggi. Nilainya harus bertipe FLOAT.

    0.50

    No

    mask_region

    Wilayah masker. Nilainya harus bertipe STRING. Nilai valid:

    • edge: merekonstruksi hanya tepi pada difusi kedua.

    • face: merekonstruksi seluruh wajah pada difusi kedua.

    edge

    No

    crop_face_preprocess

    Menentukan apakah akan merekonstruksi potret setelah area potret dipotong. Nilainya harus bertipe BOOLEAN.

    True

    No

    apply_face_fusion_before

    Menentukan apakah akan melakukan fusi wajah pertama. Nilainya harus bertipe BOOLEAN.

    True

    No

    apply_face_fusion_after

    Menentukan apakah akan melakukan fusi wajah kedua. Nilainya harus bertipe BOOLEAN.

    True

    No

    color_shift_middle

    Menentukan apakah akan melakukan penyeimbangan warna wajah pertama. Nilainya harus bertipe BOOLEAN.

    True

    No

    color_shift_last

    Menentukan apakah akan melakukan penyeimbangan warna wajah kedua. Nilainya harus bertipe BOOLEAN.

    True

    No

    background_restore

    Menentukan apakah akan merekonstruksi latar belakang. Nilainya harus bertipe BOOLEAN.

    False

    No

    skin_retouching_bool

    Menentukan apakah akan melakukan penghalusan kulit. Nilainya harus bertipe BOOLEAN.

    True

    No

    photo_enhancement_bool

    Menentukan apakah akan meningkatkan potret. Nilainya harus bertipe BOOLEAN.

    True

    No

    photo_enhancement_method

    Metode yang digunakan untuk meningkatkan potret. Nilai valid:

    • photo_fix

    • super_resolution

    photo_fix

    No

    makeup_transfer

    Menentukan apakah akan mentransfer riasan. Nilainya harus bertipe BOOLEAN.

    False

    No

    makeup_transfer_ratio

    Kekuatan transfer riasan. Nilainya harus bertipe FLOAT.

    0.50

    No

    Contoh respons:

    SDK untuk Python

    1 069173d0-dce9-4ed6-913e-cc5fdda38764
    {'consumers.list.[0]': 'Id: photog_pre_pmml.photog-pre-pmml-835253f3-686f87d4f-d****, Index: 0, Pending: 0, Status: Running, Idle: 21h41m4.995s, Window: 1, Slots: 1, AutoCommit: false', 'consumers.stats.total': '1', 'consumers.status.total': '1', 'groups.list.[0]': 'Id: photog_pre_pmml, Index: 1, Pending: 1, Delivered: 2, Consumers: 1', 'meta.header.group': 'X-EAS-QueueService-Gid', 'meta.header.priority': 'X-EAS-QueueService-Priority', 'meta.header.user': 'X-EAS-QueueService-Uid', 'meta.name': 'photog-pre-pmml-queue-912f2cdb', 'meta.state': 'Normal', 'stream.approxMaxLength': '1439', 'stream.firstEntry': '1', 'stream.lastEntry': '1', 'stream.length': '1', 'stream.maxPayloadBytes': '20971520'}
    {"request_id": 12345, "template_image": "https://xx.oss-cn-beijing.aliyuncs.com/photog/user_images/foto/train/1.jpg", "configure": {"user_id": "zhoumo"}}

    SDK untuk Java

    index = 4, request id = 996cb029-133e-4f18-bb03-e696fc6ae4a1
    {"meta.header.priority":"X-EAS-QueueService-Priority","consumers.status.total":"1","stream.firstEntry":"4","stream.maxPayloadBytes":"20971520","consumers.stats.total":"1","stream.approxMaxLength":"1436","stream.length":"1","groups.list.[0]":"Id: photog_pre_pmml, Index: 4, Pending: 1, Delivered: 5, Consumers: 1","meta.header.group":"X-EAS-QueueService-Gid","stream.lastEntry":"4","consumers.list.[0]":"Id: photog_pre_pmml.photog-pre-pmml-835253f3-686f87d4f-d****, Index: 4, Pending: 0, Status: Running, Idle: 2m12.017s, Window: 1, Slots: 1, AutoCommit: false","meta.name":"photog-pre-pmml-queue-912f2cdb","meta.state":"Normal","meta.header.user":"X-EAS-QueueService-Uid"}
    Successfully get data = {
        'request_id'    : 12345, 
        'template_image': "https://xx.oss-cn-beijing.aliyuncs.com/photog/user_images/foto/train/1.jpg", 
        'configure'     : { 
            'user_id'   : "zhoumo",
        } 
    }, tags = {requestId=996cb029-133e-4f18-bb03-e696fc6ae4a1, ts@source=169778191****}
    
    Process finished with exit code 0

    Parameter utama dalam kode di atas:

    • index: posisi permintaan di antara semua permintaan yang dikirim ke EAS.

    • request_id: ID permintaan. ID ini digunakan untuk mengkueri hasil output.

    • Parameter lain menunjukkan detail antrian input.

  3. Buat antrian output dan kueri hasil output. Dalam respons, Anda dapat melihat gambar yang dikodekan Base64.

    Contoh permintaan:

    SDK untuk Python

    # Buat objek antrian output untuk berlangganan hasil pemrosesan di antrian output. 
    sink_queue = QueueClient('182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'photog_pre_pmml/sink')
    sink_queue.set_token('<token>')
    sink_queue.init()
    
    sink_queue.get(request_id, auto_delete=True)[0].data.decode('utf-8')

    Parameter utama dalam kode di atas:

    • sink_queue: endpoint layanan prediksi yang Anda peroleh.

    • <token>: token layanan prediksi yang Anda peroleh.

    SDK untuk Java

    import com.aliyun.openservices.eas.predict.http.HttpConfig;
    import com.aliyun.openservices.eas.predict.http.QueueClient;
    import com.aliyun.openservices.eas.predict.queue_client.DataFrame;
    import com.aliyun.openservices.eas.predict.queue_client.QueueUser;
    import org.apache.commons.lang3.tuple.Pair;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class AsyncPhotoTest {
        public static void main(String[] args) throws Exception {
            /** Buat klien layanan antrian. */
            String queueEndpoint = "166233998075****.cn-beijing.pai-eas.aliyuncs.com";
            String inputQueueName = "photog_pre_pmml";
            String sinkQueueName = String.format("%s/sink", inputQueueName);
            String queueToken = "NjViMTI2NGQxZWQxYTI1NGE5MGQ1YTQ5Y2Y2MGZjY2VlZTVmNWE1****";
    
            QueueClient inputQueue =
                    new QueueClient(queueEndpoint, inputQueueName, queueToken, new HttpConfig(), new QueueUser());
            QueueClient sinkQueue =
                    new QueueClient(queueEndpoint, sinkQueueName, queueToken, new HttpConfig(), new QueueUser());
    
            /** Data permintaan. */
            String data = "{\n" +
                    "  \"request_id\": 12345,\n" +
                    "  \"template_image\": \"xx.jpg\",\n" +
                    "  \"configure\": {\n" +
                    "    \"user_id\": \"zhoumo\"\n" +
                    "  }\n" +
                    "}";
            Pair<Long, String> entry = inputQueue.put(data.getBytes(), null);
            Long index = entry.getKey();
            final String requestId = entry.getValue();
            System.out.println(String.format("index = %d, request id = %s", index, requestId));
    
            // Kueri detail antrian input.
            System.out.println(inputQueue.attributes());
    
            // Kueri data input.
            Map<String, String> tags =
                    new HashMap<String, String>() {
                        {
                            put("requestId", requestId);
                        }
                    };
            DataFrame[] dfs = inputQueue.get(0, 1L, 0, false, tags);
            if (dfs.length > 0) {
                System.out.println(String.format("Successfully get data = %s, index = %d, tags = %s", new String(dfs[0].getData()), dfs[0].getIndex(), dfs[0].getTags()));
            } else {
                System.out.println("no data");
            }
    
            // Kueri data output.
            while (true) {
                dfs = sinkQueue.get(0, 1L, 0, true, tags);
                if (dfs.length > 0) {
                    System.out.println(String.format("Successfully get data = %s, tags = %s", new String(dfs[0].getData()), dfs[0].getTags()));
                    break;
                } else {
                    System.out.println("no data");
                }
            }
    
            /** Matikan klien. */
            inputQueue.shutdown();
            sinkQueue.shutdown();
        }
    }

    Parameter utama dalam kode di atas:

    • queueEndpoint: endpoint layanan prediksi yang Anda peroleh.

    • inputQueueName: nama layanan prediksi.

    • queueToken: token layanan prediksi yang Anda peroleh.

    • template_image: URL gambar templat.

    Contoh respons:

    SDK untuk Python

    '{"request_id": "12345", "code": "OK", "message": "success", "data": {"user_id": "zhoumo", "image": "iVBORw*****CYII=", "cost_time": 329.69798278808594}}'
    Catatan

    Jika nilai parameter code dalam respons adalah 502, gambar sedang dihasilkan.

    SDK untuk Java

    ...
    no data
    no data
    Successfully get data = {"request_id": "12345", "code": "OK", "message": "success", "data": {"user_id": "zhoumo", "image": "iVBORw0KGgoAAA****ABJRU5ErkJggg==", "cost_time": 21.584840059280396}}
    Catatan

    Jika no data dikembalikan dalam respons, gambar sedang dihasilkan.

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Description

    request_id

    ID permintaan. Nilainya bertipe STRING.

    code

    Kode status permintaan. Nilai valid:

    • OK: Permintaan berhasil.

    • error: Permintaan gagal.

    message

    Informasi detail tentang status permintaan. Nilai success menunjukkan bahwa permintaan berhasil. Jika nilai lain dikembalikan, selesaikan masalah berdasarkan pesan yang dikembalikan.

    data

    Konten respons detail. Parameter:

    • user_id: ID pengguna.

    • image: Gambar yang dihasilkan dalam format Base64.

    • cost_time: waktu yang dikonsumsi. Nilainya bertipe FLOAT.