მოდელების კვანტიზაცია: Bitsandbytes-ისა და GPTQ-ის შედარებითი ანალიზი
სტატია განიხილავს ხელოვნური ინტელექტის მოდელების კვანტიზაციის ორ ძირითად მეთოდს, bitsandbytes-სა და auto-gptq-ს, რომლებიც მშობლიურად არის მხარდაჭერილი Transformers ბიბლიოთეკაში. წარმოდგენილია თითოეული მეთოდის უპირატესობები და ნაკლოვანებები, მათ შორის გამოყენების სიმარტივე, კროს-მოდალური თავსებადობა, ადაპტერების ინტეგრაცია, ტექსტის გენერირების სიჩქარე, სერიალიზაციის შესაძლებლობები და ტექნიკური შეზღუდვები. მოცემულია ბენჩმარკის შედეგები ინფერენსისა და ადაპტერების დახვეწის წარმადობის შესადარებლად სხ
ამჟამად, მოდელების კვანტიზაცია ძირითადად ორი მიზნისთვის გამოიყენება. ტრანსფორმერებში მშობლიურად მხარდაჭერილია კვანტიზაციის ორი მეთოდი: bitsandbytes და auto-gptq.
გაითვალისწინეთ, რომ დამატებითი კვანტიზაციის სქემები ასევე მხარდაჭერილია 🤗 optimum ბიბლიოთეკაში, მაგრამ ეს არ შედის ამ ბლოგპოსტის ფარგლებში. მხარდაჭერილი სქემების შესახებ მეტის გასაგებად, გთხოვთ, იხილოთ ქვემოთ გაზიარებული რესურსებიდან ერთ-ერთი, ასევე დოკუმენტაციის შესაბამისი სექციები. აღსანიშნავია ისიც, რომ ქვემოთ მოცემული დეტალები ვრცელდება მხოლოდ PyTorch მოდელებზე; ამჟამად ის არ ეხება Tensorflow-ისა და Flax/JAX-ის მოდელებს.
ამ სექციაში განვიხილავთ bitsandbytes-ისა და GPTQ კვანტიზაციის უპირატესობებსა და ნაკლოვანებებს. აღსანიშნავია, რომ ეს შეფასებები ეფუძნება საზოგადოების გამოხმაურებას და დროთა განმავლობაში შესაძლოა შეიცვალოს, რადგან ზოგიერთი ფუნქცია შესაბამისი ბიბლიოთეკების სამომავლო გეგმებშია.
**Bitsandbytes-ის უპირატესობები:**
* **მარტივი:** bitsandbytes კვლავ რჩება ნებისმიერი მოდელის კვანტიზაციის უმარტივეს გზად, რადგან ის არ მოითხოვს კვანტიზებული მოდელის დაკალიბრებას შეყვანის მონაცემებით (ასევე მოიხსენიება როგორც zero-shot კვანტიზაცია). შესაძლებელია ნებისმიერი მოდელის კვანტიზაცია დაუყოვნებლივ, თუ ის შეიცავს `torch.nn.Linear` მოდულებს. როდესაც ტრანსფორმერებში ემატება ახალი არქიტექტურა, სანამ მათი ჩატვირთვა შესაძლებელია `accelerate`-ის `device_map="auto"` ფუნქციით, მომხმარებლებს შეუძლიათ ისარგებლონ bitsandbytes კვანტიზაციით მინიმალური წარმადობის გაუარესებით. კვანტიზაცია ხორციელდება მოდელის ჩატვირთვისას, ყოველგვარი შემდგომი დამუშავების ან მოსამზადებელი ნაბიჯის საჭიროების გარეშე.
* **კროს-მოდალური თავსებადობა:** ვინაიდან მოდელის კვანტიზაციის ერთადერთი პირობა `torch.nn.Linear` ფენის არსებობაა, კვანტიზაცია მუშაობს დაუყოვნებლივ ნებისმიერი მოდალობისთვის, რაც შესაძლებელს ხდის ისეთი მოდელების ჩატვირთვას, როგორიცაა Whisper, ViT, Blip2 და სხვა, 8-ბიტიან ან 4-ბიტიან ფორმატში.
* **0 წარმადობის გაუარესება ადაპტერების გაერთიანებისას:** (ადაპტერებისა და PEFT-ის შესახებ მეტის გასაგებად იხილეთ შესაბამისი ბლოგპოსტი, თუ არ იცნობთ მას). თუ თქვენ ავარჯიშებთ ადაპტერებს კვანტიზებულ საბაზო მოდელზე, ადაპტერების გაერთიანება შესაძლებელია საბაზო მოდელთან განლაგებისთვის (deployment) ყოველგვარი ინფერენსის (inference) წარმადობის გაუარესების გარეშე. თქვენ ასევე შეგიძლიათ გააერთიანოთ ადაპტერები დეკვანტიზებულ მოდელზე! ეს არ არის მხარდაჭერილი GPTQ-ისთვის.
**GPTQ-ის უპირატესობები:**
* **სწრაფი ტექსტის გენერირებისთვის:** GPTQ კვანტიზებული მოდელები სწრაფია bitsandbytes კვანტიზებულ მოდელებთან შედარებით ტექსტის გენერირებისთვის. სიჩქარის შედარებას შესაბამის სექციაში განვიხილავთ.
* **n-ბიტიანი მხარდაჭერა:** GPTQ ალგორითმი შესაძლებელს ხდის მოდელების კვანტიზაციას 2 ბიტამდე! თუმცა, ამან შესაძლოა ხარისხის სერიოზული გაუარესება გამოიწვიოს. რეკომენდებული ბიტების რაოდენობაა 4, რაც ამჟამად GPTQ-ისთვის ოპტიმალურ კომპრომისად ითვლება.
* **მარტივად სერიალიზებადი:** GPTQ მოდელები მხარს უჭერენ სერიალიზაციას ბიტების ნებისმიერი რაოდენობისთვის. მოდელების ჩატვირთვა TheBloke-ის სივრციდან: https://huggingface.co/TheBloke (მოძებნეთ ისეთები, რომლებიც ბოლოვდება -GPTQ სუფიქსით) მხარდაჭერილია დაუყოვნებლივ, თუ თქვენ გაქვთ საჭირო პაკეტები დაინსტალირებული. Bitsandbytes მხარს უჭერს 8-ბიტიან სერიალიზაციას, მაგრამ ამჟამად არ უჭერს მხარს 4-ბიტიან სერიალიზაციას.
* **AMD მხარდაჭერა:** ინტეგრაცია დაუყოვნებლივ უნდა მუშაობდეს AMD GPU-ებზე!
**Bitsandbytes-ის ნაკლოვანებები:**
* **ნელი GPTQ-ზე ტექსტის გენერირებისთვის:** bitsandbytes-ის 4-ბიტიანი მოდელები ნელია GPTQ-სთან შედარებით `generate`-ის გამოყენებისას.
* **4-ბიტიანი წონები არ არის სერიალიზებადი:** ამჟამად, 4-ბიტიანი მოდელები ვერ სერიალიზდება. ეს არის საზოგადოების ხშირი მოთხოვნა და ვფიქრობთ, რომ bitsandbytes-ის შემქმნელებმა ძალიან მალე უნდა მოაგვარონ ეს საკითხი, რადგან ის მათ სამომავლო გეგმებშია.
**GPTQ-ის ნაკლოვანებები:**
* **კალიბრაციის მონაცემთა ნაკრები:** კალიბრაციის მონაცემთა ნაკრების საჭიროებამ შესაძლოა ზოგიერთი მომხმარებელი დააშოროს GPTQ-ის გამოყენებას. გარდა ამისა, მოდელის კვანტიზაციას შესაძლოა რამდენიმე საათი დასჭირდეს (მაგ. 4 GPU საათი 175B მასშტაბის მოდელისთვის ნაშრომის მიხედვით - სექცია 2).
* **მხოლოდ ენის მოდელებისთვის (ამჟამად):** დღევანდელი მდგომარეობით, auto-GPTQ-ით მოდელის კვანტიზაციის API შექმნილია მხოლოდ ენის მოდელების მხარდასაჭერად. შესაძლებელი უნდა იყოს არატექსტური (ან მულტიმოდალური) მოდელების კვანტიზაცია GPTQ ალგორითმის გამოყენებით, მაგრამ ეს პროცესი არ არის დეტალურად აღწერილი ორიგინალურ ნაშრომში ან auto-gptq საცავში. თუ საზოგადოება დაინტერესდება ამ თემით, ეს შესაძლოა მომავალში იქნას განხილული.
**შესრულების შედარებითი ანალიზი**
ჩვენ გადავწყვიტეთ შეგვემუშავებინა ყოვლისმომცველი ბენჩმარკი როგორც ინფერენსისთვის, ასევე ადაპტერების დახვეწისთვის (fine-tuning) bitsandbytes-ისა და auto-gptq-ის გამოყენებით სხვადასხვა აპარატურაზე. ინფერენსის ბენჩმარკმა მომხმარებლებს უნდა მისცეს წარმოდგენა სიჩქარის განსხვავებაზე, რასაც ისინი მიიღებენ ინფერენსისთვის შემოთავაზებულ სხვადასხვა მიდგომებს შორის, ხოლო ადაპტერის დახვეწის ბენჩმარკმა მკაფიო წარმოდგენა უნდა მისცეს მომხმარებლებს იმის გადაწყვეტისას, თუ რომელი მიდგომა გამოიყენონ bitsandbytes-ისა და GPTQ საბაზო მოდელებზე ადაპტერების დახვეწისას.
ჩვენ გამოვიყენებთ შემდეგ კონფიგურაციას:
ეს ბენჩმარკი ზომავს მხოლოდ „prefill“ ნაბიჯს, რომელიც შეესაბამება „forward pass“-ს ვარჯიშის დროს. ის გაშვებული იყო ერთ NVIDIA A100-SXM4-80GB GPU-ზე, 512-ის მოთხოვნის სიგრძით (prompt length). გამოყენებული მოდელი იყო `meta-llama/Llama-2-13b-hf`.
`batch size = 1`-ით:
`batch size = 16`-ით:
ბენჩმარკიდან ვხედავთ, რომ bitsandbytes და GPTQ ექვივალენტურია, GPTQ კი ოდნავ უფრო სწრაფია დიდი „batch size“-ის დროს. მეტი დეტალისთვის იხილეთ ეს ბმული.
თეგები:
#ai
#ხელოვნური ინტელექტი
#მანქანური სწავლება
#ტრანსფორმერები
#pytorch
#კვანტიზაცია
#წარმადობა
#მოდელები
#bitsandbytes
#gptq
წყარო: huggingface.co
AI-ით გადამუშავებული