SetFit აღწევს მაღალ სიზუსტეს მცირე მარკირებული მონაცემებით – მაგალითად, SetFit აჭარბებს GPT-3.5-ს 3-shot prompting-ისას, ხოლო 5-shot რეჟიმში ის ასევე აჭარბებს 3-shot GPT-4-ს Banking 77 ფინანსური განზრახვის მონაცემთა ნაკრებზე. LLM-ზე დაფუძნებულ მეთოდებთან შედარებით, SetFit-ს ორი უნიკალური უპირატესობა აქვს: 🗣 **არ არის საჭირო პრომპტები ან ვერბალიზატორები:** LLM-ებთან in-context სწავლის few-shot მიდგომა მოითხოვს ხელით შექმნილ პრომპტებს, რაც შედეგებს მყიფეს, ფრაზირების მიმართ მგრძნობიარეს და მომხმარებლის გამოცდილებაზე დამოკიდებულს ხდის. SetFit საერთოდ გამორიცხავს პრომპტებს მდიდარი ემბედინგების გენერირებით პირდაპირ მცირე რაოდენობის მარკირებული ტექსტური მაგალითებიდან. 🏎 **სწრაფია საწვრთნელად:** SetFit არ ეყრდნობა LLM-ებს, როგორიცაა GPT-3.5 ან Llama2, მაღალი სიზუსტის მისაღწევად. შედეგად, ის, როგორც წესი, სიდიდის რიგით (ან მეტად) უფრო სწრაფია საწვრთნელად და ინფერენციის გასაშვებად. SetFit-ის შესახებ მეტი დეტალებისთვის იხილეთ ჩვენი ნაშრომი, ბლოგი, კოდი და მონაცემები. SetFit ფართოდ არის მიღებული AI დეველოპერების საზოგადოების მიერ, თვეში ~100 ათასი ჩამოტვირთვით და დაახლოებით 1500 SetFit მოდელით Hub-ზე, და მათი რიცხვი ყოველდღიურად საშუალოდ ~4 მოდელით იზრდება! ამ ბლოგპოსტში ჩვენ აგიხსნით, თუ როგორ შეგიძლიათ დააჩქაროთ SetFit-ის ინფერენცია 7.8-ჯერ Intel CPU-ებზე, თქვენი SetFit მოდელის 🤗 Optimum Intel-ით ოპტიმიზაციით. ჩვენ გაჩვენებთ, თუ როგორ შეგიძლიათ მიაღწიოთ გამტარუნარიანობის უზარმაზარ ზრდას თქვენს მოდელზე მარტივი პოსტ-ტრენინგული კვანტიზაციის ნაბიჯის შესრულებით. ამან შეიძლება უზრუნველყოს SetFit გადაწყვეტილებების საწარმოო დონის დანერგვა Intel Xeon CPU-ების გამოყენებით. Optimum Intel არის ღია კოდის ბიბლიოთეკა, რომელიც აჩქარებს Hugging Face-ის ბიბლიოთეკებით აგებულ end-to-end კონვეიერებს Intel-ის აპარატურაზე. Optimum Intel მოიცავს რამდენიმე ტექნიკას მოდელების დასაჩქარებლად, როგორიცაა დაბალბიტიანი კვანტიზაცია (low-bit quantization), მოდელის წონის შემცირება (model weight pruning), დისტილაცია და დაჩქარებული runtime. Optimum Intel-ში შემავალი runtime და ოპტიმიზაციები იყენებენ Intel® Advanced Vector Extensions 512 (Intel® AVX-512), ვექტორული ნერვული ქსელის ინსტრუქციებს (VNNI) და Intel® Advanced Matrix Extensions (Intel® AMX) Intel CPU-ებზე მოდელების დასაჩქარებლად. კონკრეტულად, მას აქვს ჩაშენებული BFloat16 (bf16) და int8 GEMM ამაჩქარებლები თითოეულ ბირთვში ღრმა სწავლის ტრენინგისა და ინფერენციის დატვირთვების დასაჩქარებლად. AMX-ით დაჩქარებული ინფერენცია წარმოდგენილია PyTorch 2.0-ში და Intel Extension for PyTorch (IPEX)-ში, სხვადასხვა საერთო ოპერატორებისთვის სხვა ოპტიმიზაციებთან ერთად. წინასწარ გაწვრთნილი მოდელების ოპტიმიზაცია მარტივად შეიძლება Optimum Intel-ით; მრავალი მარტივი მაგალითის მოძიება შესაძლებელია აქ. ჩვენს ბლოგს თან ერთვის ნოუთბუქი ნაბიჯ-ნაბიჯ მიმოხილვისთვის. ჩვენი SetFit მოდელის ოპტიმიზაციის მიზნით, მოდელის სხეულზე კვანტიზაციას გამოვიყენებთ Intel Neural Compressor (INC)-ის გამოყენებით, რომელიც Optimum Intel-ის ნაწილია. კვანტიზაცია არის ღრმა სწავლის მოდელის ოპტიმიზაციის ძალიან პოპულარული ტექნიკა ინფერენციის სიჩქარის გასაუმჯობესებლად. ის მინიმუმამდე ამცირებს ბიტების რაოდენობას, რომელიც საჭიროა ნეირონულ ქსელში წონების და/ან აქტივაციების წარმოსადგენად. ეს ხდება მაღალი სიზუსტის რიცხვების ნაკრების გადაქცევით დაბალბიტიან მონაცემთა წარმოდგენად, როგორიცაა INT8. უფრო მეტიც, კვანტიზაციას შეუძლია უზრუნველყოს უფრო სწრაფი გამოთვლები დაბალი სიზუსტით. კონკრეტულად, ჩვენ გამოვიყენებთ პოსტ-ტრენინგულ სტატიკურ კვანტიზაციას (PTQ). PTQ-ს შეუძლია შეამციროს მეხსიერების ნაკვალევი და ლატენტობა ინფერენციისთვის, მოდელის სიზუსტის შენარჩუნებით, მხოლოდ მცირე, არამარკირებული კალიბრაციის ნაკრებით და ყოველგვარი ტრენინგის გარეშე. სანამ დაიწყებთ, დარწმუნდით, რომ დაინსტალირებული გაქვთ ყველა საჭირო ბიბლიოთეკა და რომ Optimum Intel-ის თქვენი ვერსია არის მინიმუმ 1.14.0, რადგან ფუნქციონალი ამ ვერსიაში იქნა შემოღებული. კალიბრაციის მონაცემთა ნაკრებმა უნდა შეძლოს უხილავი მონაცემების განაწილების წარმოდგენა. ზოგადად, 100 ნიმუშის მომზადება საკმარისია კალიბრაციისთვის. ჩვენს შემთხვევაში გამოვიყენებთ rotten_tomatoes მონაცემთა ნაკრებს, რადგან ის კინორეცენზიებისგან შედგება, ჩვენი სამიზნე მონაცემთა ნაკრების, sst2-ის მსგავსად. ჯერ ამ მონაცემთა ნაკრებიდან 100 შემთხვევით ნიმუშს ჩავტვირთავთ. შემდეგ, კვანტიზაციისთვის მონაცემთა ნაკრების მოსამზადებლად, საჭირო იქნება თითოეული მაგალითის ტოკენიზაცია. ჩვენ არ დაგვჭირდება „text“ და „label“ სვეტები, ამიტომ ამოვიღოთ ისინი. სანამ კვანტიზაციას გავუშვებთ, უნდა განვსაზღვროთ სასურველი კვანტიზაციის პროცესი – ჩვენს შემთხვევაში – სტატიკური პოსტ-ტრენინგული კვანტიზაცია, და გამოვიყენოთ optimum.intel კვანტიზაციის გასაშვებად ჩვენს კალიბრაციის მონაცემთა ნაკრებზე: სულ ესაა! ახლა გვაქვს ჩვენი კვანტიზებული SetFit მოდელის ლოკალური ასლი. მოდით, გამოვცადოთ იგი. ჩვენს ნოუთბუქში, ჩვენ შევქმენით PerformanceBenchmark კლასი მოდელის ლატენტურობისა და გამტარუნარიანობის, ასევე სიზუსტის საზომის გამოსათვლელად. მოდით, გამოვიყენოთ იგი ჩვენი Optimum Intel მოდელის შესადარებლად ორ სხვა ხშირად გამოყენებულ მეთოდთან: ჩავტვირთოთ ჩვენი სატესტო მონაცემთა ნაკრები, sst2, და გავუშვათ ბენჩმარკი PyTorch-ისა და 🤗 Transformers ბიბლიოთეკის გამოყენებით: მეორე ბენჩმარკისთვის, ჩვენ გამოვიყენებთ Intel Extension for PyTorch (IPEX)-ს bf16 სიზუსტით და TorchScript tracing-ით. IPEX-ის გამოსაყენებლად, ჩვენ უბრალოდ იმპორტირება გავუკეთებთ IPEX ბიბლიოთეკას და გამოვიყენებთ ipex.optimize() სამიზნე მოდელზე, რომელიც ჩვენს შემთხვევაში არის SetFit (ტრანსფორმატორი) მოდელის სხეული: TorchScript tracing-ისთვის, ჩვენ წარმოქმნით შემთხვევით თანმიმდევრობას მოდელის მაქსიმალური შეყვანის სიგრძის საფუძველზე, ტოკენებით, რომლებიც შერჩეულია ტოკენიზატორის ლექსიკონიდან: ახლა გავუშვათ ბენჩმარკი ჩვენი კვანტიზებული Optimum მოდელის გამოყენებით. ჩვენ ჯერ დაგვჭირდება...