/ Generasi Gambar AI / Memperbaiki Error Out of Memory Training Flux LoRA di RTX 4090
Generasi Gambar AI 13 menit baca

Memperbaiki Error Out of Memory Training Flux LoRA di RTX 4090

Atasi error OOM saat melatih Flux LoRA di RTX 4090 dengan gradient checkpointing, optimasi ukuran batch, dan teknik manajemen memori

Memperbaiki Error Out of Memory Training Flux LoRA di RTX 4090 - Complete Generasi Gambar AI guide and tutorial

Anda memiliki RTX 4090 dengan 24GB VRAM, yang seharusnya cukup untuk training Flux lokal, tetapi setiap percobaan crash dengan error CUDA out of memory. Training dimulai dengan baik, mungkin berjalan beberapa step, lalu berhenti. Anda sudah mencoba mengurangi ukuran batch tetapi masih crash. Apa yang menghabiskan semua memori itu?

Jawaban Cepat: Training Flux LoRA OOM di RTX 4090 terjadi karena arsitektur besar Flux membutuhkan 30-40GB VRAM pada pengaturan training default. Perbaiki ini dengan mengaktifkan gradient checkpointing untuk menukar komputasi dengan memori, mengurangi ukuran batch ke 1, menggunakan resolusi training 512x512 bukan 1024x1024, mengaktifkan mixed precision dengan FP16 atau BF16, dan menggunakan implementasi attention yang efisien memori. Pengaturan ini memungkinkan training lengkap pada 24GB sambil menghasilkan LoRA berkualitas.

Poin Utama:
  • Gradient checkpointing sangat penting untuk training Flux pada kartu 24GB
  • Training pada 512x512 menggunakan 75% lebih sedikit memori dari 1024x1024
  • Ukuran batch 1 dengan akumulasi gradient memberikan training yang stabil
  • Attention efisien memori menggantikan attention standar untuk penghematan besar
  • Pilihan optimizer mempengaruhi memori karena Adam 8-bit menghemat 50% memori state optimizer

RTX 4090 adalah kartu yang sangat baik untuk training Flux LoRA ketika dikonfigurasi dengan benar. Masalahnya adalah konfigurasi training default mengasumsikan VRAM lebih dari 24GB. Dengan pengaturan yang tepat, Anda dapat melatih Flux LoRA berkualitas tinggi secara efisien. Mari konfigurasi setup Anda untuk training yang stabil.

Mengapa Training Flux Membutuhkan VRAM Sebanyak Itu?

Memahami apa yang mengonsumsi memori selama training membantu Anda mengoptimalkan secara efektif.

Ukuran Model

Model dasar Flux secara signifikan lebih besar dari SDXL atau SD 1.5. Bobot model presisi penuh saja mengonsumsi sekitar 23GB. Itu sudah seluruh VRAM 4090 Anda sebelum training dimulai.

Selama training, Anda membutuhkan memori untuk model, gradient, state optimizer, dan aktivasi. Masing-masing bisa mendekati ukuran model itu sendiri.

Untuk training LoRA secara khusus, Anda membekukan model dasar dan hanya melatih layer adapter kecil. Ini sangat membantu tetapi tidak menghilangkan tekanan memori dari aktivasi dan gradient yang mengalir melalui model penuh.

Memori Aktivasi

Selama forward pass, aktivasi intermediate disimpan untuk digunakan selama backward pass. Aktivasi ini tumbuh dengan ukuran batch dan resolusi.

Pada resolusi 1024x1024, memori aktivasi bisa melebihi ukuran model. Satu batch training mungkin membutuhkan 15-20GB hanya untuk aktivasi.

Inilah mengapa training crash setelah beberapa step. Step pertama mungkin muat, tetapi fragmentasi memori dan state terakumulasi menyebabkan step berikutnya gagal.

State Optimizer

