რა მოხდება, თუკი შევძლებდით უახლესი ღია კოდის დიდი ენობრივი მოდელების (LLM) გაშვებას ჩვეულებრივ პერსონალურ კომპიუტერზე? განა არ ვისარგებლებდით უპირატესობებით, როგორიცაა: ეს ყველაფერი მართლაც ძალიან ამაღელვებლად ჟღერს. მაშ, რატომ არ ვაკეთებთ ამას უკვე? დავუბრუნდეთ ჩვენს საწყის განცხადებას: თქვენს ტიპურ, გონივრულ ფასიან ლეპტოპს არ აქვს საკმარისი გამოთვლითი სიმძლავრე, რომ LLM-ები მისაღები შესრულებით გაუშვას. მას არ აქვს მრავალათასიანი ბირთვიანი GPU და არც ელვისებურად სწრაფი მაღალი მეხსიერების გამტარობა (High Memory Bandwidth). მაშ, განწირული საქმეა? რა თქმა უნდა, არა. არაფერია ისეთი, რასაც ადამიანის გონება ვერ გახდის უფრო პატარას, სწრაფს, ელეგანტურს და ეკონომიურს. ბოლო თვეების განმავლობაში, ხელოვნური ინტელექტის საზოგადოება ბევრს მუშაობდა მოდელების შესამცირებლად, მათი პროგნოზირებადი ხარისხის შეწირვის გარეშე. განსაკუთრებით საინტერესოა სამი მიმართულება: აპარატურის აჩქარება: თანამედროვე CPU არქიტექტურები მოიცავს აპარატურას, რომელიც განკუთვნილია ღრმა სწავლის ყველაზე გავრცელებული ოპერატორების (როგორიცაა მატრიცის გამრავლება ან კონვოლუცია) დასაჩქარებლად, რაც შესაძლებელს ხდის ახალი გენერაციული ხელოვნური ინტელექტის აპლიკაციების გამოყენებას AI კომპიუტერებზე და მნიშვნელოვნად აუმჯობესებს მათ სიჩქარესა და ეფექტურობას. მცირე ენობრივი მოდელები (SLM): ინოვაციური არქიტექტურებისა და წვრთნის ტექნიკის წყალობით, ეს მოდელები დიდ მოდელებს არ ჩამოუვარდებიან ან მათზე უკეთესებიც კი არიან. რადგან მათ ნაკლები პარამეტრი აქვთ, დასკვნის (inference) მისაღებად ნაკლები გამოთვლა და მეხსიერებაა საჭირო, რაც მათ შესანიშნავ კანდიდატებად აქცევს რესურსებით შეზღუდული გარემოსთვის. კვანტიზაცია: კვანტიზაცია არის პროცესი, რომელიც ამცირებს მეხსიერების და გამოთვლით მოთხოვნებს მოდელის წონებისა და აქტივაციების ბიტის სიგანის შემცირებით, მაგალითად, 16-ბიტიანი მცურავწერტილიანი (fp16) რიცხვიდან 8-ბიტიან მთელ რიცხვებამდე (int8). ბიტების რაოდენობის შემცირება ნიშნავს, რომ მიღებულ მოდელს ნაკლები მეხსიერება სჭირდება დასკვნის მიღებისას (inference time), რაც აჩქარებს შეფერხებას მეხსიერებით შეზღუდული ნაბიჯებისთვის, როგორიცაა დეკოდირების ფაზა ტექსტის გენერირებისას. გარდა ამისა, ოპერაციები, როგორიცაა მატრიცის გამრავლება, უფრო სწრაფად სრულდება მთელი რიცხვების არითმეტიკის წყალობით, როდესაც ხდება როგორც წონების, ასევე აქტივაციების კვანტიზაცია. ამ პოსტში ჩვენ გამოვიყენებთ ყოველივე ზემოთქმულს. Microsoft Phi-2 მოდელიდან დაწყებული, ჩვენ გამოვიყენებთ 4-ბიტიან კვანტიზაციას მოდელის წონებზე, Intel OpenVINO-ს ინტეგრაციის წყალობით ჩვენს Optimum Intel ბიბლიოთეკაში. შემდეგ, ჩვენ გავუშვებთ დასკვნას (inference) საშუალო დონის ლეპტოპზე, რომელიც აღჭურვილია Intel Meteor Lake CPU-თი. შენიშვნა: თუ დაინტერესებული ხართ კვანტიზაციის გამოყენებით როგორც წონებზე, ასევე აქტივაციებზე, შეგიძლიათ მეტი ინფორმაცია იპოვოთ ჩვენს დოკუმენტაციაში. შევუდგეთ საქმეს. 2023 წლის დეკემბერში გამოშვებული Intel Meteor Lake, რომელსაც ახლა Core Ultra ეწოდება, არის ახალი არქიტექტურა, ოპტიმიზებული მაღალი წარმადობის ლეპტოპებისთვის. ეს არის პირველი Intel-ის კლიენტის პროცესორი, რომელიც იყენებს ჩიპლეტის არქიტექტურას. Meteor Lake მოიცავს: ენერგოეფექტურ CPU-ს 16 ბირთვამდე, ინტეგრირებულ GPU-ს (iGPU) 8 Xe ბირთვამდე, რომელთაგან თითოეულს აქვს 16 Xe ვექტორული ძრავა (XVE). როგორც სახელი გულისხმობს, XVE-ს შეუძლია ვექტორული ოპერაციების შესრულება 256-ბიტიან ვექტორებზე. ის ასევე ახორციელებს DP4a ინსტრუქციას, რომელიც ითვლის წერტილოვან ნამრავლს 4-ბაიტიანი მნიშვნელობების ორ ვექტორს შორის, ინახავს შედეგს 32-ბიტიან მთელ რიცხვში და ამატებს მას მესამე 32-ბიტიან მთელ რიცხვს. ნერვული დამუშავების ერთეული (NPU), რაც სიახლეა Intel-ის არქიტექტურებისთვის. NPU არის სპეციალიზებული ხელოვნური ინტელექტის ძრავა, შექმნილი ეფექტური კლიენტური ხელოვნური ინტელექტისთვის. ის ოპტიმიზირებულია რთული AI გამოთვლების ეფექტურად დასამუშავებლად, რაც ათავისუფლებს მთავარ CPU-ს და გრაფიკულ პროცესორს სხვა ამოცანებისთვის. AI ამოცანებისთვის CPU-ს ან iGPU-ს გამოყენებასთან შედარებით, NPU უფრო ენერგოეფექტურია. ქვემოთ მოცემული დემოს გასაშვებად, ჩვენ ავირჩიეთ საშუალო დონის ლეპტოპი, რომელიც აღჭურვილია Core Ultra 7 155H CPU-თი. ახლა, ავარჩიოთ მშვენიერი მცირე ენობრივი მოდელი ამ ლეპტოპზე გასაშვებად. შენიშვნა: ამ კოდის Linux-ზე გასაშვებად, დააინსტალირეთ თქვენი GPU დრაივერი ამ ინსტრუქციების მიხედვით. 2023 წლის დეკემბერში გამოშვებული Phi-2 არის 2.7 მილიარდი პარამეტრის მოდელი, რომელიც გაწვრთნილია ტექსტის გენერირებისთვის. მოხსენებულ ბენჩმარკებზე, მისი მცირე ზომის მიუხედავად, Phi-2 აჭარბებს ზოგიერთ საუკეთესო 7-მილიარდ და 13-მილიარდ LLM-ს და დიდ Llama-2 70B მოდელთანაც კი ახლოს დგას. ეს მას საინტერესო კანდიდატად აქცევს ლეპტოპზე დასკვნის მისაღებად. ცნობისმოყვარე მკითხველებს ასევე შეუძლიათ ექსპერიმენტები ჩაატარონ 1.1-მილიარდიან TinyLlama მოდელთან. ახლა ვნახოთ, როგორ შეგვიძლია მოდელის შემცირება, რომ ის უფრო პატარა და სწრაფი გავხადოთ. Intel OpenVINO არის ღია კოდის ინსტრუმენტთა ნაკრები ხელოვნური ინტელექტის დასკვნის (AI inference) ოპტიმიზაციისთვის მრავალ Intel აპარატურულ პლატფორმაზე (Github, დოკუმენტაცია), განსაკუთრებით მოდელის კვანტიზაციის მეშვეობით. Intel-თან პარტნიორობით, ჩვენ OpenVINO ინტეგრირებული გვაქვს Optimum Intel-ში, ჩვენს ღია კოდის ბიბლიოთეკაში, რომელიც განკუთვნილია Hugging Face-ის მოდელების დასაჩქარებლად Intel-ის პლატფორმებზე (Github, დოკუმენტაცია). პირველ რიგში დარწმუნდით, რომ დაინსტალირებული გაქვთ optimum-intel-ის უახლესი ვერსია ყველა საჭირო ბიბლიოთეკით: ეს ინტეგრაცია აადვილებს Phi-2-ის 4-ბიტიან კვანტიზაციას. ჩვენ განვსაზღვრავთ კვანტიზაციის კონფიგურაციას, ვაყენებთ ოპტიმიზაციის პარამეტრებს და ვტვირთავთ მოდელს ჰაბიდან. მისი კვანტიზაციისა და ოპტიმიზაციის შემდეგ, მას ლოკალურად ვინახავთ. ratio პარამეტრი აკონტროლებს წონების იმ ნაწილს, რომელსაც 4-ბიტიანად დავკვანტიზებთ (აქ, 80%), ხოლო დანარჩენს 8-ბიტიანად. group_size პარამეტრი განსაზღვრავს წონის კვანტიზაციის ჯგუფების ზომას (აქ, 128), სადაც თითოეულ ჯგუფს აქვს თავისი სკალირების ფაქტორი. ამ ორი მნიშვნელობის შემცირება, როგორც წესი...