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
Lakukan pemeriksaan awal pada gambar untuk memastikan kesesuaian gambar tersebut.
Pra-proses dan periksa kualitas gambar, lalu latih serta evaluasi model secara otomatis menggunakan LoRA untuk menghasilkan model yang telah dioptimalkan.
Pra-proses gambar templat.
Hasilkan gambar pada difusi pertama.
Hasilkan gambar pada difusi kedua.
Prasyarat
Virtual private cloud (VPC) telah dibuat dan akses Internet diaktifkan untuk VPC tersebut.
VPC, vSwitch, dan grup keamanan telah dibuat. Untuk informasi selengkapnya, lihat Buat VPC dengan blok CIDR IPv4 dan Buat grup keamanan.
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
-
Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
-
Klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.
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": 1untuk 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 } ] }
Klik Deploy.
Ketika Service Status berubah menjadi Running, layanan berhasil diterapkan.
Terapkan layanan pelatihan
-
Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
-
Klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.
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": 1untuk 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 } ] }
Klik Deploy.
Ketika Service Status berubah menjadi Running, layanan berhasil diterapkan.
Terapkan layanan prediksi
-
Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
-
Klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.
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/webuiatau jalur NAS/photog_oss/webuisesuai 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.
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": 1untuk 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/" } ] }
Klik Deploy.
Ketika Service Status berubah menjadi Running, layanan berhasil diterapkan.
Panggil layanan
Langkah 1: Panggil layanan verifikasi
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.

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 0Parameter 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.
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 parameterauto_deleteke 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.
Langkah 2: Panggil layanan pelatihan
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.

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 0Parameter 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.
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}}'CatatanJika 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}}CatatanJika
no datadikembalikan 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
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.

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 0Parameter 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.
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}}'CatatanJika 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}}CatatanJika
no datadikembalikan 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.