Optimizer seperti Adam menyimpan dua nilai momentum untuk setiap parameter yang dapat dilatih. Ini menggandakan memori yang dibutuhkan untuk parameter yang sedang dilatih.

Untuk fine-tuning penuh, memori state optimizer sama dengan 2x ukuran model. Training LoRA memiliki state optimizer lebih kecil karena lebih sedikit parameter yang dilatih, tetapi masih substansial.

Memori Gradient

Gradient untuk setiap parameter yang dapat dilatih membutuhkan penyimpanan selama backward pass. Ini menambahkan satu salinan penuh lagi dari ukuran parameter yang dapat dilatih ke kebutuhan memori.

Dikombinasikan dengan model, aktivasi, dan state optimizer, kebutuhan memori total dengan mudah mencapai 40-50GB untuk konfigurasi training Flux default.

Bagaimana Mengonfigurasi Training untuk 24GB VRAM?

Pengaturan ini memungkinkan training Flux LoRA yang stabil di RTX 4090.

Aktifkan Gradient Checkpointing

Gradient checkpointing adalah optimasi memori yang paling berdampak. Ini mengurangi memori aktivasi sebesar 60-70% dengan biaya 20-30% lebih banyak waktu komputasi.

Alih-alih menyimpan semua aktivasi selama forward pass, checkpointing membuang sebagian besar dan menghitungnya kembali selama backward pass. Penggunaan memori menjadi hampir konstan terlepas dari kedalaman model.

Di Kohya SS, aktifkan gradient checkpointing dalam konfigurasi training. Opsinya biasanya checkbox sederhana atau parameter boolean.

Dalam skrip training kustom menggunakan diffusers, panggil model.enable_gradient_checkpointing() sebelum training dimulai.

Training memakan waktu lebih lama dengan checkpointing diaktifkan tetapi benar-benar selesai alih-alih crash. Trade-off waktu sepadan.

Atur Ukuran Batch ke 1

Ukuran batch langsung mengalikan memori aktivasi. Ukuran batch 4 menggunakan kira-kira 4x memori aktivasi dari ukuran batch 1.

Atur ukuran batch Anda ke 1. Gunakan akumulasi gradient untuk mensimulasikan ukuran batch efektif yang lebih besar tanpa biaya memori.

Misalnya, ukuran batch 1 dengan 4 step akumulasi gradient memberikan ukuran batch efektif 4 sambil hanya menyimpan aktivasi 1 sampel di memori.

Akumulasi gradient mengakumulasi gradient selama beberapa forward pass sebelum memperbarui bobot. Penggunaan memori tetap konstan pada ukuran batch 1 sementara dinamika training mendekati batch yang lebih besar.

Kurangi Resolusi Training

Resolusi memiliki dampak kuadrat pada memori. Menggandakan resolusi melipatgandakan memori aktivasi.

Latih pada 512x512 bukan 1024x1024. Ini mengurangi memori aktivasi sekitar 75%.

Anda mungkin khawatir bahwa training 512x512 menghasilkan hasil yang lebih buruk dari resolusi native. Dalam praktiknya, LoRA yang dilatih pada resolusi lebih rendah transfer dengan baik ke inferensi resolusi lebih tinggi. Elemen gaya dan konsep yang Anda latih masih muncul pada generasi 1024x1024.

Jika Anda membutuhkan training resolusi lebih tinggi untuk kasus penggunaan tertentu, 768x768 kadang-kadang mungkin dengan optimasi agresif lainnya. Uji dengan hati-hati dan pantau memori.

Gunakan Training Mixed Precision

Mixed precision menggunakan FP16 atau BF16 untuk sebagian besar operasi sambil menjaga nilai kritis dalam FP32.

BF16 direkomendasikan untuk GPU Ampere dan yang lebih baru. Ini menangani gradient lebih baik dari FP16 karena rentang dinamis yang lebih besar.

Aktifkan mixed precision dalam konfigurasi training Anda. Di Kohya SS, pilih BF16 dari dropdown presisi. Dalam skrip kustom, gunakan context manager autocast PyTorch.

