Anda dapat menambahkan instance Elastic Compute Service (ECS) dari keluarga instans kelas perusahaan generasi ke-8 g8i ke dalam kluster Container Service for Kubernetes (ACK) sebagai node pekerja dan mengadopsi teknologi Intel® Extension for PyTorch (IPEX) untuk mempercepat inferensi teks-ke-gambar. Anda juga dapat membuat node pool yang mendukung Trust Domain Extensions (TDX) VM rahasia lalu memigrasikan layanan inferensi Anda ke node pool tersebut untuk meningkatkan keamanan layanan inferensi. Topik ini menggunakan model Stable Diffusion XL Turbo sebagai contoh untuk menjelaskan cara menggunakan kebijakan percepatan CPU dan keluarga instans g8i untuk mendapatkan pengalaman inferensi model yang dipercepat sama seperti menggunakan instance ECS dengan percepatan GPU. Hal ini memungkinkan Anda mengembangkan layanan inferensi teks-ke-gambar yang stabil, berperforma tinggi, hemat biaya, dan aman.
Informasi latar belakang
Keluarga instans kelas perusahaan generasi ke-8 g8i
Keluarga instans ECS tujuan umum generasi ke-8 g8i diberdayakan oleh Unit Pemrosesan Infrastruktur Cloud (CIPU) dan Apsara Stack. Instans ini menggunakan prosesor Intel® Xeon® Scalable generasi ke-5 (dengan nama kode Emerald Rapids) untuk meningkatkan performa. Selain itu, keluarga instans g8i mengadopsi Advanced Matrix Extensions (AMX), yang menawarkan peningkatan performa AI dan keamanan. Semua instance ECS dari keluarga instans g8i mendukung Intel® TDX. Teknologi ini memungkinkan Anda menerapkan beban kerja di Lingkungan Eksekusi Tepercaya (TEE) tanpa melakukan perubahan pada aplikasi. Ini menghilangkan kesenjangan teknologi bagi pemula dan meningkatkan kerahasiaan aplikasi AI seperti model bahasa besar dengan kerugian performa minimal. Untuk informasi lebih lanjut, lihat g8i, keluarga instans tujuan umum.
Intel® TDX
Intel® TDX adalah teknologi berbasis perangkat keras CPU yang menyediakan isolasi dan enkripsi bantuan perangkat keras untuk instance ECS guna melindungi data runtime, seperti register CPU, data memori, dan injeksi interupsi. Intel® TDX membantu mencapai tingkat privasi data yang lebih tinggi dan mengurangi risiko yang terkait dengan akses tidak sah ke proses yang sedang berjalan atau data sensitif yang sedang diproses. Untuk informasi lebih lanjut tentang Intel® TDX, lihat Intel® Trust Domain Extensions (Intel® TDX).
Intel® TDX memberikan perlindungan out-of-the-box default untuk instance ECS dan aplikasi Anda. Anda dapat memigrasikan aplikasi ke instance yang mendukung TDX tanpa perlu memodifikasi kode aplikasi.
IPEX
Intel® Extension for PyTorch (IPEX) adalah ekstensi PyTorch sumber terbuka yang dikelola oleh Intel. IPEX sangat meningkatkan performa aplikasi AI yang menggunakan PyTorch dan berjalan pada prosesor Intel. Intel akan terus mengoptimalkan IPEX dengan teknologi perangkat keras dan perangkat lunak terdepan untuk memberdayakan komunitas PyTorch. Untuk informasi lebih lanjut, lihat IPEX.
Alibaba Cloud tidak menjamin legalitas, keamanan, dan akurasi model pihak ketiga "Stable Diffusion" dan "stabilityai/sdxl-turbo". Alibaba Cloud tidak bertanggung jawab atas segala kerugian atau kerusakan yang timbul dari penggunaan model-model ini.
Anda harus mematuhi perjanjian pengguna, spesifikasi penggunaan, dan hukum serta peraturan terkait model pihak ketiga. Anda setuju bahwa penggunaan model pihak ketiga sepenuhnya merupakan risiko Anda sendiri.
Layanan sampel dalam topik ini hanya untuk pembelajaran, pengujian, dan pembuktian konsep (POC) dan statistiknya hanya untuk referensi. Statistik sebenarnya mungkin berbeda berdasarkan lingkungan Anda.
Prasyarat
Sebuah kluster ACK Pro telah dibuat di wilayah Cina (Beijing). Untuk informasi lebih lanjut, lihat Buat kluster ACK yang dikelola.
Sebuah node pool telah dibuat.
Node pool reguler: Buat node pool yang berisi instance ECS dari keluarga instans g8i dan memenuhi persyaratan berikut:
Wilayah dan zona: Node pool berada di wilayah dan zona yang didukung oleh ECS. Untuk informasi lebih lanjut, lihat Jenis Instans yang Tersedia untuk Setiap Wilayah.
Jenis instans: Pilih jenis instans yang menyediakan setidaknya 16 vCPU. Kami merekomendasikan Anda memilih
ecs.g8i.4xlarge, ecs.g8i.8xlarge, atauecs.g8i.12xlarge.Ruang disk: Ruang disk setiap node dalam node pool adalah minimal 200 GiB. Anda dapat menggunakan disk sistem atau disk data yang lebih besar dari 200 GiB.
Node pool yang mendukung VM rahasia TDX: Anda juga dapat memigrasikan aplikasi Anda secara mulus ke node pool yang mendukung VM rahasia TDX untuk meningkatkan keamanan layanan inferensi Anda. Untuk melakukannya, pastikan Prasyarat telah terpenuhi.
Klien kubectl terhubung ke kluster ACK. Untuk informasi lebih lanjut, lihat Hubungkan ke kluster ACK menggunakan kubectl.
Langkah 1: Persiapkan model Stable Diffusion XL Turbo
Model Stable Diffusion XL Turbo stabilityai/sdxl-turbo digunakan dalam contoh ini.
Prosedur
Gunakan model resmi stabilityai/sdxl-turbo
Buat file bernama values.yaml dan tambahkan konten berikut ke file tersebut. Anda dapat memodifikasi konfigurasi sumber daya berdasarkan jenis instans dari node pool.
resources:
limits:
cpu: "16"
memory: 32Gi
requests:
cpu: "14"
memory: 24GiGunakan model stabilityai/sdxl-turbo kustom
Anda juga dapat menggunakan model stabilityai/sdxl-turbo kustom yang disimpan di Object Storage Service (OSS). Buat Pengguna Resource Access Management (RAM) yang memiliki izin akses OSS dan dapatkan pasangan AccessKey dari pengguna RAM tersebut.
Prosedur
Buat file bernama models-oss-secret.yaml dan tambahkan konten berikut ke file tersebut.
apiVersion: v1 kind: Secret metadata: name: models-oss-secret namespace: default stringData: akId: <yourAccessKeyID> # Ganti dengan ID AccessKey dari pengguna RAM. akSecret: <yourAccessKeySecret> # Ganti dengan Rahasia AccessKey dari pengguna RAM.Jalankan perintah berikut untuk membuat Secret:
kubectl create -f models-oss-secret.yamlOutput yang Diharapkan:
secret/models-oss-secret createdBuat file bernama models-oss-pv.yaml dan tambahkan konten berikut ke file tersebut.
apiVersion: v1 kind: PersistentVolume metadata: name: models-oss-pv labels: alicloud-pvname: models-oss-pv spec: capacity: storage: 50Gi accessModes: - ReadOnlyMany persistentVolumeReclaimPolicy: Retain csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: models-oss-pv nodePublishSecretRef: name: models-oss-secret namespace: default volumeAttributes: bucket: "<yourBucketName>" # Ganti dengan nama Bucket OSS yang akan dimount. url: "<yourOssEndpoint>" # Ganti dengan endpoint Bucket OSS yang akan dimount. Kami merekomendasikan Anda menggunakan endpoint internal. Dalam contoh ini, endpoint adalah oss-cn-beijing-internal.aliyuncs.com. otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other" path: "/models" # Jalur model. Pastikan direktori stabilityai/sdxl-turbo dapat ditemukan di jalur ini.Untuk informasi lebih lanjut tentang parameter OSS, lihat Mount volume ossfs 1.0 yang disediakan secara statis.
Jalankan perintah berikut untuk membuat volume persisten (PV) yang disediakan secara statis:
kubectl create -f models-oss-pv.yamlOutput yang Diharapkan:
persistentvolume/models-oss-pv createdBuat file bernama models-oss-pvc.yaml dan tambahkan konten berikut ke file tersebut:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: models-oss-pvc spec: accessModes: - ReadOnlyMany resources: requests: storage: 50Gi selector: matchLabels: alicloud-pvname: models-oss-pvJalankan perintah berikut untuk membuat klaim volume persisten (PVC):
kubectl create -f models-oss-pvc.yamlOutput yang Diharapkan:
persistentvolumeclaim/models-oss-pvc createdBuat file bernama values.yaml dan tambahkan konten berikut ke file tersebut.
Anda dapat memodifikasi konfigurasi sumber daya berdasarkan jenis instans dari node pool.
resources: limits: cpu: "16" memory: 32Gi requests: cpu: "14" memory: 24Gi useCustomModels: true volumes: models: name: data-volume persistentVolumeClaim: claimName: models-oss-pvc
Konfigurasi penyebaran layanan di values.yaml
Langkah 2: Sebarkan layanan sampel
Jalankan perintah berikut untuk menyebarkan model Stable Diffusion XL Turbo yang dipercepat IPEX:
helm install stable-diffusion-ipex https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/pre/charts-incubator/stable-diffusion-ipex-0.1.7.tgz -f values.yamlOutput yang Diharapkan:
NAME: stable-diffusion-ipex LAST DEPLOYED: Mon Jan 22 20:42:35 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: NoneTunggu 10 menit dan jalankan perintah berikut untuk memeriksa status pod. Pastikan pod sedang berjalan.
kubectl get pod |grep stable-diffusion-ipexOutput yang Diharapkan:
stable-diffusion-ipex-65d98cc78-vmj49 1/1 Running 0 1m44s
Setelah layanan diterapkan, hasilkan API teks-ke-gambar yang dapat diakses publik. Untuk informasi lebih lanjut tentang API, lihat Parameter API.
Langkah 3: Uji layanan sampel
Prosedur
Jalankan perintah berikut untuk memetakan port layanan model Stable Diffusion XL Turbo ke port lokal:
kubectl port-forward svc/stable-diffusion-ipex 5000:5000Output yang Diharapkan:
Forwarding from 127.0.0.1:5000 -> 5000 Forwarding from [::1]:5000 -> 5000Gunakan prompt teks untuk meminta layanan menghasilkan gambar.
Dalam contoh ini, layanan menghasilkan gambar
512x512atau1024x1024.Gambar 512x512
Jalankan perintah berikut untuk meminta layanan menghasilkan gambar berdasarkan prompt teks
Seekor panda mendengarkan musik dengan headphone. Sangat detail, 8k.:curl -X POST http://127.0.0.1:5000/api/text2image \ -d '{"prompt": "Seekor panda mendengarkan musik dengan headphone. Sangat detail, 8k.", "number": 1}'Output yang Diharapkan:
{ "averageImageGenerationTimeSeconds": 2.0333826541900635, "generationTimeSeconds": 2.0333826541900635, "id": "9ae43577-170b-45c9-ab80-69c783b41a70", "meta": { "input": { "batch": 1, "model": "stabilityai/sdxl-turbo", "number": 1, "prompt": "Seekor panda mendengarkan musik dengan headphone. Sangat detail, 8k.", "size": "512x512", "step": 4 } }, "output": [ { "latencySeconds": 2.0333826541900635, "url": "http://127.0.0.1:5000/images/9ae43577-170b-45c9-ab80-69c783b41a70/0_0.png" } ], "status": "success" }Anda dapat memasukkan URL yang dikembalikan ke bilah alamat browser Anda untuk melihat gambar.
Gambar 1024x1024
Jalankan perintah berikut untuk meminta layanan menghasilkan gambar berdasarkan prompt teks
Seekor panda mendengarkan musik dengan headphone. Sangat detail, 8k.:curl -X POST http://127.0.0.1:5000/api/text2image \ -d '{"prompt": "Seekor panda mendengarkan musik dengan headphone. Sangat detail, 8k.", "number": 1, "size": "1024x1024"}'Output yang Diharapkan:
{ "averageImageGenerationTimeSeconds": 8.635204315185547, "generationTimeSeconds": 8.635204315185547, "id": "ac341ced-430d-4952-b9f9-efa57b4eeb60", "meta": { "input": { "batch": 1, "model": "stabilityai/sdxl-turbo", "number": 1, "prompt": "Seekor panda mendengarkan musik dengan headphone. Sangat detail, 8k.", "size": "1024x1024", "step": 4 } }, "output": [ { "latencySeconds": 8.635204315185547, "url": "http://127.0.0.1:5000/images/ac341ced-430d-4952-b9f9-efa57b4eeb60/0_0.png" } ], "status": "success" }Anda dapat memasukkan URL yang dikembalikan ke bilah alamat browser Anda untuk melihat gambar.
Data uji
Tabel berikut menjelaskan statistik durasi model Stable Diffusion XL Turbo yang menghasilkan gambar 512x512 dan 1024x1024 pada berbagai jenis instans ECS dari keluarga instans g8i. Statistik ini hanya untuk referensi. Statistik sebenarnya mungkin berbeda berdasarkan lingkungan Anda.
Jenis instans | Pod Request/Limit | Parameter | Durasi rata-rata setiap kali (512x512) | Durasi rata-rata setiap kali (1024x1024) |
ecs.g8i.4xlarge (16 vCPU, 64 GiB) | 14/16 | batch: 1 step: 4 | 2.2s | 8.8s |
ecs.g8i.8xlarge (32 vCPU, 128 GiB) | 24/32 | batch: 1 step: 4 | 1.3s | 4.7s |
ecs.g8i.12xlarge (48 vCPU, 192 GiB) | 32/32 | batch: 1 step: 4 | 1.1s | 3.9s |
(Opsional) Langkah 4: Migrasikan layanan ke node pool yang mendukung VM rahasia TDX
Setelah layanan sampel diterapkan, Anda dapat memigrasikan layanan secara mulus ke node pool yang mendukung VM rahasia TDX untuk meningkatkan keamanan layanan inferensi.
Prasyarat
Sebuah node pool yang mendukung VM rahasia TDX telah dibuat di kluster ACK dan node pool tersebut memenuhi persyaratan. Untuk informasi lebih lanjut, lihat Buat node pool yang mendukung VM rahasia TDX.
Selain itu, node pool memenuhi persyaratan berikut:
Jenis instans: Pilih jenis instans yang menyediakan setidaknya 16 vCPU.Kami merekomendasikan Anda memilih ecs.g8i.4xlarge.
Ruang disk: Ruang disk setiap node dalam node pool adalah minimal 200 GiB. Anda dapat menggunakan disk sistem atau disk data yang lebih besar dari 200 GiB.
Label node: Tambahkan label
nodepool-label=tdx-vm-poolke node pool.
Prosedur
Buat file bernama tdx_values.yaml dan tambahkan konten berikut ke file tersebut.
Untuk informasi lebih lanjut tentang file values.yaml, lihat Konfigurasi Penyebaran Layanan di values.yaml.
CatatanDalam contoh ini, label
nodepool-label=tdx-vm-poolditambahkan ke node pool. Untuk menambahkan label lainnya, ganti nilainodepool-labeldi bagiannodeSelector.nodeSelector: nodepool-label: tdx-vm-poolJalankan perintah berikut untuk memigrasikan model Stable Diffusion ke node pool:
helm upgrade stable-diffusion-ipex https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/pre/charts-incubator/stable-diffusion-ipex-0.1.7.tgz -f tdx_values.yamlOutput yang Diharapkan:
Release "stable-diffusion-ipex" has been upgraded. Happy Helming! NAME: stable-diffusion-ipex LAST DEPLOYED: Wed Jan 24 16:38:04 2024 NAMESPACE: default STATUS: deployed REVISION: 2 TEST SUITE: NoneTunggu 10 menit dan periksa status pod. Pastikan pod sedang berjalan.
kubectl get pod |grep stable-diffusion-ipexOutput yang Diharapkan:
stable-diffusion-ipex-7f8c4f88f5-r478t 1/1 Running 0 1m44sUlangi Langkah 3: Uji Layanan Sampel untuk menguji model Stable Diffusion di node pool.
Informasi API
Parameter API
Setelah Anda menyebarkan layanan Stable Diffusion XL Turbo dari model stabilityai/sdxl-turbo, layanan tersebut menghasilkan API teks-ke-gambar yang dapat diakses publik. Tabel berikut menjelaskan parameter API.
Sintaks permintaan
POST /api/text2imageParameter permintaan
Contoh permintaan
Parameter respons
Contoh respons
Perbandingan performa
Node pool yang mendukung VM rahasia TDX berisi instance ECS dari keluarga instans g8i yang diberdayakan oleh AMX dan IPEX. Mereka dapat secara efisien mempercepat inferensi teks-ke-gambar dan memungkinkan Anda mengaktifkan TEE untuk meningkatkan keamanan. Dalam contoh ini, instance ECS tipe ecs.g8i.4xlarge yang dilengkapi dengan prosesor Intel® Xeon® Scalable generasi ke-5 digunakan untuk menjalankan dan menyetel model stabilityai/sdxl-turbo. Contoh ini menunjukkan cara mengembangkan layanan inferensi teks-ke-gambar yang hemat biaya dan aman.
Dari segi kecepatan pembuatan gambar, percepatan GPU (A10) masih melampaui percepatan CPU. Ketika jenis instans adalah ecs.g8i.8xlarge, step adalah 30, dan ukuran batch adalah 16, gambar dihasilkan pada laju 0,14 gambar/detik. Ketika jenis instans adalah instance GPU A10, step adalah 30, dan ukuran batch adalah 16, gambar dihasilkan pada laju 0,4 gambar/detik. Namun, dari segi kualitas gambar optimal, ketika jenis instans adalah ecs.g8i.8xlarge, step adalah 4, dan ukuran batch adalah 16, gambar dihasilkan pada laju 1,2 gambar/detik. Ini berarti satu gambar masih dapat dihasilkan setiap detik tanpa mengorbankan kualitas gambar.
Oleh karena itu, solusi ini memberikan alternatif untuk percepatan GPU untuk membantu Anda mengembangkan layanan inferensi teks-ke-gambar yang stabil, berperforma tinggi, hemat biaya, dan aman.
Jika Anda memerlukan efisiensi biaya, komputasi rahasia TEE, dan pasokan sumber daya skala besar, kami merekomendasikan Anda menggunakan tipe instans ecs.g8i.4xlarge untuk menjalankan dan menyetel model stabilityai/sdxl-turbo.
Menggunakan ecs.g8i.8xlarge alih-alih ecs.gn7i-c8g1.2xlarge mengurangi biaya sebesar 9% dan tetap menjamin laju pembuatan gambar 1,2 gambar/detik.
Menggunakan ecs.g8i.4xlarge alih-alih ecs.gn7i-c8g1.2xlarge memperlambat pembuatan gambar menjadi 0,5 gambar/detik tetapi mengurangi biaya lebih dari 53%.
Harga sebenarnya dari instance ECS di berbagai wilayah pada tab Pricing halaman Elastic Compute Service adalah yang berlaku.



