დიფუზიური მოდელების ეფექტური წვრილი დარეგულირება QLoRA-ით: 10 GB VRAM-ზე ნაკლები მოხმარება
წინა პოსტში კვანტიზაციის ტექნიკების განხილვის შემდეგ, ეს პოსტი ყურადღებას ამახვილებს დიფუზიური მოდელების, კერძოდ FLUX.1-dev-ის, ეფექტურ წვრილ დარეგულირებაზე (fine-tuning) QLoRA მეთოდის გამოყენებით. მიზანია, მივაღწიოთ 10 GB-ზე ნაკლებ VRAM მოხმარებას ერთ GPU-ზე, რაც ხელმისაწვდომს გახდის ამ პროცესს სამომხმარებლო აპარატურაზე. განიხილება ისეთი ტექნიკები, როგორიცაა 8-ბიტიანი AdamW ოპტიმიზატორი, გრადიენტის შემოწმება (gradient checkpointing) და ლატენტების ქეშირება (cache latents), რათა FLUX.1-dev-მა ალფ
ჩვენს წინა პოსტში, „კვანტიზაციის ბეკენდების კვლევა Diffusers-ში“, განვიხილეთ, თუ როგორ შეუძლია სხვადასხვა კვანტიზაციის ტექნიკას შეამციროს დიფუზიური მოდელები, როგორიცაა FLUX.1-dev, რაც მათ მნიშვნელოვნად ხელმისაწვდომს ხდის ინფერენციისთვის (inference) მუშაობის მკვეთრი კომპრომისის გარეშე. ჩვენ ვნახეთ, თუ როგორ ამცირებენ bitsandbytes, torchao და სხვა ინსტრუმენტები მეხსიერების კვალს სურათების გენერირებისთვის. ინფერენციის შესრულება კარგია, მაგრამ იმისათვის, რომ ეს მოდელები ნამდვილად ჩვენი გახდეს, ჩვენ ასევე უნდა შევძლოთ მათი წვრილი დარეგულირება (fine-tuning). ამიტომ, ამ პოსტში განვიხილავთ ამ მოდელების ეფექტურ წვრილ დარეგულირებას პიკური მეხსიერების მოხმარებით ~10 GB VRAM-ზე ნაკლებზე ერთ GPU-ზე. ეს პოსტი გაგიძღვებათ FLUX.1-dev-ის წვრილი დარეგულირების პროცესში QLoRA-ს გამოყენებით diffusers ბიბლიოთეკასთან ერთად. ჩვენ წარმოგიდგენთ შედეგებს NVIDIA RTX 4090-დან. ასევე ხაზს გავუსვამთ, თუ როგორ შეუძლია FP8 ტრენინგს torchao-სთან ერთად კიდევ უფრო ოპტიმიზაცია გაუკეთოს სიჩქარეს თავსებად აპარატურაზე. ჩვენი მიზანია, black-forest-labs/FLUX.1-dev-ის წვრილი დარეგულირებით, მცირე მონაცემთა ნაკრების გამოყენებით, მას ალფონს მუხას მხატვრული სტილი შევაძენინოთ. მოდელი შედგება სამი ძირითადი კომპონენტისგან: ჩვენი QLoRA მიდგომისას, ჩვენ ექსკლუზიურად ვამახვილებთ ყურადღებას ტრანსფორმერის კომპონენტის წვრილ დარეგულირებაზე. ტექსტის ენკოდერები და VAE გაყინული რჩება ტრენინგის განმავლობაში.
ჩვენ გამოვიყენეთ diffusers-ის სავარჯიშო სკრიპტი (ოდნავ შეცვლილი აქედან, რომელიც განკუთვნილია DreamBooth-ის სტილის LoRA წვრილი დარეგულირებისთვის FLUX მოდელებისთვის. ასევე, ამ ბლოგპოსტში მოყვანილი შედეგების რეპროდუცირებისთვის (და Google Colab-ში გამოყენებული) შემოკლებული ვერსია ხელმისაწვდომია აქ.
მოდით განვიხილოთ QLoRA-სა და მეხსიერების ეფექტურობის მნიშვნელოვანი ასპექტები:
**LoRA (დაბალ-რანგის ადაპტაცია) სიღრმისეული ანალიზი:** LoRA მოდელის ვარჯიშს უფრო ეფექტურს ხდის წონის განახლებების დაბალრანგიანი მატრიცებით თვალყურის დევნით. სრული წონის მატრიცის W განახლების ნაცვლად, LoRA სწავლობს ორ პატარა მატრიცას A და B. მოდელის წონების განახლება არის ΔW=BA, სადაც A∈Rr×k და B∈Rd×r. რიცხვი r (ე.წ. რანგი) გაცილებით მცირეა, ვიდრე ორიგინალური განზომილებები, რაც ნიშნავს ნაკლებ პარამეტრს განახლებისთვის. და ბოლოს, α არის სკალირების ფაქტორი LoRA აქტივაციებისთვის. ეს გავლენას ახდენს იმაზე, თუ რამდენად მოქმედებს LoRA განახლებებზე და ხშირად დაყენებულია r-ის ან მისი ჯერადის ტოლ მნიშვნელობაზე. ის ხელს უწყობს წინასწარ გაწვრთნილი მოდელისა და LoRA ადაპტერის გავლენის დაბალანსებას. კონცეფციის ზოგადი შესავლისთვის იხილეთ ჩვენი წინა ბლოგპოსტი: „LoRA-ს გამოყენება Stable Diffusion-ის ეფექტური წვრილი დარეგულირებისთვის“.
**QLoRA: ეფექტურობის მძლავრი წყარო:** QLoRA აუმჯობესებს LoRA-ს წინასწარ გაწვრთნილი საბაზისო მოდელის კვანტიზებულ ფორმატში (ჩვეულებრივ 4-ბიტიანად bitsandbytes-ის მეშვეობით) ჩატვირთვით, რაც მკვეთრად ამცირებს საბაზისო მოდელის მეხსიერების კვალს. შემდეგ ის ავარჯიშებს LoRA ადაპტერებს (ჩვეულებრივ FP16/BF16 ფორმატში) ამ კვანტიზებულ ბაზაზე. ეს მნიშვნელოვნად ამცირებს VRAM-ის საჭიროებას საბაზისო მოდელის შესანახად. მაგალითად, DreamBooth-ის სავარჯიშო სკრიპტში HiDream-ისთვის 4-ბიტიანი კვანტიზაცია bitsandbytes-ით ამცირებს LoRA-ს წვრილი დარეგულირების პიკურ მეხსიერების მოხმარებას ~60GB-დან ~37GB-მდე, ხარისხის უმნიშვნელო ან ნულოვანი გაუარესებით. იგივე პრინციპს ვიყენებთ აქ FLUX.1-ის წვრილი დარეგულირებისთვის სამომხმარებლო დონის აპარატურაზე.
**8-ბიტიანი ოპტიმიზატორი (AdamW):** სტანდარტული AdamW ოპტიმიზატორი ინახავს პირველი და მეორე მომენტის შეფასებებს თითოეული პარამეტრისთვის 32-ბიტიან (FP32) ფორმატში, რაც დიდ მეხსიერებას მოიხმარს. 8-ბიტიანი AdamW იყენებს ბლოკურ კვანტიზაციას (block-wise quantization) ოპტიმიზატორის მდგომარეობების 8-ბიტიანი სიზუსტით შესანახად, ვარჯიშის სტაბილურობის შენარჩუნებით. ამ ტექნიკას შეუძლია შეამციროს ოპტიმიზატორის მეხსიერების მოხმარება ~75%-ით სტანდარტულ FP32 AdamW-თან შედარებით. მისი ჩართვა სკრიპტში მარტივია:
**გრადიენტის შემოწმება (Gradient Checkpointing):** forward pass-ის დროს, შუალედური აქტივაციები, როგორც წესი, ინახება backward pass გრადიენტის გამოთვლისთვის. გრადიენტის შემოწმება ვაჭრობს გამოთვლებს მეხსიერებაზე, მხოლოდ გარკვეული საკონტროლო წერტილის აქტივაციების შენახვით და სხვების ხელახალი გამოთვლით უკუპროპაგაციის დროს.
**ლატენტების ქეშირება (Cache Latents):** ეს ოპტიმიზაციის ტექნიკა წინასწარ ამუშავებს ყველა სავარჯიშო სურათს VAE ენკოდერის მეშვეობით ვარჯიშის დაწყებამდე. ის ინახავს მიღებულ ლატენტურ წარმოდგენებს მეხსიერებაში. ვარჯიშის დროს, სურათების რეალურ დროში კოდირების ნაცვლად, პირდაპირ გამოიყენება ქეშირებული ლატენტები. ამ მიდგომას ორი ძირითადი უპირატესობა აქვს:
**4-ბიტიანი კვანტიზაციის დაყენება (BitsAndBytesConfig):** ეს სექცია აჩვენებს QLoRA კონფიგურაციას საბაზისო მოდელისთვის:
**LoRA კონფიგურაციის განსაზღვრა (LoraConfig):** ადაპტერები ემატება კვანტიზებულ ტრანსფორმერს: მხოლოდ ეს LoRA პარამეტრები ხდება სავარჯიშო. QLoRA-ს წვრილი დარეგულირების დაწყებამდე შეგვიძლია VRAM-ისა და რეალური დროის უზარმაზარი ნაწილი დავზოგოთ ტექსტური ენკოდერების გამოსავლის ერთხელ ქეშირებით. ვარჯიშის დროს, მონაცემთა ჩამტვირთავი უბრალოდ კითხულობს ქეშირებულ ემბედინგებს წარწერის ხელახალი ენკოდირების ნაცვლად, ამიტომ CLIP/T5 ენკოდერს არასოდეს უწევს GPU მეხსიერებაში ყოფნა. ამის ქეშირებულ VAE ლატენტებთან (--cache_latents) კომბინირებით, აქტიური მოდელი მცირდება მხოლოდ კვანტიზებულ ტრანსფორმერამდე + LoRA ადაპტერებამდე, რაც მთელ წვრილ დარეგულირებას კომფორტულად აჩერებს 10 GB-ზე ნაკლებ GPU მეხსიერებაში. ამ დემონსტრაციისთვის, ჩვენ გამოვიყენეთ NVIDIA RTX 4090 (24GB VRAM) მისი მუშაობის შესასწავლად. სრული სავარჯიშო ბრძანება გამოყენებით
თეგები:
#ხელოვნური ინტელექტი
#მანქანური სწავლება
#ოპტიმიზაცია
#gpu
#lora
#კვანტიზაცია
#flux.1-dev
#nvidia rtx 4090
#vram
#დიფუზია
#qlora
#წვრილი დარეგულირება
#ალფონს მუხა
წყარო: huggingface.co
AI-ით გადამუშავებული
მსგავსი სტატიები
ხელოვნური ინტელექტი
Anthropic-ის Claude-ის აღზევება Apple App Store-ის რეიტინგებში პენტაგონთან მოლაპარაკებების ფონზე
ხელოვნური ინტელექტი
ტრამპის ადმინისტრაცია Anthropic-ს სანქციებს უწესებს ხელოვნური ინტელექტის გამოყენებაზე უარის გამო: ექსპერტი ინდუსტრიის უსაფრთხოების ხარვეზებზე საუბრობს
ხელოვნური ინტელექტი