Hugging Face Optimum: ტრანსფორმერების მოდელების ტრენინგისა და ინფერენსის დაჩქარება
BERT-ისა და Transformer-ის მოდელების გამოყენება სულ უფრო იზრდება სხვადასხვა სფეროში, თუმცა ისინი ხშირად ნელი და მოცულობითია. Hugging Face-მა შექმნა Optimum – გაფართოება, რომელიც ამ მოდელების ტრენინგსა და ინფერენსს აჩქარებს. Optimum უზრუნველყოფს ოპტიმიზებულ შესრულებას დაჩქარებულ აპარატურაზე, მათ შორის ONNX Runtime-თან ინტეგრაციით, რაც მომხმარებლებს საშუალებას აძლევს მარტივად გადავიდნენ სტანდარტული Transformers API-დან ოპტიმიზებულ ვერსიაზე, მოდელების კვანტიზაციისა და გრაფის ოპტიმიზაციის ჩათვლით.
BERT-ისა და Transformer-ების მოდელების დანერგვა და გამოყენება კვლავაც იზრდება. Transformer-ზე დაფუძნებული მოდელები ახლა არა მხოლოდ მიაღწევენ უახლეს შესრულებას ბუნებრივი ენის დამუშავებაში (Natural Language Processing), არამედ კომპიუტერულ ხედვაში (Computer Vision), მეტყველებასა (Speech) და დროითი სერიების (Time-Series) ანალიზშიც. 💬 🖼 🎤 ⏳ კომპანიები ექსპერიმენტებისა და კვლევის ფაზიდან საწარმოო ფაზაზე გადადიან, რათა Transformer-ის მოდელები მასშტაბური დატვირთვებისთვის გამოიყენონ. თუმცა, სტანდარტულად, BERT და მისი მსგავსი მოდელები შედარებით ნელი, მოცულობითი და რთულია ტრადიციულ მანქანური სწავლების ალგორითმებთან შედარებით. ამ გამოწვევის გადასაჭრელად, ჩვენ შევქმენით Optimum – Hugging Face Transformers-ის გაფართოება, რომელიც აჩქარებს Transformer-ის მოდელების, მაგალითად BERT-ის, ტრენინგსა და ინფერენსს. ამ ბლოგპოსტში თქვენ გაიგებთ: დავიწყოთ! 🚀
Hugging Face Optimum არის ღია კოდის ბიბლიოთეკა და Hugging Face Transformers-ის გაფართოება, რომელიც უზრუნველყოფს შესრულების ოპტიმიზაციის ხელსაწყოების ერთიან API-ს, რათა მიღწეულ იქნას მაქსიმალური ეფექტურობა მოდელების ტრენინგისა და გაშვებისას დაჩქარებულ აპარატურაზე, მათ შორის Graphcore IPU-სა და Habana Gaudi-ზე ოპტიმიზებული შესრულებისთვის განკუთვნილი ხელსაწყოებით. Optimum შეიძლება გამოყენებულ იქნას დაჩქარებული ტრენინგის, კვანტიზაციის, გრაფის ოპტიმიზაციისთვის და ახლა უკვე ინფერენსისთვისაც Transformer-ის კონვეიერების მხარდაჭერით. Optimum 1.2-ის გამოშვებით, ჩვენ ვამატებთ ინფერენსისა და Transformer-ის კონვეიერების მხარდაჭერას. ეს საშუალებას აძლევს Optimum-ის მომხმარებლებს, გამოიყენონ იგივე API, რომელსაც მიჩვეულნი არიან Transformers-დან, დაჩქარებული გაშვების დროის (runtimes) ძალით, როგორიცაა ONNX Runtime.
**გადასვლა Transformers-დან Optimum Inference-ზე**
Optimum Inference-ის მოდელები API-თავსებადია Hugging Face Transformers-ის მოდელებთან. ეს ნიშნავს, რომ თქვენ შეგიძლიათ უბრალოდ ჩაანაცვლოთ თქვენი AutoModelForXxx კლასი შესაბამისი ORTModelForXxx კლასით Optimum-ში. მაგალითად, ასე შეგიძლიათ გამოიყენოთ კითხვა-პასუხის მოდელი Optimum-ში: პირველ გამოშვებაში ჩვენ დავამატეთ ONNX Runtime-ის მხარდაჭერა, მაგრამ წინ კიდევ ბევრია!
ეს ახალი ORTModelForXX კლასები ახლა უკვე შეიძლება გამოყენებულ იქნას Transformer-ის კონვეიერებთან. ისინი ასევე სრულად ინტეგრირებულია Hugging Face Hub-ში, რათა საზოგადოებიდან ოპტიმიზებული ჩექპოინტების ატვირთვა და გადმოწერა მოხდეს. ამის გარდა, შეგიძლიათ გამოიყენოთ ORTQuantizer და ORTOptimizer თქვენი მოდელის კვანტიზაციისა და ოპტიმიზაციისთვის, შემდეგ კი მასზე ინფერენსის გასაშვებად.
იხილეთ სრული გაკვეთილი RoBERTa-ს დაჩქარების შესახებ კითხვა-პასუხისთვის, კვანტიზაციისა და ოპტიმიზაციის ჩათვლით, დამატებითი დეტალებისთვის. ამ სრულ გაკვეთილში RoBERTa-ს დაჩქარების შესახებ კითხვა-პასუხისთვის, თქვენ გაიგებთ, თუ როგორ: დავიწყოთ 🚀
ეს გაკვეთილი შეიქმნა და გაეშვა m5.xlarge AWS EC2 ინსტანციაზე. ჩვენი პირველი ნაბიჯია Optimum-ის დაყენება onnxruntime უტილიტებით. ეს დააყენებს ყველა საჭირო პაკეტს, მათ შორის transformers-ს, torch-ს და onnxruntime-ს. თუ თქვენ აპირებთ GPU-ს გამოყენებას, შეგიძლიათ დააინსტალიროთ Optimum ბრძანებით pip install optimum[onnxruntime-gpu].
ოპტიმიზაციის დაწყებამდე, ჩვენ უნდა გადავიყვანოთ ჩვენი სტანდარტული Transformer-ის მოდელი ONNX ფორმატში. ამისათვის გამოვიყენებთ ახალ ORTModelForQuestionAnswering კლასს, რომელიც გამოიძახებს from_pretrained() მეთოდს from_transformers ატრიბუტით. მოდელი, რომელსაც ვიყენებთ, არის deepset/roberta-base-squad2 – დახვეწილი RoBERTa მოდელი SQUAD2 მონაცემთა ნაკრებზე, რომელმაც მიაღწია F1 ქულას 82.91 და ფუნქციად (ამოცანად) აქვს კითხვა-პასუხი. ჩვენ წარმატებით გადავიყვანეთ ჩვენი სტანდარტული Transformers მოდელი ONNX-ში და გამოვიყენეთ მოდელი transformers.pipelines-თან ერთად პირველი პროგნოზის გასაშვებად. ახლა მოდით, ოპტიმიზაცია გავუკეთოთ მას. 🏎 თუ გსურთ მეტი გაიგოთ Transformer-ის მოდელის ექსპორტის შესახებ, იხილეთ დოკუმენტაცია: Export 🤗 Transformers Models
მას შემდეგ, რაც ჩვენი ONNX ჩექპოინტი შევინახეთ onnx/ საქაღალდეში, შეგვიძლია გამოვიყენოთ ORTOptimizer გრაფის ოპტიმიზაციისთვის, როგორიცაა ოპერატორების შერწყმა (operator fusion) და მუდმივების გაერთიანება (constant folding), რათა დავაჩქაროთ ლატენტურობა და ინფერენსი. შესრულების შესამოწმებლად, შეგვიძლია კვლავ გამოვიყენოთ ORTModelForQuestionAnswering კლასი და მივუთითოთ დამატებითი file_name პარამეტრი ჩვენი ოპტიმიზებული მოდელის ჩასატვირთად. (ეს ასევე მუშაობს Hub-ზე არსებული მოდელებისთვის). შესრულების ცვლილებებს შევაფასებთ ნაბიჯ 3.6-ში: შესრულებისა და სიჩქარის დეტალური შეფასება. მოდელის ოპტიმიზაციის შემდეგ, შეგვიძლია მისი კიდევ უფრო დაჩქარება ORTQuantizer-ის გამოყენებით კვანტიზაციით.
ORTQuantizer შეიძლება გამოყენებულ იქნას დინამიური კვანტიზაციისთვის, რათა შემცირდეს მოდელის ზომა და დაჩქარდეს ლატენტურობა და ინფერენსი. ჩვენ ვიყენებთ avx512_vnni-ს, რადგან ინსტანცია მუშაობს Intel Cascade Lake CPU-ზე, რომელიც მხარს უჭერს avx512-ს. ახლა შეგვიძლია შევადაროთ მოდელის ზომა, ასევე ლატენტურობის შესრულება. ჩვენი მოდელის ზომა თითქმის 50%-ით შევამცირეთ 473MB-დან 291MB-მდე. ინფერენსის გასაშვებად შეგვიძლია კვლავ გამოვიყენოთ ORTModelForQuestionAnswering კლასი და მივუთითოთ დამატებითი file_name პარამეტრი ჩვენი კვანტიზებული მოდელის ჩასატვირთად. (ეს ასევე მუშაობს Hub-ზე არსებული მოდელებისთვის).
შესანიშნავია! მოდელმა იგივე პასუხი იწინასწარმეტყველა. Optimum-ს აქვს ჩაშენებული მხარდაჭერა Transformer-ის კონვეიერებისთვის. ეს საშუალებას გვაძლევს გამოვიყენოთ იგივე API, რომელიც ვიცით PyTorch-ისა და TensorFlow-ის მოდელების გამოყენებისას. ჩვენ უკვე გამოვიყენეთ ეს ფუნქცია ნაბიჯებში 3.2, 3.3 და 3.4 ჩვენი კონვერტირებული და ოპტიმიზებული მოდელების შესამოწმებლად. ამ სტატიის დაწერის მომენტში, ჩვენ ვუჭერთ მხარს ONNX Runtime-ს.
თეგები:
#ხელოვნური ინტელექტი
#მანქანური სწავლება
#ოპტიმიზაცია
#ღრმა სწავლება
#hugging face
#კვანტიზაცია
#ინფერენსი
#bert
#optimum
#transformer-ის მოდელები
#onnx runtime
წყარო: huggingface.co
AI-ით გადამუშავებული