Selama inferensi model, file model yang disimpan di Object Storage Service (OSS) atau Apsara File Storage NAS (NAS) dipasang ke direktori lokal. Akses ke file model dipengaruhi oleh lebar pita jaringan dan latensi. Untuk mengatasi masalah ini, Elastic Algorithm Service (EAS) menyediakan caching memori untuk direktori lokal. EAS menyimpan file model dari disk ke memori guna mempercepat pembacaan data dan mengurangi latensi. Topik ini menjelaskan cara mengonfigurasi caching memori untuk direktori lokal serta menunjukkan performa akselerasi.
Informasi latar belakang
Dalam sebagian besar skenario inferensi model, layanan EAS memasang file model ke direktori lokal menggunakan OSS, NAS, atau Docker image. Untuk informasi lebih lanjut, lihat Pasang penyimpanan ke layanan. Saat Anda melakukan operasi seperti membaca model, beralih model, atau penskalaan kontainer, operasi tersebut dapat dipengaruhi oleh lebar pita jaringan. Dalam skenario umum seperti penggunaan Stable Diffusion, permintaan inferensi melibatkan pergantian sering antara model dasar dan model Adaptasi Peringkat Rendah (LoRA). Setiap pergantian memerlukan pembacaan model dari OSS atau NAS, yang meningkatkan latensi jaringan.
Untuk mengatasi masalah ini, EAS menyediakan caching memori untuk direktori lokal. Gambar berikut menunjukkan prinsipnya.
Anda dapat menyimpan file model dalam direktori lokal ke memori.
Caching mendukung kebijakan least recently used (LRU) dan memungkinkan Anda berbagi file di antara instance. File yang disimpan ditampilkan sebagai direktori sistem file.
Layanan langsung membaca file yang disimpan dalam memori. Anda dapat mempercepat operasi tanpa perlu memodifikasi kode bisnis.
Instance dari suatu layanan berbagi jaringan P2P. Saat Anda menambahkan kluster layanan, instance tambahan dapat membaca file yang disimpan dari instance terdekat melalui jaringan P2P untuk mempercepat penambahan kluster.
Tindakan pencegahan
Untuk memastikan konsistensi data, direktori cache bersifat hanya-baca.
Jika Anda ingin menambahkan file model, Anda dapat menambahkan file model ke direktori sumber. File model dapat langsung dibaca dari direktori cache.
Kami menyarankan agar Anda tidak langsung memodifikasi atau menghapus file model dalam direktori sumber. Jika tidak, data kotor mungkin tersimpan dalam cache.
Prosedur
Dalam contoh ini, Stable Diffusion digunakan. Parameter berikut dikonfigurasi untuk penyebaran layanan:
Perintah startup gambar:
./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api --filebrowserDirektori OSS tempat file model disimpan:
oss://path/to/models/Direktori tempat file model disimpan dalam kontainer:
/code/stable-diffusion-webui/data-slow
Direktori /code/stable-diffusion-webui/data-slow adalah direktori sumber tempat file model disimpan. Kemudian, file model dipasang ke direktori cache /code/stable-diffusion-webui/data-fast. Dengan cara ini, layanan dapat langsung membaca file model yang disimpan dalam direktori sumber /code/stable-diffusion-webui/data-slow dari direktori cache /code/stable-diffusion-webui/data-fast.
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 dan pilih Custom Deployment di bagian Custom Model Deployment.
Di halaman Custom Deployment, konfigurasikan parameter yang dijelaskan dalam tabel berikut. Untuk informasi tentang parameter lainnya, lihat Parameter untuk penyebaran kustom di konsol.
Parameter
Deskripsi
Contoh
Environment Information
Model Settings
Pilih mode pemasangan OSS.
Uri:
oss://path/to/models/Path Pemasangan:
/code/stable-diffusion-webui/data-slow
Command
Konfigurasikan parameter startup berdasarkan gambar yang Anda gunakan atau kode yang Anda tulis.
Untuk layanan Stable Diffusion, Anda harus menambahkan parameter
--ckpt-dirke perintah startup dan 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
Memory Caching
Aktifkan Memory Caching dan konfigurasikan parameter berikut:
Maximum Memory Usage: memori maksimum yang digunakan oleh file yang disimpan. Unit: GB. Saat penggunaan memori maksimum terlampaui, kebijakan LRU digunakan untuk menghapus file tertentu yang disimpan.
Source Path: Direktori dapat berupa salah satu direktori berikut: direktori sumber tempat file yang disimpan disimpan, direktori cache dalam kontainer tempat file yang disimpan di OSS atau NAS dipasang, subdirektori dari direktori cache, dan direktori file umum dalam kontainer.
Mount Path: direktori cache tempat file yang disimpan dipasang. Layanan harus membaca file dari direktori cache.
Maximum Memory Usage: 20 GB
Source Path:
/code/stable-diffusion-webui/data-slowMount Path:
/code/stable-diffusion-webui/data-fast
Setelah Anda mengonfigurasi parameter, klik Deploy.
Konfigurasikan caching memori pada klien lokal
Siapkan file konfigurasi. Contoh kode:
{
"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. Untuk informasi tentang parameter lainnya, lihat Parameter layanan model.
Parameter | Deskripsi | |
script | Konfigurasikan parameter startup berdasarkan gambar yang Anda gunakan atau kode yang Anda tulis. Untuk layanan Stable Diffusion, Anda harus menambahkan parameter | |
cache | capacity | Memori maksimum yang digunakan oleh file yang disimpan. Unit: GB. Saat penggunaan memori maksimum terlampaui, kebijakan LRU digunakan untuk menghapus file tertentu yang disimpan. |
path | Direktori sumber file yang disimpan. Direktori dapat berupa salah satu direktori berikut: direktori cache dalam kontainer tempat file yang disimpan di OSS atau NAS dipasang, subdirektori dari direktori cache, dan direktori file umum dalam kontainer. | |
mount_path | Direktori cache tempat file yang disimpan dipasang. File dalam direktori ini sama dengan file dalam direktori sumber. Layanan harus membaca file dari direktori ini. | |
Langkah 2: Sebarkan layanan model
Sebarkan layanan model dan aktifkan caching memori untuk layanan model.
Sebarkan layanan model 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 Sebarkan Layanan, klik JSON Deployment di bagian Custom Model Deployment. Di bidang editor, masukkan kode konfigurasi yang telah Anda siapkan di Langkah 1.
Klik Deploy.
Sebarkan layanan model dengan menggunakan klien EASCMD
Unduh klien EASCMD dan lakukan autentikasi identitas. Untuk informasi lebih lanjut, lihat Unduh klien EASCMD dan lengkapi autentikasi identitas.
Buat file JSON bernama
test.jsondi direktori tempat klien EASCMD disimpan dengan mengikuti petunjuk di Langkah 1.Jalankan perintah berikut di direktori tempat file JSON disimpan. Dalam contoh ini, Windows 64 digunakan.
eascmdwin64.exe create <test.json>
Efek akselerasi
Tabel berikut menjelaskan efek akselerasi dalam skenario pemodelan sampel di mana Stable Diffusion digunakan. Unit: detik. Efek akselerasi bervariasi berdasarkan situasi aktual.
Model | Ukuran model | Path pemasangan OSS | Pencapaian memori instans lokal | Pencapaian memori instans jarak jauh |
anything-v4.5.safetensors | 7.2G | 89.88 | 3.845 | 15.18 |
Anything-v5.0-PRT-RE.safetensors | 2.0G | 16.73 | 2.967 | 5.46 |
cetusMix_Coda2.safetensors | 3.6G | 24.76 | 3.249 | 7.13 |
chilloutmix_NiPrunedFp32Fix.safetensors | 4.0G | 48.79 | 3.556 | 8.47 |
CounterfeitV30_v30.safetensors | 4.0G | 64.99 | 3.014 | 7.94 |
deliberate_v2.safetensors | 2.0G | 16.33 | 2.985 | 5.55 |
DreamShaper_6_NoVae.safetensors | 5.6G | 71.78 | 3.416 | 10.17 |
pastelmix-fp32.ckpt | 4.0G | 43.88 | 4.959 | 9.23 |
revAnimated_v122.safetensors | 4.0G | 69.38 | 3.165 | 3.20 |
Jika tidak ada file model dalam cache memori, CacheFS secara otomatis membaca file model dari direktori sumber. Misalnya, jika sebuah file dipasang ke Bucket OSS, CacheFS membaca file dari Bucket OSS.
Jika layanan memiliki beberapa instance, kluster instance berbagi memori. Saat sebuah instance memuat model, instance tersebut dapat langsung membaca file model dari memori instance lain dalam kluster. Jumlah waktu yang diperlukan untuk membaca file bervariasi berdasarkan ukuran file.
Saat Anda menambahkan kluster layanan, instance tambahan dapat secara otomatis membaca file model dari memori instance lain dalam kluster selama inisialisasi. Dengan cara ini, layanan diperluas dengan lebih cepat dan fleksibel.