Stable Diffusion XL Core ML-ზე: მოდელის ზომის შემცირება და მუშაობის გაუმჯობესება
Hugging Face-ი და Apple-ი აგრძელებენ ხელოვნური ინტელექტის მოდელების ოპტიმიზაციას სამომხმარებლო მოწყობილობებზე ადგილობრივად გასაშვებად. უახლესი მცდელობა Stable Diffusion XL-ის Core ML-ზე ადაპტაციაა Apple Silicon-ის Mac-ებისთვის, რაც საშუალებას იძლევა მოდელი შემცირდეს ზომით და გაუმჯობესდეს მისი მუშაობა ინოვაციური კვანტიზაციის მეთოდებით, მათ შორის შერეული ბიტების პალეტიზაციით. პროექტი სრულად ღია კოდით არის ხელმისაწვდომი და community-ის ჩართულობას ელის.
Stable Diffusion XL მოდელის ძირითადი ნაკლი მისი მნიშვნელოვნად დიდი ზომაა, რაც მას უფრო ნელა მუშაობის და სამომხმარებლო აპარატურაზე გაშვების სირთულეს უქმნის. თუმცა, Hugging Face-ის diffusers ბიბლიოთეკის უახლესი ვერსიის გამოყენებით, შესაძლებელია Stable Diffusion XL-ის გაშვება CUDA აპარატურაზე 16 GB GPU RAM-ით, რაც მას Colab-ის უფასო სერვისზეც ხელმისაწვდომს ხდის. ბოლო რამდენიმე თვის განმავლობაში ნათლად გამოიკვეთა ადამიანების ინტერესი ML მოდელების ადგილობრივად გაშვების მიმართ, მრავალი მიზეზის გამო, მათ შორის კონფიდენციალურობის, მოხერხებულობის, მარტივი ექსპერიმენტების ჩატარების ან შეუზღუდავი გამოყენების გამო. Apple-სა და Hugging Face-ში აქტიურად ვმუშაობდით ამ სფეროს შესასწავლად.
ჩვენ ვაჩვენეთ, თუ როგორ შეიძლება Stable Diffusion-ის გაშვება Apple Silicon-ზე, ან როგორ შეიძლება Core ML-ის უახლესი მიღწევების გამოყენება ზომისა და მუშაობის გასაუმჯობესებლად 6-ბიტიანი პალეტიზაციის მეშვეობით. Stable Diffusion XL-ისთვის რამდენიმე მნიშვნელოვანი ნაბიჯი გადავდგით: ყველაფერი ღია წყაროა და უკვე ხელმისაწვდომია. ამ გამოშვების ფარგლებში, ჩვენ Core ML-ში Stable Diffusion XL-ის ორი განსხვავებული ვერსია გამოვაქვეყნეთ. ორივე მოდელის ტესტირება შესაძლებელია Apple-ის Swift command-line inference აპლიკაციის ან Hugging Face-ის დემო აპლიკაციის გამოყენებით. წინა Stable Diffusion გამოშვებების მსგავსად, ველით, რომ საზოგადოება შექმნის ახალ, ოპტიმიზებულ ვერსიებს სხვადასხვა სფეროსთვის და მრავალი მათგანი Core ML-ში გადაკონვერტირდება. შეგიძლიათ თვალი ადევნოთ ამ ფილტრს Hub-ში! Stable Diffusion XL მუშაობს Apple Silicon Mac-ებზე, რომლებიც მართავენ macOS 14-ის საჯარო ბეტა ვერსიას. ის ამჟამად იყენებს ყურადღების ორიგინალურ იმპლემენტაციას, რომელიც განკუთვნილია CPU + GPU გამოთვლითი ერთეულებისთვის. აღსანიშნავია, რომ „დახვეწის“ (refiner) ეტაპი ჯერ არ არის პორტირებული. ცნობისთვის, ეს არის მუშაობის მაჩვენებლები, რომლებიც სხვადასხვა მოწყობილობაზე მივიღეთ: (მონაცემები არ არის მოცემული ტექსტში)
გასულ თვეს განვიხილეთ 6-ბიტიანი პალეტიზაცია, პოსტ-ტრეინინგის კვანტიზაციის მეთოდი, რომელიც 16-ბიტიან წონებს გარდაქმნის მხოლოდ 6-ბიტიან პარამეტრებად. ეს მოდელის ზომის მნიშვნელოვან შემცირებას უზრუნველყოფს, თუმცა, ამის მიღმა გასვლა რთულია, რადგან მოდელის ხარისხი სულ უფრო და უფრო ზარალდება ბიტების რაოდენობის შემცირებასთან ერთად. მოდელის ზომის შემდგომი შემცირების ერთი ვარიანტია „ტრეინინგის დროს კვანტიზაციის“ გამოყენება, რომელიც მოიცავს კვანტიზაციის ცხრილების სწავლას მოდელის დახვეწისას. ეს მეთოდი შესანიშნავად მუშაობს, მაგრამ საჭიროა ყოველი მოდელისთვის ცალკეული დახვეწის ფაზის გაშვება. ამის ნაცვლად, ჩვენ სხვა ალტერნატივა გამოვიკვლიეთ: შერეული ბიტების პალეტიზაცია (mixed-bit palettization). პარამეტრზე 6 ბიტის გამოყენების ნაცვლად, ჩვენ ვამოწმებთ მოდელს და ვწყვეტთ, რამდენი კვანტიზაციის ბიტი გამოვიყენოთ თითოეული ფენისთვის. გადაწყვეტილებას ვიღებთ იმის საფუძველზე, თუ რამდენად უწყობს ხელს თითოეული ფენა საერთო ხარისხის გაუარესებას, რასაც ვზომავთ PSNR-ის შედარებით კვანტიზებულ მოდელსა და ორიგინალურ მოდელს შორის float16 რეჟიმში, რამდენიმე შეტანის მონაცემისთვის. ჩვენ ვიკვლევთ ბიტების რამდენიმე სიღრმეს თითოეული ფენისთვის: 1 (!), 2, 4 და 8. თუ ფენა მნიშვნელოვნად დეგრადირდება, ვთქვათ, 2 ბიტის გამოყენებისას, გადავდივართ 4-ზე და ასე შემდეგ. ზოგიერთი ფენა შეიძლება შენარჩუნდეს 16-ბიტიან რეჟიმში, თუ ისინი კრიტიკულია ხარისხის შესანარჩუნებლად. ამ მეთოდის გამოყენებით, ჩვენ შეგვიძლია მივაღწიოთ ეფექტურ კვანტიზაციას, მაგალითად, საშუალოდ 2.8 ბიტს, და ვზომავთ დეგრადაციის გავლენას ყოველ კომბინაციაზე, რომელსაც ვცდით. ეს საშუალებას გვაძლევს უკეთ ვიყოთ ინფორმირებული საუკეთესო კვანტიზაციის შესახებ, რომელიც უნდა გამოვიყენოთ ჩვენი სამიზნე ხარისხისა და ზომის ბიუჯეტებისთვის.
მეთოდის საილუსტრაციოდ, განვიხილოთ შემდეგი კვანტიზაციის „რეცეპტები“, რომლებიც მივიღეთ ჩვენი ანალიზის ერთ-ერთი გაშვებიდან (მოგვიანებით ავხსნით, როგორ გენერირდა ისინი): ეს გვეუბნება, რომ მოდელის ორიგინალური ხარისხი, რომელიც იზომება PSNR-ით float16-ში, დაახლოებით 82 dB-ია. 8-ბიტიანი ხაზოვანი კვანტიზაციის განხორციელება მას 66 dB-მდე ამცირებს. მაგრამ შემდეგ გვაქვს რეცეპტი, რომელიც პარამეტრზე საშუალოდ 6.55 ბიტამდე შეკუმშავს, PSNR-ის 80 dB-ზე შენარჩუნებით. მეორე და მესამე რეცეპტები კიდევ უფრო ამცირებენ მოდელის ზომას, ხოლო PSNR-ს ინარჩუნებენ 8-ბიტიანი ხაზოვანი კვანტიზაციისას მიღებულზე მაღლა. ვიზუალური მაგალითებისთვის, ეს არის შედეგები მოთხოვნაზე „სერფინგის ძაღლის მაღალი ხარისხის ფოტო“, თითოეული სამი რეცეპტის ერთნაირი „seed“-ით გაშვებისას: რამდენიმე საწყისი დასკვნა: ეს ტექნიკა შესანიშნავია Stable Diffusion XL-ისთვის, რადგან შეგვიძლია შევინარჩუნოთ UNet-ის თითქმის იგივე ზომა, მიუხედავად იმისა, რომ პარამეტრების რაოდენობა წინა ვერსიასთან შედარებით გასამმაგდა. მაგრამ ის მხოლოდ ამით არ შემოიფარგლება! შეგიძლიათ მეთოდი გამოიყენოთ ნებისმიერ Stable Diffusion Core ML მოდელზე.
შემდეგი გრაფიკი აჩვენებს სიგნალის სიძლიერეს (PSNR dB-ში) მოდელის ზომის შემცირებასთან შედარებით (float16 ზომის %-ში) stabilityai/stable-diffusion-xl-base-1.0-ისთვის. {1,2,4,6,8}-ბიტიანი მრუდები გენერირდება უფრო მეტი ფენის პროგრესული პალეტიზაციით ფიქსირებული რაოდენობის ბიტების პალიტრის გამოყენებით. ფენები დალაგებული იყო მათი იზოლირებული ზემოქმედების ზრდის მიხედვით ბოლოდან-ბოლომდე სიგნალის სიძლიერეზე, ასე რომ კუმულაციური შეკუმშვის გავლენა მაქსიმალურად დაგვიანებულია. შერეული ბიტების მრუდი ეფუძნება ბიტების უფრო მაღალ რაოდენობაზე დაბრუნებას, როგორც კი ფენის იზოლირებული გავლენა ბოლოდან-ბოლომდე სიგნალის მთლიანობაზე ზღურბლს ქვემოთ დაეცემა. გაითვალისწინეთ, რომ პალეტიზაციაზე დაფუძნებული ყველა მრუდი აჭარბებს ხაზოვან 8-ბიტიან კვანტიზაციას იმავე მოდელის ზომაზე, გარდა 1-ბიტიანისა. შერეული ბიტების პალეტიზაცია მუშაობს...
თეგები:
#ხელოვნური ინტელექტი
#მანქანური სწავლება
#hugging face
#კვანტიზაცია
#core ml
#apple silicon
#მოდელის ოპტიმიზაცია
#stable diffusion xl
წყარო: huggingface.co
AI-ით გადამუშავებული