Würstchen არის დიფუზიური მოდელი, რომლის ტექსტით განპირობებული კომპონენტი მუშაობს გამოსახულებების მაღალშეკუმშულ ლატენტურ სივრცეში. რატომ არის ეს მნიშვნელოვანი? მონაცემების კომპრესირება ამცირებს გამოთვლით ხარჯებს როგორც მოდელის ვარჯიშისთვის, ისე ინფერენციისთვის მრავალჯერადად. 1024×1024 ზომის გამოსახულებებზე ვარჯიში გაცილებით ძვირია, ვიდრე 32×32 ზომის გამოსახულებებზე. როგორც წესი, სხვა ნამუშევრები იყენებენ შედარებით მცირე კომპრესიას, სივრცული შეკუმშვის 4x - 8x დიაპაზონში. Würstchen ამას უკიდურესობამდე მიჰყავს. თავისი ინოვაციური დიზაინის მეშვეობით, ის აღწევს 42x სივრცულ კომპრესიას! ეს აქამდე არასოდეს ყოფილა ნანახი, რადგან გავრცელებული მეთოდები ვერ ახერხებენ დეტალური გამოსახულებების ზუსტად აღდგენას 16x სივრცული კომპრესიის შემდეგ. Würstchen იყენებს ორეტაპიან კომპრესიას, რასაც ჩვენ ვუწოდებთ A ეტაპს და B ეტაპს. A ეტაპი არის VQGAN, ხოლო B ეტაპი არის დიფუზიური ავტოკოდერი (დამატებითი დეტალები მოცემულია სტატიაში). A და B ეტაპებს ერთად დეკოდერს ვუწოდებთ, რადგან ისინი ახდენენ შეკუმშული გამოსახულებების დეკოდირებას პიქსელურ სივრცეში. მესამე მოდელი, C ეტაპი, ვარჯიშობს ამ მაღალშეკუმშულ ლატენტურ სივრცეში. მისი ვარჯიში მოითხოვს მიმდინარე მაღალპროდუქტიული მოდელებისთვის საჭირო გამოთვლითი სიმძლავრის მცირე ნაწილს, ამასთანავე იძლევა იაფ და სწრაფ ინფერენციას. C ეტაპს ჩვენ პრაიორს ვუწოდებთ. ის საკმაოდ სწრაფი და ეფექტურია. Würstchen-ის ყველაზე დიდი უპირატესობა იმაში მდგომარეობს, რომ მას შეუძლია გამოსახულებების გენერაცია Stable Diffusion XL-ის მსგავს მოდელებზე ბევრად სწრაფად, გაცილებით ნაკლები მეხსიერების გამოყენებით! ასე რომ, ყველა ჩვენგანისთვის, ვისაც A100s არ გვაქვს ხელთ, ეს ძალზედ გამოსადეგი იქნება. ქვემოთ მოცემულია SDXL-თან შედარება სხვადასხვა პარტიის ზომებზე. ამას გარდა, Würstchen-ის კიდევ ერთი უმნიშვნელოვანესი უპირატესობა ვარჯიშის შემცირებულ ხარჯებში მდგომარეობს. Würstchen v1-ს, რომელიც მუშაობს 512x512 გარჩევადობით, ვარჯიშისთვის მხოლოდ 9,000 GPU საათი დასჭირდა. ამის შედარება Stable Diffusion 1.4-ზე დახარჯულ 150,000 GPU საათთან მიუთითებს, რომ ხარჯების ეს 16-ჯერადი შემცირება არა მხოლოდ მკვლევარებს ეხმარება ახალი ექსპერიმენტების ჩატარებისას, არამედ გზას უხსნის მეტ ორგანიზაციას ასეთი მოდელების ვარჯიშისთვის. Würstchen v2-მა გამოიყენა 24,602 GPU საათი. 1536-მდე გაზრდილი გარჩევადობითაც კი, ეს ჯერ კიდევ 6-ჯერ იაფია, ვიდრე SD1.4, რომელიც მხოლოდ 512x512-ზე იყო გავარჯიშებული. დეტალური განმარტებითი ვიდეო შეგიძლიათ ნახოთ აქ, ასევე, შეგიძლიათ სცადოთ დემოს გამოყენებით. წინააღმდეგ შემთხვევაში, მოდელი ხელმისაწვდომია Diffusers ბიბლიოთეკის საშუალებით, ასე რომ შეგიძლიათ გამოიყენოთ თქვენთვის უკვე ნაცნობი ინტერფეისი. მაგალითად, ასე ხდება ინფერენციის გაშვება AutoPipeline-ის გამოყენებით. Würstchen ვარჯიშობდა გამოსახულების გარჩევადობებზე 1024x1024-დან 1536x1536-მდე. ზოგჯერ კარგ შედეგებს ვაკვირდებით ისეთ გარჩევადობებზეც, როგორიცაა 1024x2048. თავისუფლად შეგიძლიათ სცადოთ. ასევე, დავაკვირდით, რომ პრაიორი (C ეტაპი) უჩვეულოდ სწრაფად ეგუება ახალ გარჩევადობებს. ამიტომ მისი დაზუსტება 2048x2048-ზე გამოთვლითად იაფი უნდა იყოს. ყველა ჩექპოინტი ასევე შეგიძლიათ იხილოთ Huggingface Hub-ზე. იქ მოიძებნება მრავალი ჩექპოინტი, ასევე მომავალი დემოები და მოდელის წონები. ამჟამად ხელმისაწვდომია 3 ჩექპოინტი პრაიორისთვის და 1 ჩექპოინტი დეკოდერისთვის. გაეცანით დოკუმენტაციას, სადაც განმარტებულია ჩექპოინტები და რა არის სხვადასხვა პრაიორ მოდელი და რისთვის შეიძლება მათი გამოყენება. ვინაიდან Würstchen სრულად ინტეგრირებულია Diffusers-ში, ის ავტომატურად მოყვება სხვადასხვა უპირატესობასა და ოპტიმიზაციას. ესენია: 2.0 ვერსიიდან დაწყებული, PyTorch-მა ინტეგრირება მოახდინა ყურადღების მექანიზმის (attention mechanism) მაღალოპტიმიზებულ და რესურსების მიმართ მეგობრულ ვერსიაში, სახელწოდებით torch.nn.functional.scaled_dot_product_attention ან SDPA. შემავალი მონაცემების ბუნებიდან გამომდინარე, ეს ფუნქცია იყენებს მრავალ ძირითად ოპტიმიზაციას. მისი შესრულება და მეხსიერების ეფექტურობა აღემატება ტრადიციულ ყურადღების მოდელს. აღსანიშნავია, რომ SDPA ფუნქცია ასახავს Flash Attention ტექნიკის მახასიათებლებს, როგორც ეს ხაზგასმულია დაოსა და მისი გუნდის მიერ დაწერილ კვლევით ნაშრომში „Fast and Memory-Efficient Exact Attention with IO-Awareness“. თუ იყენებთ Diffusers-ს PyTorch 2.0 ან უფრო ახალ ვერსიასთან ერთად და SDPA ფუნქცია ხელმისაწვდომია, ეს გაუმჯობესებები ავტომატურად გამოიყენება. დასაწყებად დააყენეთ torch 2.0 ან უფრო ახალი ვერსია ოფიციალური რეკომენდაციების გამოყენებით! იმის შესახებ, თუ როგორ იყენებს Diffusers SDPA-ს, იხილეთ დოკუმენტაცია. თუ PyTorch-ის 2.0-ზე ძველ ვერსიაზე ხართ, მაინც შეგიძლიათ მიაღწიოთ მეხსიერება-ეფექტურ ყურადღებას xFormers ბიბლიოთეკის გამოყენებით. თუ დამატებითი წარმადობის გაუმჯობესებას ეძებთ, შეგიძლიათ გამოიყენოთ torch.compile. წარმადობის მაქსიმალური ზრდისთვის უმჯობესია მისი გამოყენება როგორც პრაიორის, ისე დეკოდერის მთავარ მოდელზე. გაითვალისწინეთ, რომ საწყისი ინფერენციის ეტაპი დიდ დროს (2 წუთამდე) წაიღებს, სანამ მოდელები კომპილირდება. ამის შემდეგ შეგიძლიათ ჩვეულებრივ გაუშვათ ინფერენცია. კარგი ამბავი ის არის, რომ ეს კომპილაცია ერთჯერადი შესრულებაა. ამის შემდეგ, თქვენ მზად ხართ განიცადოთ უფრო სწრაფი ინფერენციები მუდმივად ერთი და იგივე გამოსახულების გარჩევადობებისთვის. კომპილაციაში საწყისი დროის ინვესტიცია სწრაფად ანაზღაურდება შემდგომი სიჩქარის უპირატესობებით. torch.compile-ის და მისი ნიუანსების შესახებ სიღრმისეული ინფორმაციისთვის, იხილეთ ოფიციალური დოკუმენტაცია.