Mixed precision kira-kira membagi dua memori untuk bobot model dan aktivasi. Dikombinasikan dengan optimasi lainnya, ini penting untuk training 24GB.

Aktifkan Attention Efisien Memori

Implementasi attention standar mengalokasikan tensor intermediate besar. Varian efisien memori seperti xFormers atau Flash Attention memproses attention dalam chunk.

xFormers bekerja dengan baik untuk training dan didukung secara luas. Instal secara terpisah dan aktifkan dalam konfigurasi training Anda.

Alur Kerja ComfyUI Gratis

Temukan alur kerja ComfyUI gratis dan open source untuk teknik dalam artikel ini. Open source itu kuat.

100% Gratis Lisensi MIT Siap Produksi Beri Bintang & Coba

Flash Attention memberikan performa lebih baik pada GPU terbaru. Periksa apakah framework training Anda mendukungnya.

Attention efisien memori dapat mengurangi penggunaan memori attention sebesar 80% atau lebih. Untuk model besar seperti Flux, ini berarti penghematan beberapa GB.

Gunakan Optimizer 8-bit

Optimizer Adam standar menyimpan dua nilai FP32 per parameter. Adam 8-bit mengkuantisasi ini ke INT8, memotong memori optimizer menjadi setengah.

Instal library bitsandbytes dan konfigurasikan Adam 8-bit dalam setup training Anda. Kohya SS mendukung ini secara langsung. Skrip kustom perlu mengimpor optimizer 8-bit dari bitsandbytes.

Dampak kualitas minimal. Adam 8-bit konvergen mirip dengan presisi penuh dalam kebanyakan kasus.

Pengaturan Apa yang Bekerja Paling Baik untuk Kohya SS?

Kohya SS adalah alat training Flux LoRA paling populer. Berikut adalah konfigurasi spesifik yang bekerja.

Konfigurasi yang Direkomendasikan

Gunakan pengaturan ini sebagai titik awal Anda untuk training Flux LoRA RTX 4090.

Resolusi: 512,512 Ukuran batch: 1 Step akumulasi gradient: 4 Mixed precision: bf16 Gradient checkpointing: Diaktifkan xFormers: Diaktifkan Optimizer: AdamW8bit Network rank: 16-32 Network alpha: Sama dengan rank atau setengah Learning rate: 1e-4 Step training: 1000-2000 untuk karakter, 2000-4000 untuk gaya

Konfigurasi ini menggunakan sekitar 20GB VRAM, menyisakan ruang untuk stabilitas.

Penyesuaian untuk Jenis Training Berbeda

LoRA Karakter dapat menggunakan rank lebih rendah sekitar 16 dan step lebih sedikit sekitar 1000. Fitur karakter relatif sederhana untuk ditangkap.

LoRA Gaya mendapat manfaat dari rank lebih tinggi sekitar 32-64 dan lebih banyak step training sekitar 3000-4000. Gaya artistik memiliki lebih banyak varians untuk dipelajari.

LoRA Konsep untuk objek atau pose tertentu sangat bervariasi. Mulai dengan pengaturan karakter dan sesuaikan berdasarkan hasil.

Rank lebih tinggi membutuhkan lebih banyak VRAM. Jika Anda mendorong rank ke 64 atau lebih tinggi, pantau penggunaan memori selama training. Anda mungkin perlu mengurangi resolusi ke 448x448.

Konfigurasi Caption

Caption yang baik meningkatkan kualitas training secara dramatis. Flux merespons dengan baik terhadap deskripsi bahasa alami.

Gunakan BLIP atau alat serupa untuk menghasilkan caption awal, lalu perbaiki secara manual. Hapus deskripsi yang tidak akurat dan tambahkan kata trigger Anda.

Ingin melewati kerumitan? Apatero memberi Anda hasil AI profesional secara instan tanpa pengaturan teknis.

