Saat file model yang disimpan di Object Storage Service (OSS) atau Apsara File Storage NAS (NAS) dipasang ke direktori lokal, lebar pita jaringan membatasi kinerja pembacaan. Elastic Algorithm Service (EAS) menyimpan cache file-file tersebut dari disk ke memori, sehingga mempercepat pembacaan data dan mengurangi latensi selama inferensi model.
Cara kerja
EAS memasang file model ke direktori lokal dari OSS, NAS, atau image Docker. Untuk informasi lebih lanjut, lihat Mount storage. Pembacaan model, pergantian model, dan penskalaan kontainer semuanya bergantung pada lebar pita jaringan. Dalam skenario Stable Diffusion, permintaan inferensi sering kali berganti-ganti antara model dasar dan model Low-Rank Adaptation (LoRA). Setiap pergantian membaca file dari OSS atau NAS, yang meningkatkan latensi jaringan.
Caching memori mengatasi masalah ini. Diagram berikut menunjukkan arsitekturnya.
File model dalam direktori lokal di-cache ke memori.
Cache menggunakan kebijakan penggantian least recently used (LRU) dan mendukung berbagi file antar instans. File yang di-cache muncul sebagai direktori sistem file standar.
Layanan membaca file yang di-cache langsung dari memori tanpa perlu mengubah kode bisnis.
Instans dalam suatu layanan berbagi jaringan peer-to-peer (P2P). Saat Anda melakukan scale-out layanan, instans baru membaca file yang di-cache dari instans terdekat melalui jaringan P2P, sehingga mempercepat proses scale-out kluster.
Catatan penggunaan
Direktori cache bersifat read-only untuk memastikan konsistensi data.
Untuk menambahkan file model, letakkan file tersebut di direktori sumber. File tersebut akan tersedia secara otomatis di direktori cache.
Jangan langsung memodifikasi atau menghapus file model di direktori sumber karena tindakan tersebut dapat menyebabkan data kotor di cache.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Ruang kerja Platform for AI (PAI) dengan akses EAS
File model yang disimpan di OSS atau NAS
Tipe instans yang sesuai dengan memori mencukupi untuk caching (misalnya,
ml.gu7i.c16m60.1-gu30)
Konfigurasikan caching memori di Konsol PAI
Bagian ini menggunakan Stable Diffusion sebagai contoh dengan konfigurasi berikut:
Perintah startup image:
./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api --filebrowserDirektori OSS untuk file model:
oss://path/to/models/Direktori kontainer untuk file model (direktori sumber):
/code/stable-diffusion-webui/data-slow
Direktori sumber /code/stable-diffusion-webui/data-slow menyimpan file model. File-file tersebut kemudian dipasang ke direktori cache /code/stable-diffusion-webui/data-fast. Layanan membaca file model dari direktori cache, bukan dari direktori sumber.
Konfigurasikan caching memori di Konsol PAI
Masuk ke Konsol PAI. Pilih Wilayah di bilah navigasi atas, lalu pilih ruang kerja yang diinginkan dan klik Enter Elastic Algorithm Service (EAS).
Klik Deploy Service, lalu pilih Custom Deployment pada bagian Custom Model Deployment.
Pada halaman Custom Deployment, konfigurasikan parameter berikut. Untuk informasi mengenai parameter lainnya, lihat Penerapan kustom.
Parameter Deskripsi Contoh Environment Information > Model Settings Pilih mode mount OSS. Uri: oss://path/to/models/Mount Path: /code/stable-diffusion-webui/data-slowCommand Konfigurasikan parameter startup berdasarkan image atau kode Anda. Untuk Stable Diffusion, tambahkan parameter --ckpt-dirdan atur ke direktori cache../webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api --filebrowser --ckpt-dir /code/stable-diffusion-webui/data-fastFeatures > Distributed cache acceleration Aktifkan Memory Caching dan konfigurasikan parameter berikut: Maximum Memory Usage: 20GBMaximum Memory Usage: memori maksimum untuk file yang di-cache, dalam satuan GB. Jika melebihi batas ini, kebijakan LRU akan mengganti file yang di-cache. Source Path: /code/stable-diffusion-webui/data-slowSource Path: direktori sumber file yang di-cache. Ini bisa berupa direktori mount OSS atau NAS, subdirektori dari direktori mount, atau direktori file biasa di dalam kontainer. Mount Path: /code/stable-diffusion-webui/data-fastMount Path: direktori cache tempat layanan membaca file. Klik Deploy.
Konfigurasikan caching memori menggunakan file konfigurasi JSON
Langkah 1: Siapkan file konfigurasi
Buat file konfigurasi JSON. Berikut adalah contoh konfigurasinya:
{
"cloud": {
"computing": {
"instances": [
{
"type": "ml.gu7i.c16m60.1-gu30"
}
]
}
},
"containers": [
{
"image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:4.2",
"port": 8000,
"script": "./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api --filebrowser --ckpt-dir /code/stable-diffusion-webui/data-fast"
}
],
"metadata": {
"cpu": 16,
"enable_webservice": true,
"gpu": 1,
"instance": 1,
"memory": 60000,
"name": "sdwebui_test"
},
"options": {
"enable_cache": true
},
"storage": [
{
"cache": {
"capacity": "20G",
"path": "/code/stable-diffusion-webui/data-slow"
},
"mount_path": "/code/stable-diffusion-webui/data-fast"
},
{
"mount_path": "/code/stable-diffusion-webui/data-slow",
"oss": {
"path": "oss://path/to/models/",
"readOnly": false
},
"properties": {
"resource_type": "model"
}
}
]
}Tabel berikut menjelaskan parameter terkait cache. Untuk informasi tentang parameter lainnya, lihat Parameters of model services.
| Parameter | Deskripsi |
|---|---|
script | Perintah startup. Konfigurasikan berdasarkan image atau kode Anda. Untuk Stable Diffusion, tambahkan parameter --ckpt-dir dan atur ke direktori cache. |
cache.capacity | Memori maksimum untuk file yang di-cache. Satuan: GB. Jika melebihi batas ini, kebijakan LRU akan mengganti file yang di-cache. |
cache.path | Direktori sumber file yang di-cache. Ini bisa berupa direktori mount OSS atau NAS di dalam kontainer, subdirektori dari direktori mount, atau direktori file biasa di dalam kontainer. |
mount_path (entri cache) | Direktori cache tempat file yang di-cache dipasang. File dalam direktori ini mencerminkan direktori sumber. Layanan membaca file dari direktori ini. |
Langkah 2: Terapkan layanan
Terapkan layanan dengan salah satu metode berikut.
Terapkan di Konsol PAI
Masuk ke Konsol PAI. Pilih Wilayah di bilah navigasi atas, lalu pilih ruang kerja yang diinginkan dan klik Enter Elastic Algorithm Service (EAS).
Di halaman Elastic Algorithm Service (EAS), klik Deploy Service. Di halaman Deploy Service, klik JSON Deployment di bagian Custom Model Deployment, lalu tempel konfigurasi JSON dari Langkah 1 ke editor.
Klik Deploy.
Terapkan menggunakan klien EASCMD
Unduh klien EASCMD dan selesaikan otentikasi identitas. Untuk informasi lebih lanjut, lihat Download the EASCMD client and complete identity authentication.
Simpan konfigurasi JSON dari Langkah 1 sebagai
test.jsondi direktori tempat klien EASCMD diinstal.Jalankan perintah berikut. Contoh ini menggunakan Windows 64-bit:
eascmdwin64.exe create <test.json>
Tolok ukur kinerja
Tabel berikut menunjukkan kinerja pergantian model dalam skenario Stable Diffusion. Semua nilai dalam satuan detik. Hasil aktual bervariasi tergantung lingkungan Anda.
| Model | Ukuran | OSS mount (s) | Local memory hit (s) | Remote memory hit (s) |
|---|---|---|---|---|
| anything-v4.5.safetensors | 7,2 GB | 89,88 | 3,845 | 15,18 |
| Anything-v5.0-PRT-RE.safetensors | 2,0 GB | 16,73 | 2,967 | 5,46 |
| cetusMix_Coda2.safetensors | 3,6 GB | 24,76 | 3,249 | 7,13 |
| chilloutmix_NiPrunedFp32Fix.safetensors | 4,0 GB | 48,79 | 3,556 | 8,47 |
| CounterfeitV30_v30.safetensors | 4,0 GB | 64,99 | 3,014 | 7,94 |
| deliberate_v2.safetensors | 2,0 GB | 16,33 | 2,985 | 5,55 |
| DreamShaper_6_NoVae.safetensors | 5,6 GB | 71,78 | 3,416 | 10,17 |
| pastelmix-fp32.ckpt | 4,0 GB | 43,88 | 4,959 | 9,23 |
| revAnimated_v122.safetensors | 4,0 GB | 69,38 | 3,165 | 3,20 |
Jika tidak ada file model di cache memori, CacheFS secara otomatis membaca file model dari direktori sumber. Misalnya, jika file dipasang dari Bucket OSS, CacheFS membaca dari Bucket OSS tersebut.
Saat layanan memiliki beberapa instans, instans-instans tersebut berbagi memori di seluruh kluster. Suatu instans dapat membaca file model langsung dari memori instans lain di kluster. Waktu baca bervariasi tergantung ukuran file.
Saat Anda melakukan scale-out kluster layanan, instans baru secara otomatis membaca file model dari memori instans yang sudah ada selama inisialisasi, sehingga mempercepat operasi scale-out.