AI მოდელების ლოკალური გაშვება: ოპტიმიზაცია Optimum Intel-ით და OpenVINO-თი
AI მოდელების საკუთარ მოწყობილობაზე გაშვება უზრუნველყოფს გაუმჯობესებულ კონფიდენციალურობას, სიჩქარესა და სანდოობას. ეს ბლოგპოსტი აღწერს, თუ როგორ შეიძლება მცირე, ეფექტური მოდელების, როგორიცაა SmolVLM, ოპტიმიზაცია და ლოკალურად გაშვება Optimum Intel-ისა და OpenVINO-ს ინსტრუმენტების გამოყენებით, ძვირადღირებული აპარატურის გარეშე. განხილულია კვანტიზაციის მეთოდები (მხოლოდ წონების კვანტიზაცია და სტატიკური კვანტიზაცია) მეხსიერების მოხმარების შემცირებისა და ინფერენციის დაჩქარების მიზნით. ბენჩმარკები აჩვენე
მიუხედავად იმისა, რომ AI მოდელების საკუთარ მოწყობილობაზე გაშვება შეიძლება რთული იყოს, რადგან ეს მოდელები ხშირად გამოთვლითი თვალსაზრისით მომთხოვნია, მას ასევე აქვს მნიშვნელოვანი უპირატესობები: მათ შორის გაუმჯობესებული კონფიდენციალურობა, რადგან თქვენი მონაცემები რჩება თქვენს მანქანაზე, და გაძლიერებული სიჩქარე და სანდოობა, რადგან არ ხართ დამოკიდებული ინტერნეტ კავშირზე ან გარე სერვერებზე. სწორედ აქ შემოდის ისეთი ინსტრუმენტები, როგორიცაა Optimum Intel და OpenVINO, მცირე, ეფექტურ მოდელთან, SmolVLM-თან ერთად. ამ ბლოგპოსტში ჩვენ გაგაცნობთ სამ მარტივ ნაბიჯს, თუ როგორ უნდა გაუშვათ VLM ლოკალურად, ძვირადღირებული აპარატურის ან GPU-ების საჭიროების გარეშე (თუმცა ამ ბლოგპოსტის ყველა კოდის ნიმუშის გაშვება შესაძლებელია Intel GPU-ებზე).
მცირე მოდელები, როგორიცაა SmolVLM, შექმნილია დაბალ რესურსებს მოხმარებისთვის, მაგრამ მათი შემდგომი ოპტიმიზაცია მაინც შესაძლებელია. ამ ბლოგპოსტში ჩვენ განვიხილავთ, თუ როგორ უნდა მოახდინოთ თქვენი მოდელის ოპტიმიზაცია, მეხსიერების მოხმარების შესამცირებლად და ინფერენციის დასაჩქარებლად, რაც მას უფრო ეფექტურს გახდის შეზღუდული რესურსების მქონე მოწყობილობებზე განთავსებისთვის. ამ ტუტორიალის გასავლელად, თქვენ უნდა დააინსტალიროთ optimum და openvino, რაც შეგიძლიათ გააკეთოთ შემდეგნაირად:
პირველ რიგში, თქვენ დაგჭირდებათ თქვენი მოდელის OpenVINO IR-ად გადაკეთება. ამის გაკეთების მრავალი ვარიანტი არსებობს:
ახლა დროა მოახდინოთ თქვენი მოდელის ოპტიმიზაცია. კვანტიზაცია ამცირებს მოდელის წონების და/ან აქტივაციების სიზუსტეს, რაც იწვევს უფრო მცირე, სწრაფ მოდელებს. არსებითად, ეს არის მაღალი სიზუსტის მონაცემთა ტიპის, როგორიცაა 32-ბიტიანი მცურავ წერტილოვანი რიცხვები (FP32), დაბალი სიზუსტის ფორმატში, როგორც წესი, 8-ბიტიან მთელ რიცხვებში (INT8), მნიშვნელობების ასახვის საშუალება. მიუხედავად იმისა, რომ ეს პროცესი გვთავაზობს რამდენიმე ძირითად უპირატესობას, მას ასევე შეუძლია გავლენა იქონიოს სიზუსტის პოტენციურ დაკარგვაზე.
Optimum მხარს უჭერს ტრენინგის შემდგომი კვანტიზაციის ორ ძირითად მეთოდს: მოდით განვიხილოთ თითოეული მათგანი. მხოლოდ წონების კვანტიზაცია (Weight-only quantization) ნიშნავს, რომ მხოლოდ წონებია კვანტიზირებული, მაგრამ აქტივაციები რჩება თავდაპირველ სიზუსტეში. შედეგად, მოდელი ხდება უფრო მცირე და მეხსიერების თვალსაზრისით ეფექტური, რაც აუმჯობესებს ჩატვირთვის დროებს. მაგრამ რადგან აქტივაციები არ არის კვანტიზირებული, ინფერენციის სიჩქარის ზრდა შეზღუდულია. მხოლოდ წონების კვანტიზაცია არის მარტივი პირველი ნაბიჯი, რადგან ის, როგორც წესი, არ იწვევს სიზუსტის მნიშვნელოვან გაუარესებას. OpenVINO 2024.3-დან, თუ მოდელის წონები კვანტიზირებულია, შესაბამისი აქტივაციებიც კვანტიზირდება გაშვების დროს, რაც იწვევს დამატებით აჩქარებას მოწყობილობის მიხედვით. მის გასაშვებად დაგჭირდებათ კვანტიზაციის კონფიგურაცია OVWeightQuantizationConfig-ის შექმნა შემდეგნაირად: ან ეკვივალენტურად CLI-ის გამოყენებით:
სტატიკური კვანტიზაციის (Static Quantization) შემთხვევაში, როგორც წონები, ასევე აქტივაციები კვანტიზირდება ინფერენციამდე. აქტივაციის კვანტიზაციის პარამეტრებისთვის საუკეთესო შეფასების მისაღწევად, ჩვენ ვასრულებთ კალიბრაციის ნაბიჯს. ამ ნაბიჯის განმავლობაში, მცირე წარმომადგენლობითი მონაცემთა ნაკრები მოდელში იკვებება. ჩვენს შემთხვევაში, ჩვენ გამოვიყენებთ კონტექსტუალური მონაცემთა ნაკრების 50 ნიმუშს და სტატიკურ კვანტიზაციას გამოვიყენებთ ვიზუალურ ენკოდერზე, ხოლო მხოლოდ წონების კვანტიზაცია გამოყენებული იქნება მოდელის დანარჩენ ნაწილზე. ექსპერიმენტები აჩვენებს, რომ სტატიკური კვანტიზაციის გამოყენება ვიზუალურ ენკოდერზე უზრუნველყოფს შესამჩნევ წარმადობის გაუმჯობესებას სიზუსტის მნიშვნელოვანი გაუარესების გარეშე. რადგან ვიზუალური ენკოდერი გენერაციისას მხოლოდ ერთხელ გამოიძახება, ამ კომპონენტზე სტატიკური კვანტიზაციის გამოყენებით მიღებული საერთო წარმადობის ზრდა უფრო დაბალია, ვიდრე უფრო ხშირად გამოყენებული კომპონენტების, როგორიცაა ენის მოდელი, ოპტიმიზაციით მიღებული ზრდა. მიუხედავად ამისა, ეს მიდგომა შეიძლება სასარგებლო იყოს გარკვეულ სცენარებში. მაგალითად, როდესაც საჭიროა მოკლე პასუხები, განსაკუთრებით მრავალი სურათის შეყვანისას. აქტივაციების კვანტიზაცია მცირე შეცდომებს ამატებს, რამაც შეიძლება დააგროვოს და იმოქმედოს სიზუსტეზე, ამიტომ შემდგომი ფრთხილი ტესტირება მნიშვნელოვანია. მეტი ინფორმაცია და მაგალითები შეგიძლიათ იხილოთ ჩვენს დოკუმენტაციაში. ახლა შეგიძლიათ გაუშვათ ინფერენცია თქვენი კვანტიზირებული მოდელით:
თუ გაქვთ უახლესი Intel ლეპტოპი, Intel AI PC, ან Intel დისკრეტული GPU, შეგიძლიათ ჩატვირთოთ მოდელი GPU-ზე device="gpu" პარამეტრის დამატებით მოდელის ჩატვირთვისას:
ჩვენ ასევე შევქმენით სივრცე, სადაც შეგიძლიათ ითამაშოთ ორიგინალ მოდელთან და მის კვანტიზირებულ ვარიანტებთან, რომლებიც მიღებულია შესაბამისად მხოლოდ წონების კვანტიზაციისა და შერეული კვანტიზაციის გამოყენებით. ეს დემო მუშაობს მე-4 თაობის Intel Xeon (Sapphire Rapids) პროცესორებზე.
ჩვენი შედეგების რეპროდუცირებისთვის, იხილეთ ჩვენი ნოუთბუქი. ჩვენ ჩავატარეთ ბენჩმარკი PyTorch-ის, OpenVINO-ს და OpenVINO 8-ბიტიანი WOQ ვერსიების ორიგინალი მოდელის წარმადობის შესადარებლად. მიზანი იყო მხოლოდ წონების კვანტიზაციის გავლენის შეფასება ლატენტურობასა და გამტარუნარიანობაზე Intel CPU აპარატურაზე. ამ ტესტისთვის, ჩვენ გამოვიყენეთ ერთი სურათი შეყვანად. მოდელის წარმადობის შესაფასებლად გავზომეთ შემდეგი მეტრიკები: აი შედეგები Intel CPU-ზე: ეს ბენჩმარკი აჩვენებს, თუ როგორ მუშაობს მცირე, ოპტიმიზირებული მულტიმოდალური მოდელები, როგორიცაა SmolVLM2-256M, Intel CPU-ებზე სხვადასხვა კონფიგურაციით. ტესტების მიხედვით, PyTorch ვერსია აჩვენებს მაღალ ლატენტურობას, პირველი ტოკენის დრო (TTFT) 5 წამზე მეტია, დეკოდირების გამტარუნარიანობით 0.7 ტოკენი/წამში. მოდელის უბრალოდ Optimum-ით გადაკეთება და OpenVINO-ზე გაშვება მკვეთრად ამცირებს პირველი ტოკენის დროს (TTFT) 0.42 წამამდე (x12 აჩქარება) და ზრდის გამტარუნარიანობას 47 ტოკენამდე/წამში (x65). 8-ბიტიანი მხოლოდ წონების კვანტიზაციის გამოყენება კიდევ უფრო აუმჯობესებს წარმადობას.
თეგები:
#ai
#მანქანური სწავლება
#ოპტიმიზაცია
#vlm
#კონფიდენციალურობა
#კვანტიზაცია
#intel
#openvino
#smolvlm
#ლოკალური გაშვება
წყარო: huggingface.co
AI-ით გადამუშავებული