თქვენ შეისწავლით, თუ როგორ უნდა: შენიშვნა: ნაბიჯები 1-დან 3-მდე შეიძლება/უნდა შესრულდეს სხვა ინსტანციის ზომაზე, რადგან ისინი CPU-ინტენსიური ამოცანებია. **მოთხოვნები:** სანამ დავიწყებთ, დარწმუნდით, რომ აკმაყოფილებთ შემდეგ მოთხოვნებს. **სასარგებლო რესურსები:** BERT, შემოკლებით Bidirectional Encoder Representations from Transformers, არის მანქანური სწავლების (ML) მოდელი ბუნებრივი ენის დამუშავებისთვის (NLP). ის შემუშავდა 2018 წელს Google AI Language-ის მკვლევრების მიერ და წარმოადგენს მრავალფუნქციურ გადაწყვეტას 11-ზე მეტი ყველაზე გავრცელებული ენობრივი ამოცანისთვის, როგორიცაა სენტიმენტების ანალიზი და დასახელებული ერთეულების ამოცნობა. მეტი წაიკითხეთ BERT-ის შესახებ ჩვენს ბლოგში „BERT 101 🤗 უახლესი NLP მოდელის ახსნა“. MLM შესაძლებელს ხდის/აიძულებს ტექსტიდან ორმხრივ სწავლებას წინადადებაში სიტყვის ნიღბით (დამალვით) და BERT-ს აიძულებს ორმხრივად გამოიყენოს დაფარული სიტყვის ორივე მხარეს არსებული სიტყვები ნიღბიანი სიტყვის პროგნოზირებისთვის. **შენიღბული ენის მოდელირების მაგალითი:** მეტი წაიკითხეთ შენიღბული ენის მოდელირების შესახებ აქ. დავიწყოთ. 🚀 შენიშვნა: ნაბიჯები 1-დან 3-მდე შესრულდა AWS c6i.12xlarge ინსტანციაზე. ეს სახელმძღვანელო ორ ნაწილადაა გაყოფილი. პირველი ნაწილი (ნაბიჯები 1-3) ეხება მონაცემთა ნაკრებისა და ტოკენიზატორის მომზადებას. მეორე ნაწილი (ნაბიჯი 4) ეხება BERT-ის წინასწარ ვარჯიშს მომზადებულ მონაცემთა ნაკრებზე. სანამ მონაცემთა ნაკრების მომზადებას დავიწყებთ, უნდა მოვაწყოთ ჩვენი განვითარების გარემო. როგორც შესავალში აღინიშნა, მონაცემთა ნაკრების მომზადება არ გჭირდებათ DL1 ინსტანციაზე და შეგიძლიათ გამოიყენოთ თქვენი ნოუთბუქი ან დესკტოპ კომპიუტერი. თავდაპირველად ჩვენ დავაინსტალირებთ `transformers`, `datasets` და `git-lfs`-ს, რათა ჩვენი ტოკენიზატორი და მონაცემთა ნაკრები მოგვიანებით გამოსაყენებლად Hugging Face Hub-ზე ავტვირთოთ. ჩვენი ინსტალაციის დასასრულებლად, შევიდეთ Hugging Face Hub-ზე, რათა ავტვირთოთ ჩვენი მონაცემთა ნაკრები, ტოკენიზატორი, მოდელის არტეფაქტები, ჟურნალები და მეტრიკები ვარჯიშის დროს და შემდეგ ჰაბზე. იმისათვის, რომ შევძლოთ ჩვენი მოდელის ჰაბზე ატვირთვა, უნდა დარეგისტრირდეთ Hugging Face Hub-ზე. ჩვენ გამოვიყენებთ `notebook_login` უტილიტას `huggingface_hub` პაკეტიდან ჩვენს ანგარიშში შესასვლელად. თქვენი ტოკენის მიღება შეგიძლიათ პარამეტრებში, „Access Tokens“-ში. რადგან ახლა შესული ვართ, მივიღოთ `user_id`, რომელიც გამოყენებული იქნება არტეფაქტების ასატვირთად. ორიგინალური BERT წინასწარ იყო ნავარჯიშები Wikipedia-სა და BookCorpus-ის მონაცემთა ნაკრებებზე. ორივე მონაცემთა ნაკრები ხელმისაწვდომია Hugging Face Hub-ზე და მათი ჩატვირთვა შესაძლებელია `datasets`-ის საშუალებით. შენიშვნა: Wikipedia-სთვის ჩვენ გამოვიყენებთ 20220301 ვერსიას, რომელიც განსხვავდება ორიგინალური დაყოფისგან. პირველ ეტაპზე ჩვენ ჩავტვირთავთ მონაცემთა ნაკრებებს და გავაერთიანებთ მათ ერთ დიდ მონაცემთა ნაკრებად. ჩვენ არ ვაპირებთ რაიმე მოწინავე მონაცემთა ნაკრების მომზადებას, როგორიცაა დუბლიკატების მოცილება, გაფილტვრა ან რაიმე სხვა წინასწარი დამუშავება. თუ თქვენ გეგმავთ ამ ნოუთბუქის გამოყენებას საკუთარი BERT მოდელის ნულიდან ვარჯიშისთვის, კატეგორიულად გირჩევთ, რომ ეს მონაცემთა მომზადების ნაბიჯები თქვენს სამუშაო პროცესში შეიტანოთ. ეს დაგეხმარებათ გააუმჯობესოთ თქვენი ენის მოდელი. ჩვენი მოდელის ვარჯიშისთვის საჭიროა ჩვენი ტექსტი ტოკენიზებულ ფორმატში გადავიყვანოთ. ტრანსფორმერების მოდელების უმეტესობა მოდის წინასწარ ნავარჯიშები ტოკენიზატორით, მაგრამ რადგან ჩვენ ჩვენს მოდელს ნულიდან ვავარჯიშებთ, ასევე გვჭირდება ტოკენიზატორის ვარჯიში ჩვენს მონაცემებზე. ჩვენ შეგვიძლია ტოკენიზატორის ვარჯიში ჩვენს მონაცემებზე `transformers`-ისა და `BertTokenizerFast` კლასის გამოყენებით. მეტი ინფორმაცია ახალი ტოკენიზატორის ვარჯიშის შესახებ შეგიძლიათ იხილოთ ჩვენს Hugging Face კურსში. ჩვენ შეგვიძლია დავიწყოთ ტოკენიზატორის ვარჯიში `train_new_from_iterator()`-ის საშუალებით. ჩვენ ვტვირთავთ ტოკენიზატორს Hugging Face Hub-ზე ჩვენი მოდელის შემდგომი ვარჯიშისთვის. სანამ ჩვენი მოდელის ვარჯიშს დავიწყებთ, ბოლო ნაბიჯი არის ჩვენი მონაცემთა ნაკრების წინასწარი დამუშავება/ტოკენიზაცია. ჩვენ გამოვიყენებთ ჩვენს ნავარჯიშებ ტოკენიზატორს ჩვენი მონაცემთა ნაკრების ტოკენიზაციისთვის და შემდეგ ავტვირთავთ მას ჰაბზე, რათა შემდგომში ადვილად ჩავტვირთოთ ჩვენს ვარჯიშში. ტოკენიზაციის პროცესი ასევე საკმაოდ მარტივადაა შენარჩუნებული, თუ დოკუმენტები 512 ტოკენზე გრძელია, ისინი წყდება და არ იყოფა რამდენიმე დოკუმენტად. მონაცემთა დამუშავების ფუნქციად ჩვენ გავაერთიანებთ ჩვენი მონაცემთა ნაკრების ყველა ტექსტს და შევქმნით `tokenizer.model_max_length` (512) ზომის ნაწილებს. ბოლო ნაბიჯი, სანამ ჩვენი ვარჯიშის დაწყებას შევძლებთ, არის ჩვენი მომზადებული მონაცემთა ნაკრების ჰაბზე ატვირთვა. ამ მაგალითში, ჩვენ გამოვიყენებთ Habana Gaudi-ს AWS-ზე, DL1 ინსტანციის გამოყენებით, წინასწარი ვარჯიშის გასაშვებად. ჩვენ გამოვიყენებთ Remote Runner ხელსაწყოთა კომპლექტს, რათა მარტივად გავუშვათ ჩვენი წინასწარი ვარჯიში დისტანციურ DL1 ინსტანციაზე ჩვენი ლოკალური დაყენებიდან. შეგიძლიათ გაეცნოთ „Deep Learning setup made easy with EC2 Remote Runner and Habana Gaudi“, თუ გსურთ მეტი გაიგოთ, როგორ მუშაობს ეს. GPU-ების გამოყენებისას თქვენ გამოიყენებდით `Trainer`-ს და `TrainingArguments`-ს. რადგან ჩვენ ვაპირებთ ჩვენი ვარჯიშის გაშვებას Habana Gaudi-ზე, ჩვენ ვიყენებთ `optimum-habana` ბიბლიოთეკას, შეგვიძლია გამოვიყენოთ `GaudiTrainer` და `GaudiTrainingArguments`. `GaudiTrainer` არის `Trainer`-ის გარსი, რომელიც საშუალებას გაძლევთ წინასწარ ავარჯიშოთ ან დააზუსტოთ ტრანსფორმერების მოდელი Habana Gaudi-ის ინსტანციებზე. DL1 ინსტანციას, რომელსაც ვიყენებთ, აქვს 8 ხელმისაწვდომი HPU-ბირთვი, რაც ნიშნავს, რომ შეგვიძლია გამოვიყენოთ განაწილებული მონაცემთა-პარალელური ვარჯიში ჩვენი მოდელისთვის. ჩვენი ვარჯიშის განაწილებულ ვარჯიშად გასაშვებად, საჭიროა შევქმნათ სავარჯიშო სკრიპტი, რომელიც შეიძლება გამოყენებულ იქნას `multiprocessing`-თან ერთად ყველა HPU-ზე გასაშვებად. ჩვენ შევქმენით `run_mlm.py` სკრიპტი, რომელიც ახორციელებს შენიღბული ენის მოდელირებას გამოყენებით