Intel-ი და Hugging Face-ი Optimum Intel-ში OpenVINO-ს ინტეგრაციას აცხადებენ ტრანსფორმერული მოდელების დასაჩქარებლად
Intel-მა და Hugging Face-მა OpenVINO ინტეგრირეს Optimum Intel-ში, რაც დეველოპერებს საშუალებას აძლევს, მარტივად დააჩქარონ ტრანსფორმერული მოდელები Intel-ის სხვადასხვა პროცესორზე. ეს ინტეგრაცია უზრუნველყოფს ეფექტურ ინფერენსსა და კვანტიზაციას OpenVINO ნერვული ქსელების შეკუმშვის ფრეიმვორკის (NNCF) გამოყენებით, მნიშვნელოვნად ამცირებს მოდელის ზომასა და შეყოვნებას სიზუსტის მინიმალური დაკარგვით.
გასულ ივლისს, ჩვენ გამოვაცხადეთ, რომ Intel-ი და Hugging Face-ი ითანამშრომლებდნენ ტრანსფორმერული მოდელებისთვის უახლესი, მაგრამ მარტივი აპარატურული აჩქარების ხელსაწყოების შესაქმნელად.
დღეს, მოხარული ვართ გაცნობოთ, რომ Intel OpenVINO დაემატა Optimum Intel-ს. ახლა უკვე მარტივად შეგიძლიათ ინფერენსის შესრულება OpenVINO Runtime-ით Intel-ის სხვადასხვა პროცესორზე (იხილეთ მხარდაჭერილი მოწყობილობების სრული სია) Transformer-ის მოდელების გამოყენებით, რომლებიც შეიძლება განთავსდეს Hugging Face hub-ზე ან ლოკალურად. ასევე შეგიძლიათ თქვენი მოდელის კვანტიზაცია OpenVINO ნერვული ქსელების შეკუმშვის ფრეიმვორკის (NNCF) გამოყენებით, რაც მის ზომასა და პროგნოზირების შეყოვნებას წუთებში შეამცირებს.
ეს პირველი გამოშვება ეფუძნება OpenVINO 2022.2-ს და იძლევა PyTorch-ის მრავალი მოდელის ინფერენსის საშუალებას ჩვენი OVModels-ის გამოყენებით. ვარჯიშის შემდგომი სტატიკური კვანტიზაცია და კვანტიზაცია-აღქმადი ვარჯიში შეიძლება გამოყენებულ იქნას ბევრ ენკოდერულ მოდელზე (BERT, DistilBERT და ა.შ.). მომავალ OpenVINO გამოშვებებში უფრო მეტი ენკოდერული მოდელი იქნება მხარდაჭერილი. ამჟამად ენკოდერ-დეკოდერული მოდელების კვანტიზაცია არ არის ჩართული, თუმცა ეს შეზღუდვა მოიხსნება OpenVINO-ს მომდევნო გამოშვების ინტეგრაციასთან ერთად. მოდით, გაჩვენებთ, როგორ დაიწყოთ მუშაობა წუთებში!
ამ მაგალითში, ჩვენ განვახორციელებთ ვარჯიშის შემდგომ სტატიკურ კვანტიზაციას Vision Transformer (ViT) მოდელზე, რომელიც დატუნინგებულია გამოსახულების კლასიფიკაციისთვის food101 მონაცემთა ნაკრებზე. კვანტიზაცია არის პროცესი, რომელიც ამცირებს მეხსიერების და გამოთვლით მოთხოვნებს მოდელის პარამეტრების ბიტის სიგანის შემცირებით. ბიტების რაოდენობის შემცირება ნიშნავს, რომ მიღებული მოდელი საჭიროებს ნაკლებ მეხსიერებას ინფერენსის დროს და რომ ოპერაციები, როგორიცაა მატრიცის გამრავლება, შეიძლება შესრულდეს უფრო სწრაფად მთელი რიცხვების არითმეტიკის წყალობით. პირველ რიგში, შევქმნათ ვირტუალური გარემო და დავაყენოთ ყველა დამოკიდებულება. შემდეგ, Python გარემოში გადასვლით, ჩვენ შემოვიტანთ შესაბამის მოდულებს და გადმოვწერთ ორიგინალურ მოდელს, ისევე როგორც მის პროცესორს.
ვარჯიშის შემდგომი სტატიკური კვანტიზაცია მოითხოვს კალიბრაციის ნაბიჯს, სადაც მონაცემები გადადის ქსელში კვანტიზირებული აქტივაციის პარამეტრების გამოსათვლელად. აქ, ჩვენ ვიღებთ 300 ნიმუშს ორიგინალური მონაცემთა ნაკრებიდან, რათა ავაშენოთ კალიბრაციის მონაცემთა ნაკრები. როგორც გამოსახულების მონაცემთა ნაკრებების შემთხვევაშია ხოლმე, ჩვენ უნდა გამოვიყენოთ იგივე გამოსახულების ტრანსფორმაციები, რომლებიც გამოიყენებოდა ვარჯიშის დროს. ჩვენ ვიყენებთ პროცესორში განსაზღვრულ წინასწარ დამუშავებას. ჩვენ ასევე განვსაზღვრავთ მონაცემთა კოლაციის ფუნქციას, რათა მოდელს მივაწოდოთ სწორად ფორმატირებული ტენზორების ბატჩები.
ჩვენი პირველი მცდელობისთვის, ჩვენ ვიყენებთ კვანტიზაციის ნაგულისხმევ კონფიგურაციას. ასევე შეგიძლიათ მიუთითოთ ნიმუშების რაოდენობა, რომელიც გამოყენებული იქნება კალიბრაციის ნაბიჯის დროს, რაც ნაგულისხმევად არის 300. ახლა მზად ვართ მოდელის კვანტიზაციისთვის. OVQuantizer.quantize() მეთოდი ახორციელებს მოდელის კვანტიზაციას და მის ექსპორტს OpenVINO ფორმატში. მიღებული გრაფი წარმოდგენილია ორი ფაილით: XML ფაილი, რომელიც აღწერს ქსელის ტოპოლოგიას და ბინარული ფაილი, რომელიც აღწერს წონებს. მიღებული მოდელი შეიძლება გაეშვას ნებისმიერ სამიზნე Intel® მოწყობილობაზე. ერთი ან ორი წუთის შემდეგ, მოდელი კვანტიზირებულია. შემდეგ მარტივად შეგვიძლია მისი ჩატვირთვა ჩვენი OVModelForXxx კლასებით, რაც Transformers-ის AutoModelForXxx კლასების ექვივალენტია, რომლებიც transformers ბიბლიოთეკაშია. ანალოგიურად, შეგვიძლია შევქმნათ კონვეიერები და გავუშვათ ინფერენსი OpenVINO Runtime-ით.
იმის შესამოწმებლად, რომ კვანტიზაციას არ ჰქონია უარყოფითი გავლენა სიზუსტეზე, ჩვენ განვახორციელეთ შეფასების ნაბიჯი ორიგინალური მოდელის სიზუსტის შესადარებლად მის კვანტიზირებულ ეკვივალენტთან. ჩვენ ვაფასებთ ორივე მოდელს მონაცემთა ნაკრების ქვესიმრავლეზე (ვიღებთ მხოლოდ შეფასების მონაცემთა ნაკრების 20%-ს). ჩვენ დავაკვირდით სიზუსტის უმნიშვნელო ან არარსებულ დანაკარგს, ორივე მოდელის სიზუსტე 87.6 იყო. კვანტიზირებული მოდელის დათვალიერებისას ვხედავთ, რომ მისი მეხსიერების ზომა 3.8-ჯერ შემცირდა, 344 მბ-დან 90 მბ-მდე. 5050 გამოსახულების პროგნოზირებაზე სწრაფი ბენჩმარკის გაშვებით, ჩვენ ასევე შევამჩნიეთ შეყოვნების აჩქარება 2.4-ჯერ, 98 ms-დან 41 ms-მდე თითო ნიმუშზე. ეს არც ისე ცუდია რამდენიმე ხაზი კოდისთვის! ⚠️ მნიშვნელოვანია აღინიშნოს, რომ მოდელი კომპილირდება პირველი ინფერენსის წინ, რაც გაზრდის პირველი ინფერენსის შეყოვნებას. ამიტომ, სანამ საკუთარ ბენჩმარკს გააკეთებთ, დარწმუნდით, რომ ჯერ გაათბეთ თქვენი მოდელი მინიმუმ ერთი პროგნოზის გაკეთებით. მიღებული მოდელი შეგიძლიათ იხილოთ Hugging Face hub-ზე. მის ჩასატვირთად, შეგიძლიათ მარტივად გააკეთოთ შემდეგნაირად:
როგორც ხედავთ, საკმაოდ მარტივია თქვენი მოდელების დაჩქარება 🤗 Optimum Intel-ისა და OpenVINO-ს გამოყენებით. თუ გსურთ დაწყება, ეწვიეთ Optimum Intel-ის რეპოზიტორიუმს და არ დაგავიწყდეთ მისი ვარსკვლავით ⭐ მონიშვნა. იქ ასევე იპოვით დამატებით მაგალითებს. თუ გსურთ OpenVINO-ს სიღრმისეულად შესწავლა, Intel-ის დოკუმენტაცია დაგეხმარებათ. სცადეთ და შეგვატყობინოთ თქვენი აზრი. სიამოვნებით მოვისმენთ თქვენს უკუკავშირს Hugging Face-ის ფორუმზე და გთხოვთ, მოითხოვოთ ფუნქციები ან შეატყობინოთ პრობლემების შესახებ GitHub-ზე. გაერთეთ 🤗 Optimum Intel-ით და გმადლობთ წაკითხვისთვის.
თეგები:
#ხელოვნური ინტელექტი
#მანქანური სწავლება
#hugging face
#pytorch
#კვანტიზაცია
#ინფერენსი
#openvino
#optimum intel
#ტრანსფორმერული მოდელები
#აპარატურული აჩქარება
#ინტელი
წყარო: huggingface.co
AI-ით გადამუშავებული
მსგავსი სტატიები
ტექნოლოგია და ხელოვნური ინტელექტი
კონტენტის პოლიტიკის განახლება: ხელოვნური ინტელექტი, თანხმობა და თანამშრომლობა
ტექნოლოგია და ხელოვნური ინტელექტი
MetaAI-ის Wav2Vec2-BERT: გაუმჯობესებული მეტყველების ამოცნობა დაბალრესურსიან ენებზე
ტექნოლოგია და ხელოვნური ინტელექტი