Tanpa pengaturan Kualitas sama Mulai dalam 30 detik Coba Apatero Gratis
Tidak perlu kartu kredit

Caption yang lebih panjang umumnya bekerja lebih baik untuk Flux daripada untuk SD 1.5. Sertakan detail relevan tentang konten gambar di luar subjek.

Hindari caption berulang di seluruh dataset Anda. Variasikan bahasa sambil menjaga kata trigger konsisten.

Generasi Gambar Sampel

Aktifkan generasi sampel selama training untuk memantau progres. Atur frekuensi sampel setiap 100-200 step.

Generasi sampel menambah overhead memori. Jika Anda mencapai OOM selama sampling, tingkatkan akumulasi gradient atau kurangi frekuensi sampel.

Sampel memberi tahu Anda kapan training berjalan dengan baik dan kapan Anda overfit. Hentikan training ketika sampel terlihat bagus tetapi belum mulai menurun.

Bagaimana Mengatasi Error OOM yang Persisten?

Jika crash berlanjut setelah optimasi, selidiki faktor tambahan ini.

Fragmentasi VRAM

Alokator memori PyTorch dapat memfragmentasi VRAM seiring waktu, menyebabkan kegagalan bahkan ketika total memori bebas tampak cukup.

Jalankan training dengan variabel environment PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128. Ini mengubah strategi alokasi untuk mengurangi fragmentasi.

Memulai dari awal tanpa operasi GPU sebelumnya membantu. Restart sistem Anda atau setidaknya terminasi semua proses Python sebelum training.

Memantau Penggunaan Memori

Amati penggunaan VRAM selama training untuk mengidentifikasi persis kapan OOM terjadi.

Jalankan nvidia-smi -l 1 di terminal terpisah untuk melihat penggunaan memori diperbarui setiap detik.

Catat penggunaan puncak tepat sebelum crash. Ini memberi tahu Anda berapa banyak yang perlu Anda kurangi.

Jika crash terjadi segera, konfigurasi loading model Anda salah. Jika crash terjadi setelah beberapa step, akumulasi aktivasi atau fragmentasi adalah masalahnya.

Masalah Dataset

Gambar resolusi sangat tinggi dalam dataset Anda dapat menyebabkan OOM ketika dimuat untuk training.

Praproses dataset Anda untuk memastikan semua gambar pada atau di bawah resolusi training. Tidak ada manfaat memuat gambar 4K ketika training pada 512x512.

Bergabung dengan 115 anggota kursus lainnya

Buat Influencer AI Ultra-Realistis Pertama Anda dalam 51 Pelajaran

Buat influencer AI ultra-realistis dengan detail kulit yang hidup, selfie profesional, dan adegan kompleks. Dapatkan dua kursus lengkap dalam satu paket. ComfyUI Foundation untuk menguasai teknologi, dan Fanvue Creator Academy untuk belajar memasarkan diri Anda sebagai kreator AI.

Harga early-bird berakhir dalam:
--
Hari
:
--
Jam
:
--
Menit
:
--
Detik
51 Pelajaran • 2 Kursus Lengkap
Pembayaran Sekali
Update Seumur Hidup
Hemat $200 - Harga Naik ke $399 Selamanya
Diskon early-bird untuk siswa pertama kami. Kami terus menambahkan nilai lebih, tetapi Anda mengunci $199 selamanya.
Ramah pemula
Siap produksi
Selalu diperbarui

Verifikasi bahwa rasio aspek masuk akal. Gambar yang sangat lebar atau tinggi dapat membutuhkan lebih banyak memori selama pemrosesan bahkan pada jumlah piksel total yang sama.

Proses Lain Menggunakan VRAM

Periksa aplikasi lain yang mengonsumsi memori GPU sebelum training.

Tutup browser web, Discord, dan aplikasi akselerasi GPU lainnya. Bahkan beberapa ratus MB yang dikonsumsi di tempat lain dapat mendorong Anda melewati batas.

