Topik ini menjelaskan cara menyebar layanan potret online sebagai pekerjaan yang dapat diskalakan untuk melakukan inferensi, mengatasi masalah seperti pemanfaatan sumber daya yang tidak optimal dan gangguan permintaan selama skala-masuk.
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 di 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.
Untuk pelatihan model dan pembuatan potret, siapkan 5 hingga 20 citra pelatihan dan 1 citra templat. Format citra berikut didukung:
.jpg,.jpeg, dan.png. Pastikan ukuran setiap citra lebih besar dari 512 x 512 piksel.Potret satu orang: Citra templat harus berisi wajah seseorang. Wajah-wajah dalam beberapa citra pelatihan berasal dari orang yang sama.
Potret multi-orang: Citra templat harus berisi beberapa wajah, dan jumlah wajah tersebut harus sama dengan nilai parameter model_id yang ditentukan untuk pelatihan model.
Bucket Object Storage Service (OSS) telah dibuat. Untuk informasi selengkapnya, lihat Buat bucket.
Batasan
Solusi Portret AI hanya didukung di wilayah Tiongkok (Beijing) dan Singapura.
Menyebar pekerjaan yang dapat diskalakan untuk inferensi model
Menyebar 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 berikut. Tabel-tabel berikut menjelaskan parameter kunci; gunakan pengaturan default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Penyebaran kustom.
Pada bagian Basic Information, masukkan nama layanan, misalnya photog_check.
Pada bagian Environment Information, konfigurasikan parameter sesuai tabel berikut.
Parameter
Deskripsi
Deployment Method
Pilih Image-based Deployment dan aktifkan Asynchronous Queue.
Image Configuration
Pilih Image Address dan tentukan alamat citra. Nilai yang valid:
registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:check. 1.0.0.pub: alamat citra di wilayah Tiongkok (Beijing).registry.ap-southeast-1.aliyuncs.com/mybigpai/photog_pub:check. 1.0.0.pub: alamat citra di wilayah Singapura.
Code Build
Klik OSS dan konfigurasikan parameter berikut:
Uri: Pilih jalur bucket OSS. Contoh:
oss://examplebucket/.Mount Path: Masukkan
/photog_oss.
Command
Masukkan
python app.py.Port Number
Masukkan 7860.
Pada bagian Resource Information, konfigurasikan parameter sesuai tabel berikut.
Parameter
Deskripsi
Resource Type
Pilih Public Resources.
Deployment Resources
Pilih tipe instans -gu30 pada tab GPU. Kami merekomendasikan Anda menggunakan tipe instans ml.gu7i.c32m188.1-gu30.
Additional System Disk
Tetapkan nilainya menjadi 120. Satuan: GiB.
Pada bagian Asynchronous Queue, konfigurasikan parameter sesuai tabel berikut.
Parameter
Deskripsi
Resource Type
Pilih Public Resources.
Deployment
Minimum Instances: 1
vCPUs: 8 Core
Memory (GB): 64 GB
Maximum Data for A Single Input Request
Tetapkan nilainya menjadi 20480 KB untuk memastikan ruang penyimpanan cukup bagi setiap permintaan dalam antrian.
Maximum Data for A Single Output
Pada bagian Service Access, pilih virtual private cloud (VPC), vSwitch, dan grup keamanan yang telah Anda buat.
Pada bagian Service Configuration, tambahkan opsi berikut. Untuk informasi selengkapnya, lihat contoh konfigurasi lengkap.
Field
Opsi baru
metadata
Tambahkan opsi berikut:
"rpc": { "keepalive": 3600000, "worker_threads": 1 }keepalive: waktu pemrosesan maksimum untuk satu permintaan. Satuan: milidetik. Tetapkan nilainya menjadi 3600000.
worker_threads: jumlah thread yang digunakan untuk memproses permintaan secara konkuren di setiap instans Elastic Algorithm Service (EAS).
Nilai default adalah 5, yang berarti lima pekerjaan pertama dalam antrian akan ditugaskan ke instans yang sama. Untuk memastikan permintaan diproses dalam antrian secara berurutan, kami merekomendasikan Anda menetapkan opsi ini menjadi 1.
queue
Tambahkan opsi
"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.
Menyebar 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. Tabel-tabel berikut menjelaskan parameter kunci; gunakan pengaturan default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Penyebaran kustom.
Pada bagian Basic Information, masukkan Service Name, misalnya photog_check.
Pada bagian Environment Information, konfigurasikan parameter sesuai tabel berikut.
Parameter
Deskripsi
Deployment Method
Pilih Image-based Deployment dan aktifkan Asynchronous Queue.
Image Configuration
Pilih Image Address dan tentukan alamat citra. Nilai yang valid:
Alamat citra di wilayah Tiongkok (Beijing):
registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:train. 1.0.0.pub.Alamat citra di wilayah Singapura:
registry.ap-southeast-1.aliyuncs.com/mybigpai/photog_pub:train. 1.0.0.pub.
Code Build
Klik OSS dan konfigurasikan parameter berikut:
Uri: Pilih jalur bucket OSS yang Anda tentukan untuk layanan verifikasi. Contoh:
oss://examplebucket/.Mount Path: Dalam contoh ini, digunakan
/photog_oss.
Command
Masukkan
python app.py.Port Number
Masukkan 7860.
Pada bagian Resource Information, konfigurasikan parameter sesuai tabel berikut.
Parameter
Deskripsi
Resource Type
Pilih Public Resources.
Deployment Resources
Pilih tipe instans -gu30 pada tab GPU. Kami merekomendasikan Anda menggunakan tipe instans ml.gu7i.c32m188.1-gu30.
Additional System Disk
Tetapkan nilainya menjadi 120. Satuan: GiB.
Pada bagian Asynchronous Queue, konfigurasikan parameter sesuai tabel berikut.
Parameter
Deskripsi
Resource Type
Pilih Public Resources.
Deployment
Minimum Instances: 1
vCPUs: 8 Core
Memory (GB): 64 GB
Maximum Data for A Single Input Request
Tetapkan nilainya menjadi 20480 KB untuk memastikan ruang penyimpanan cukup bagi setiap permintaan dalam antrian.
Maximum Data for A Single Output
Pada bagian Service Access, pilih virtual private cloud (VPC), vSwitch, dan grup keamanan yang telah Anda buat.
Pada bagian Service Configuration, tambahkan opsi berikut. Untuk informasi selengkapnya, lihat contoh konfigurasi lengkap.
Field
Opsi yang ditambahkan
autoscaler
Opsional. Konfigurasi untuk penskalaan otomatis layanan. Untuk informasi selengkapnya, lihat Penskalaan horizontal otomatis.
"behavior": { "scaleDown": { "stabilizationWindowSeconds": 60 } }, "max": 5, "min": 1, "strategies": { "queue[backlog]": 1 }metadata
Tambahkan opsi berikut:
"rpc": { "keepalive": 3600000, "worker_threads": 1 }keepalive: waktu pemrosesan maksimum untuk satu permintaan. Satuan: milidetik. Tetapkan nilainya menjadi 3600000.
worker_threads: jumlah thread yang digunakan untuk memproses permintaan secara konkuren di setiap instans EAS.
Nilai default adalah 5, yang berarti lima tugas pertama dalam antrian akan ditugaskan ke instans yang sama. Untuk memastikan permintaan diproses dalam antrian secara berurutan, kami merekomendasikan Anda menetapkan opsi ini menjadi 1.
queue
Tambahkan opsi
"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.
Menyebar layanan prediksi
Dalam contoh ini, layanan prediksi diterapkan sebagai pekerjaan yang dapat diskalakan. Lakukan langkah-langkah berikut:
Klik Deploy Service. Di bagian Custom Model Deployment, klik JSON Deployment.
Masukkan informasi konfigurasi berikut di editor JSON.
{ "metadata": { "name": "photog_pre_pmml", "instance": 1, "rpc": { "keepalive": 3600000, "worker_threads": 1 }, "type": "ScalableJob" }, "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/" } ] }Tabel berikut menjelaskan parameter kunci. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter lainnya, lihat Parameter terkait model layanan.
Parameter
Deskripsi
metadata
name
Nama layanan, yang unik dalam wilayah tersebut.
type
Tetapkan nilainya menjadi ScalableJob untuk menerapkan layanan inferensi asinkron sebagai pekerjaan yang dapat diskalakan.
containers
image
Anda perlu menentukan alamat citra untuk layanan prediksi Portret AI dan layanan prediksi antarmuka web. Dalam contoh ini, digunakan alamat citra di wilayah Tiongkok (Beijing). Nilai yang valid:
Alamat citra di wilayah Tiongkok (Beijing):
Layanan prediksi Portret AI:
registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:infer. 1.0.0.pub.Layanan prediksi antarmuka web:
eas-registry-vpc.cn-beijing.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:3.2.
Alamat citra di wilayah Singapura:
Layanan prediksi Portret AI:
registry.ap-southeast-1.aliyuncs.com/mybigpai/photog_pub:infer. 1.0.0.pub.Layanan prediksi antarmuka web:
eas-registry-vpc.ap-southeast-1.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:3.2.
storage
path
Dalam contoh ini, digunakan pemasangan OSS. Tetapkan nilainya ke jalur bucket OSS Anda yang telah ditentukan untuk layanan verifikasi. Contoh:
oss://examplebucket/.Unduh dan ekstrak file model WebUI. Simpan file tersebut di bucket OSS. Dalam contoh ini, digunakan jalur
oss://examplebucket/photog_oss/webui. Untuk informasi tentang cara mengunggah objek ke bucket OSS, lihat Ikhtisar ossutil. Untuk informasi tentang cara mengunggah file ke sistem file File Storage NAS, lihat Memasang sistem file pada instans ECS Linux dan Mengelola file.mount_path
Tetapkan nilainya menjadi
/photog_oss.Klik Deploy.
Setelah Anda menerapkan pekerjaan yang dapat diskalakan, sistem secara otomatis membuat layanan antrian dan mengaktifkan fitur penskalaan otomatis untuk layanan tersebut.
Memanggil layanan
Setelah Anda menerapkan layanan, Anda dapat memanggil layanan tersebut untuk menerapkan Portret AI.
Saat memanggil layanan, Anda harus menetapkan parameter taskType menjadi query untuk menentukan bahwa permintaan tersebut merupakan permintaan inferensi. Untuk informasi selengkapnya, lihat Memanggil layanan. Kode contoh:
import json
from eas_prediction import QueueClient
# Buat objek antrian masukan untuk menerima data masukan.
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"], # url, daftar
'configure' : {
'face_reconize' : True, # Menilai apakah semua gambar berasal dari satu orang
}
}
)
# Tetapkan parameter taskType menjadi query.
tags = {"taskType": "query"}
index, request_id = input_queue.put(f'{datas}', tags)
print(index, request_id)
# Lihat detail tentang antrian masukan.
attrs = input_queue.attributes()
print(attrs)Referensi
Untuk informasi tentang cara menerapkan pekerjaan yang dapat diskalakan dalam skenario pelatihan, lihat Menerapkan pelatihan berbasis Kohya sebagai pekerjaan yang dapat diskalakan.
Untuk informasi selengkapnya tentang layanan Scalable Job, lihat Ikhtisar.