BERT-ისა და ტრანსფორმერების მიღება და გამოყენება გლობალურად განაგრძობს ზრდას. ტრანსფორმერებზე დაფუძნებული მოდელები დღესდღეობით უმაღლეს შედეგებს აჩვენებენ არა მხოლოდ ბუნებრივი ენის დამუშავებაში (NLP), არამედ კომპიუტერულ ხედვაში, მეტყველების დამუშავებასა და დროითი სერიების ანალიზში. 💬 🖼 🎤 ⏳ კომპანიები ნელ-ნელა გადადიან ექსპერიმენტებისა და კვლევის ფაზიდან წარმოების ფაზაში, რათა ტრანსფორმერული მოდელები მსხვილმასშტაბიანი დატვირთვებისთვის გამოიყენონ. თუმცა, ნაგულისხმევად, BERT და მის მსგავსი მოდელები შედარებით ნელი, დიდი და კომპლექსურია ტრადიციულ მანქანური სწავლების ალგორითმებთან შედარებით. ტრანსფორმერებისა და BERT-ის დაჩქარება საინტერესო გამოწვევა იყო და მომავალშიც ასეთი დარჩება. AWS-ის მიდგომა ამ გამოწვევის გადასაჭრელად იყო საბაჟო მანქანური სწავლების ჩიპის, სახელწოდებით AWS Inferentia-ს, შექმნა, რომელიც ოპტიმიზირებულია ინფერენციის დატვირთვებისთვის. AWS აცხადებს, რომ AWS Inferentia „უზრუნველყოფს 80%-ით დაბალ ღირებულებას თითო ინფერენციაზე და 2.3-ჯერ მეტ გამტარუნარიანობას, ვიდრე შედარებადი მიმდინარე თაობის GPU-ზე დაფუძნებული Amazon EC2 ინსტანციები.“ AWS Inferentia ინსტანციების რეალური ღირებულება GPU-სთან შედარებით მდგომარეობს თითოეულ მოწყობილობაზე არსებულ მრავალ Neuron Core-ში. Neuron Core არის საბაჟო ამაჩქარებელი AWS Inferentia-ს შიგნით. თითოეული Inferentia ჩიპი აღჭურვილია 4x Neuron Core-ით. ეს საშუალებას გაძლევთ, ან ჩატვირთოთ 1 მოდელი თითოეულ ბირთვზე (მაღალი გამტარუნარიანობისთვის), ან 1 მოდელი ყველა ბირთვზე (დაბალი ლატენტურობისთვის). ამ სრულფასოვან გაკვეთილში თქვენ შეისწავლით, თუ როგორ დააჩქაროთ BERT-ის ინფერენცია ტექსტის კლასიფიკაციისთვის Hugging Face Transformers-ის, Amazon SageMaker-ისა და AWS Inferentia-ს გამოყენებით. ნოუთბუქის ნახვა შეგიძლიათ აქ: sagemaker/18_inferentia_inference თქვენ შეისწავლით, თუ როგორ: დავიწყოთ! 🚀 თუ SageMaker-ს გამოიყენებთ ლოკალურ გარემოში (და არა SageMaker Studio-ში ან Notebook Instances-ში), გჭირდებათ წვდომა IAM Role-ზე SageMaker-ისთვის საჭირო ნებართვებით. მეტი ინფორმაციის ნახვა შეგიძლიათ აქ. ჩვენ ვაპირებთ AWS Neuron SDK-ის გამოყენებას AWS Inferentia-სთვის. Neuron SDK მოიცავს ღრმა სწავლების კომპილატორს, runtime-ს და ინსტრუმენტებს PyTorch და TensorFlow მოდელების ნეირონთან თავსებად მოდელებად გადასაყვანად და კომპილაციისთვის, რომლებიც შეიძლება გაშვებული იყოს EC2 Inf1 ინსტანციებზე. პირველ რიგში, საჭიროა Neuron SDK-ისა და საჭირო პაკეტების ინსტალაცია. რჩევა: თუ იყენებთ Amazon SageMaker Notebook Instances-ს ან Studio-ს, შეგიძლიათ გამოიყენოთ conda_python3 conda kernel. Neuron SDK-ის დაინსტალირების შემდეგ, შეგვიძლია ჩავტვირთოთ და გადავაკეთოთ ჩვენი მოდელი. ნეირონული მოდელები კონვერტირდება torch_neuron-ის გამოყენებით მისი trace მეთოდით, torchscript-ის მსგავსად. მეტი ინფორმაციის ნახვა შეგიძლიათ ჩვენს დოკუმენტაციაში. ჩვენი მოდელის კონვერტირებისთვის, პირველ რიგში, უნდა ავირჩიოთ მოდელი, რომლის გამოყენებაც გვსურს ჩვენი ტექსტის კლასიფიკაციისთვის hf.co/models-დან. ამ მაგალითისთვის, ავირჩიოთ distilbert-base-uncased-finetuned-sst-2-english, მაგრამ ეს მარტივად შეიძლება მორგებული იყოს სხვა BERT-ის მსგავს მოდელებზე. ამ სტატიის დაწერის მომენტში, AWS Neuron SDK არ უჭერს მხარს დინამიურ ფორმებს, რაც ნიშნავს, რომ შეყვანის ზომა სტატიკური უნდა იყოს კომპილაციისა და ინფერენციისთვის. მარტივად რომ ვთქვათ, ეს ნიშნავს, რომ როდესაც მოდელი კომპილირებულია, მაგალითად, batch ზომის 1-ისა და თანმიმდევრობის სიგრძის 16-ის შეყვანით, მოდელს შეუძლია ინფერენცია გაუშვას მხოლოდ იმავე ფორმის შეყვანებზე. t2.medium ინსტანციის გამოყენებისას კომპილაციას დაახლოებით 3 წუთი სჭირდება. Hugging Face Inference Toolkit მხარს უჭერს ნულოვანი კოდის განთავსებას 🤗 Transformers-ის pipeline ფუნქციის გარდა. ეს მომხმარებლებს საშუალებას აძლევს, განათავსონ Hugging Face ტრანსფორმერები ინფერენციის სკრიპტის გარეშე [მაგალითი]. ამჟამად, ეს ფუნქცია არ არის მხარდაჭერილი AWS Inferentia-სთან, რაც ნიშნავს, რომ ჩვენ უნდა მივაწოდოთ inference.py სკრიპტი ინფერენციის გასაშვებად. თუ დაინტერესებული იქნებით Inferentia-სთვის ნულოვანი კოდის განთავსების მხარდაჭერით, შეგვატყობინეთ ფორუმზე. ინფერენციის სკრიპტის გამოსაყენებლად, ჩვენ უნდა შევქმნათ inference.py სკრიპტი. ჩვენს მაგალითში, ჩვენ გადავწერთ model_fn-ს ჩვენი ნეირონული მოდელის ჩასატვირთად და predict_fn-ს ტექსტის კლასიფიკაციის pipeline-ის შესაქმნელად. თუ გსურთ მეტი გაიგოთ inference.py სკრიპტის შესახებ, იხილეთ ეს მაგალითი. ის, სხვა საკითხებთან ერთად, განმარტავს, თუ რა არის model_fn და predict_fn. ჩვენ ვიყენებთ NEURON_RT_NUM_CORES=1-ს იმის უზრუნველსაყოფად, რომ თითოეული HTTP worker იყენებს 1 Neuron core-ს გამტარუნარიანობის მაქსიმიზაციისთვის. სანამ ჩვენს ნეირონულ მოდელს Amazon SageMaker-ზე განვათავსებთ, უნდა შევქმნათ model.tar.gz არქივი ყველა ჩვენი მოდელის არტეფაქტით, რომელიც შენახულია tmp/-ში, მაგალითად, neuron_model.pt, და ავტვირთოთ ეს Amazon S3-ში. ამისათვის საჭიროა ჩვენი ნებართვების დაყენება. შემდეგ, ჩვენ ვქმნით ჩვენს model.tar.gz-ს. inference.py სკრიპტი განთავსდება code/ საქაღალდეში. ახლა შეგვიძლია ავტვირთოთ ჩვენი model.tar.gz ჩვენს session S3 bucket-ში SageMaker-ის საშუალებით. მას შემდეგ, რაც ჩვენი model.tar.gz ავტვირთეთ Amazon S3-ში, შეგვიძლია შევქმნათ საბაჟო HuggingfaceModel. ეს კლასი გამოყენებული იქნება ჩვენი რეალურ დროში ინფერენციის endpoint-ის შესაქმნელად და განსათავსებლად Amazon SageMaker-ზე. .deploy() აბრუნებს HuggingFacePredictor ობიექტს, რომელიც შეიძლება გამოყენებულ იქნას ინფერენციის მოთხოვნისთვის. ჩვენ მოვახერხეთ ჩვენი ნეირონულად კომპილირებული BERT-ის განთავსება AWS Inferentia-ზე Amazon SageMaker-ზე. ახლა, მოდით, შევამოწმოთ მისი შესრულება. დატვირთვის სატესტო რეჟიმში, ჩვენ გავუშვებთ ციკლს და გავაგზავნით 10,000 სინქრონულ მოთხოვნას.