Beberapa proses Python dapat menyimpan VRAM dari run yang gagal sebelumnya. Restart interpreter Python atau seluruh sistem Anda untuk slate yang bersih.

Bug Framework Training

Kadang-kadang, bug di Kohya SS atau alat training lainnya menyebabkan kebocoran memori.

Perbarui ke versi terbaru alat training Anda. Perbaikan terkait memori umum dalam pembaruan.

Periksa issue GitHub alat untuk laporan yang cocok dengan gejala Anda. Orang lain mungkin telah menemukan solusi atau perbaikan.

Untuk pengguna yang ingin melatih LoRA tanpa mengelola batasan teknis ini, Apatero.com menawarkan training berbasis cloud dengan hardware kelas profesional. Anda mendefinisikan pekerjaan training dan dataset Anda sementara platform menangani manajemen memori dan optimasi secara otomatis.

Apa Pendekatan Training Alternatif?

Jika training 4090 tetap bermasalah, pertimbangkan alternatif ini.

Training Cloud

Instance cloud dengan 48GB+ VRAM menghilangkan batasan memori sepenuhnya.

RunPod, Vast.ai, dan Lambda Labs menawarkan instance GPU per jam. Instance A100 80GB melatih Flux LoRA dengan nyaman pada resolusi penuh.

Biaya untuk run training LoRA tipikal adalah $5-15 tergantung penyedia dan jenis GPU. Ini masuk akal untuk kebutuhan training sesekali.

Unggah dataset Anda, jalankan training, unduh LoRA. Prosesnya memakan waktu 1-2 jam total untuk sebagian besar proyek.

Training Presisi Lebih Rendah

Training FP8 eksperimental mengurangi memori lebih jauh dari BF16. Beberapa alat komunitas mendukung ini.

Training FP8 kurang terbukti untuk kualitas dibandingkan BF16. Uji hasil dengan hati-hati sebelum mengadopsi untuk proyek penting.

Penghematan memori tambahan 30-40% dapat membuat konfigurasi yang sebelumnya tidak mungkin menjadi bekerja.

Varian LoRA Lebih Kecil

LoKr, LoHa, dan adaptasi low-rank serupa menggunakan lebih sedikit memori dari LoRA standar.

Varian ini bekerja dengan baik untuk beberapa tujuan training tetapi mungkin underperform untuk gaya atau konsep kompleks.

Eksperimen dengan alternatif jika konfigurasi LoRA standar tetap bermasalah meskipun sudah dioptimasi.

Pertanyaan yang Sering Diajukan

Mengapa training crash setelah tepat 1 step setiap kali?

Ini menunjukkan bahwa ambang batas memori tertentu sedang dilewati. Forward pass muat tetapi menambahkan gradient selama backward pass melebihi VRAM. Aktifkan gradient checkpointing dan kurangi resolusi bersamaan bukan secara bertahap.

Bisakah saya melatih pada 1024x1024 di RTX 4090?

Secara teoritis mungkin dengan optimasi ekstrem termasuk rank minimal, checkpointing berat, dan 8-bit untuk semuanya. Secara praktis, hasil pada 512x512 cukup baik sehingga perjuangan memori tidak sepadan. Latih pada 512x512 dan generate pada 1024x1024.

Apakah ukuran batch 1 menghasilkan LoRA yang lebih buruk dari batch yang lebih besar?

Tidak secara signifikan. Akumulasi gradient memberikan dinamika training yang setara. Beberapa berargumen bahwa batch yang sangat kecil memiliki sedikit lebih banyak noise tetapi gradient terakumulasi menghaluskan ini. Perbedaan kualitas minimal dibandingkan faktor lainnya.

Bagaimana saya tahu jika LoRA saya training dengan benar?

Gambar sampel selama training menunjukkan progres. Anda harus melihat kata trigger Anda mempengaruhi generasi setelah 200-400 step. Transfer gaya penuh biasanya muncul pada 800-1000 step. Jika sampel tidak berubah atau langsung menurun, sesuaikan learning rate.

