Ketika Anda menjalankan Stable Diffusion untuk menghasilkan gambar tetapi hanya menemukan pesan kesalahan “out of memory” (OOM) dan proses berhenti, hal ini biasanya disebabkan oleh memori GPU yang tidak cukup untuk menampung model, data aktivasi, serta gambar yang sedang diproses. Masalah ini sering terjadi pada kartu grafika dengan memori VRAM kurang dari 6 GB, terutama jika Anda menggunakan resolusi tinggi, batch size lebih dari satu, atau mengaktifkan fitur tambahan seperti CFG scale tinggi.
Berikut ini adalah langkah‑langkah praktis yang dapat Anda coba, diurutkan dari yang paling mudah dan aman hingga solusi yang lebih avancé. Setiap langkah dilengkapi dengan penjelasan singkat agar Anda memahami mengapa tindakan tersebut membantu mengurangi beban memori.
1. Periksa Spesifikasi GPU dan Driver
Sebelum mengubah pengaturan, pastikan driver GPU Anda sudah versi terbaru dan CUDA yang sesuai dengan versi PyTorch yang terinstal. Driver yang kuno bisa menyebabkan alokasi memori tidak efisien.
- Buka NVIDIA Control Panel (atau aplikasi setara untuk AMD) dan periksa versi driver.
- Jika perlu, unduh driver terbaru dari situs resmi NVIDIA/AMD dan instal.
- Verifikasi versi CUDA dengan menjalankan
nvcc --versiondi terminal atau command prompt.
2. Kurangi Resolusi Gambar
Resolusi yang lebih tinggi secara langsung meningkatkan jumlah tensor yang harus disimpan di memori. Mengurangi ukuran dari 512×512 menjadi 384×384 atau 256×256 sering cukup untuk menghilangkan OOM.
- Dalam antarmuka yang Anda gunakan (misalnya AUTOMATIC1111, InvokeAI, atau skrip diffusers), cari pengaturan Width dan Height.
- Ubah nilai menjadi 384 atau 256 untuk kedua dimensi.
- Hasilkan ulang gambar dan perhatikan apakah pesan OOM masih muncul.
3. Turunkan Batch Size (Jumlah Gambar yang Dihasilkan Sekaligus)
Batch size lebih dari satu berarti model harus memproses beberapa gambar sekaligus, yang memperbesar beban memori. Untuk kebanyakan pengguna, batch size = 1 sudah cukup.
- Cari opsi Batch size atau Number of images per prompt.
- Setel nilai menjadi
1. - Jika Anda benar‑benar perlu menghasilkan lebih dari satu gambar, lakukan secara berurutan (satu per satu) daripada sekaligus.
4. Aktifkan Precision yang Lebih Rendah (fp16)
Menggunakan presisi 16‑bit floating point (fp16) mengurangi penggunaan memori hampir separuh dibandingkan fp32 standar, dengan sedikit pengaruh pada kualitas hasil untuk kebanyakan model Stable Diffusion.
- Jika Anda menggunakan skrip Python atau diffusers, pastikan model dimuat dengan argumen
torch_dtype=torch.float16. - Pada antarmuka berbasis web seperti AUTOMATIC1111, centang opsi Use FP16 atau Half precision di bagian設定.
- Ulangi proses pembuatan gambar.
5. Aktifkan Optimasi Memori (xformers atau Memory Efficient Attention)
Library xformers menyediakan algoritma perhatian yang lebih efisien secara memori, terutama untuk resolusi tinggi. Mengaktifkannya bisa menurunkan konsumsi VRAM hingga 40 %.
- Instal xformers dengan perintah
pip install xformers(pastikan versi CUDA sesuai). - Setelah terinstal, beberapa front‑end otomatis mendeteksi dan menggunakannya. Jika tidak, aktifkan melalui baris perintah:
--xformersatau dengan mengatur variabel lingkunganUSE_XFORMERS=1. - Uji kembali apakah OOM masih terjadi.
Jika xformers tidak tersedia untuk perangkat Anda, Anda dapat mencoba torch’s built‑in memory‑efficient attention dengan mengatur torch.backends.cuda.enable_flash_sdp(False) dan mengaktifkan torch.backends.cuda.enable_mem_efficient_sdp(True) (hanya untuk PyTorch 2.0+).
6. Gunakan Model Offload atau Sequential CPU Offload
Teknik ini memindahkan sebagian model ke CPU ketika tidak digunakan, sehingga hanya sebagian kecil yang tetap berada di VRAM setiap saat. Ini sedikit memperlambat proses, tetapi sangat membantu jika VRAM Anda terbatas.
- Dalam skrip diffusers, muat model dengan parameter
enable_model_offload()atauenable_sequential_cpu_offload(). - Contoh:
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16) pipe = pipe.to("cuda") pipe.enable_model_offload() # atau enable_sequential_cpu_offload() - Jika Anda menggunakan antarmuka GUI, cari opsi Model offload atau CPU offload dalam pengaturan memori.
7. Turunkan Jumlah Langkah Inference (Steps)
Semakin banyak langkah denoising yang dijalankan, semakin besar memori yang diperlukan untuk menyiapkan tensor intermediate. Mengurangi langkah dari 50 menjadi 20‑25 sering cukup untuk hasil yang masih dapat diterima, terutama bila Anda menggunakan CFG scale yang tidak terlalu tinggi.
- Locate Steps atau Num inference steps.
- Setel nilai antara
20dan30. - Periksa hasil; jika terlalu kusam, tingkatkan sedikit atau naikkan CFG scale sejenak.
8. Pertimbangkan Menggunakan Versi Model yang Lebih Ringan
Model dasar Stable Diffusion 1.5 membutuhkan sekitar 4 GB VRAM dalam fp16 tanpa optimasi. Jika Anda terus mengalami OOM meski sudah mengubah semua pengaturan di atas, Anda bisa mencoba model yang dirancang untuk konsumsi memori lebih rendah, seperti:
- Stable Diffusion 2.1‑base (dengan opsi
--disable-nan-checkdi beberapa front‑end). - DeepFloyd‑IF atau versi Stable Diffusion XL Turbo yang dirancang untuk langkah inferensi lebih sedikit.
- Model yang telah di‑distillasi seperti Stable Diffusion 1.5‑distilled atau SSD‑1B yang lebih kecil.
- Buka Task Manager (Ctrl+Shift+Esc) → tab Performance → lihat penggunaan GPU.
- Jika ada proses yang tidak perlu, akhiri proses tersebut.
- Tutup aplikasi yang menggunakan GPU secara intensif sebelum menjalankan Stable Diffusion.
- Menambah atau mengganti GPU dengan VRAM minimal 8 GB (misalnya RTX 3060 12 GB, RTX 4070 12 GB, atau yang lebih baru).
- Menggunakan layanan GPU pada awan seperti Google Colab (versi Pro menyediakan Tesla T4 atau A100), RunPod, atau Vast.ai yang menyewa instance per jam.
Pastikan model yang Anda pilih kompatibel dengan pipeline yang Anda gunakan.
9. Periksa Proses Latar Layanan yang Mengonsumsi GPU
Terkadang aplikasi lain (misalnya peramban dengan akselerasi video, perangkat lunak rendering, atau proses mining) masih menggunakan VRAM dan sedikit menyisa ruang untuk Stable Diffusion.
10. Solusi Last Resort: Upgrade Hardware atau Gunakan Layanan Cloud
Jika semua upaya di atas tidak berhasil dan Anda sering membutuhkan resolusi tinggi atau batch size lebih dari satu, pertimbangkan untuk:
Penutup
Masalah out of memory pada Stable Diffusion biasanya bisa diatasi dengan mengurangi beban memori melalui penyesuaian resolusi, batch size, presisi, dan dengan mengaktifkan optimasi seperti xformers atau model offload. Mulailah dengan langkah‑langkah yang paling mudah dan tidak mengubah sistem secara permanen, lalu bertahap ke solusi yang lebih spesifik jika diperlukan. Dengan pendekatan ini, Anda dapat terus membuat gambar tanpa harus terus-menerus menghadapi crash karena kurangnya memori GPU.