Mengapa penggunaan VRAM meningkat perlahan selama training?

Fragmentasi memori atau kebocoran menyebabkan peningkatan bertahap. Alokator membuat fragmen kecil yang tidak dapat digunakan kembali. Atur variabel environment max_split_size_mb dan pastikan tidak ada kebocoran memori dalam kode kustom.

Haruskah saya menggunakan xFormers atau attention native PyTorch?

xFormers memberikan efisiensi memori yang lebih baik untuk sebagian besar skenario training. Attention native kadang-kadang bekerja lebih baik untuk arsitektur tertentu. Mulai dengan xFormers dan hanya ganti jika Anda mengalami masalah.

Network rank apa yang harus saya gunakan untuk Flux LoRA?

Mulai dengan 16 untuk karakter dan konsep sederhana, 32 untuk gaya dan subjek kompleks. Rank lebih tinggi menangkap lebih banyak detail tetapi membutuhkan lebih banyak memori dan lebih banyak data training. Uji rank lebih rendah dulu karena sering bekerja dengan baik.

Berapa banyak gambar training yang saya butuhkan?

Untuk karakter, 10-20 gambar bagus bekerja dengan baik. Untuk gaya, 50-200 gambar memberikan cakupan lebih baik. Kualitas lebih penting dari kuantitas. Gambar dengan caption baik dan beragam mengalahkan ratusan shot serupa.

Bisakah saya melanjutkan training setelah crash OOM?

Jika Anda mengaktifkan checkpointing dalam konfigurasi training Anda, ya. Kohya SS menyimpan progres secara berkala. Lanjutkan dari checkpoint terakhir setelah memperbaiki pengaturan memori.

Adakah cara untuk memprediksi apakah konfigurasi saya akan OOM sebelum memulai?

Estimasi kasar berdasarkan ukuran model, ukuran batch, resolusi, dan optimasi. Alat seperti accelerate estimate-memory memberikan estimasi. Tetapi memori aktual bervariasi dengan detail implementasi, jadi selalu mulai konservatif.

Kesimpulan dan Workflow yang Direkomendasikan

Training Flux LoRA di RTX 4090 membutuhkan manajemen memori yang hati-hati tetapi menghasilkan hasil yang sangat baik setelah dikonfigurasi dengan benar. Pengaturan kunci adalah gradient checkpointing, ukuran batch 1 dengan akumulasi, resolusi 512x512, dan training mixed precision.

Mulai dengan konfigurasi konservatif yang disediakan dalam panduan ini. Jalankan tes singkat 100-200 step untuk memverifikasi stabilitas sebelum berkomitmen pada run training penuh.

Pantau sampel Anda selama training. Berhenti ketika LoRA menangkap konsep target Anda sebelum kualitas mulai menurun dari overtraining.

Jika Anda secara konsisten berjuang dengan batasan memori atau menginginkan pengaturan kualitas lebih tinggi dari yang diizinkan 24GB, training cloud menawarkan alternatif praktis. Layanan seperti Apatero.com membuat ini dapat diakses tanpa mengelola infrastruktur cloud sendiri.

RTX 4090 Anda adalah hardware yang mampu untuk training LoRA lokal. Dengan konfigurasi yang tepat, Anda dapat melatih Flux LoRA kustom untuk karakter, gaya, dan konsep spesifik Anda sambil menyimpan semuanya di mesin Anda sendiri.

Siap Membuat Influencer AI Anda?

Bergabung dengan 115 siswa yang menguasai ComfyUI dan pemasaran influencer AI dalam kursus lengkap 51 pelajaran kami.

Harga early-bird berakhir dalam:
--
Hari
:
--
Jam
:
--
Menit
:
--
Detik
Klaim Tempat Anda - $199
Hemat $200 - Harga Naik ke $399 Selamanya