SageMaker-ის გუნდთან ერთად, ჩვენ შევქმენით 🤗 Transformers-ის ოპტიმიზებული ღრმა სწავლის კონტეინერები (DLCs), რათა დაგვეჩქარებინა Transformer-ზე დაფუძნებული მოდელების გაწვრთნა. მადლობა AWS-ის მეგობრებო! 🤗 🚀 SageMaker Python SDK-ში არსებული ახალი HuggingFace estimator-ის მეშვეობით, ტრენინგის დაწყება კოდის ერთი ხაზით შეგიძლიათ. ინტეგრაციის შესახებ საჭირო ყველა ინფორმაცია მოცემულია განცხადების ბლოგ-პოსტში, მათ შორის „დასაწყებად“ მაგალითი და ბმულები დოკუმენტაციაზე, მაგალითებსა და ფუნქციებზე. აქვე კვლავ ჩამოთვლილია: თუ არ იცნობთ Amazon SageMaker-ს: „Amazon SageMaker არის სრულად მართული სერვისი, რომელიც ყველა დეველოპერსა და მონაცემთა მეცნიერს საშუალებას აძლევს, სწრაფად შექმნას, გაწვრთნას და განათავსოს მანქანური სწავლის (ML) მოდელები. SageMaker ამარტივებს მანქანური სწავლის პროცესის ყველა ეტაპს, რათა გააადვილოს მაღალი ხარისხის მოდელების შექმნა.“ [წყარო] ჩვენ გამოვიყენებთ ახალ Hugging Face DLCs-ს და Amazon SageMaker-ის გაფართოებას, რათა გავწვრთნათ განაწილებული Seq2Seq-transformer მოდელი შეჯამების ამოცანაზე, transformers და datasets ბიბლიოთეკების გამოყენებით, შემდეგ კი ავტვირთავთ მოდელს huggingface.co-ზე და ვტესტავთ მას. როგორც განაწილებული ტრენინგის სტრატეგია, ჩვენ გამოვიყენებთ SageMaker Data Parallelism-ს, რომელიც ჩაშენებულია Trainer API-ში. მონაცემთა პარალელიზმის გამოსაყენებლად, ჩვენ მხოლოდ განაწილების პარამეტრი უნდა განვსაზღვროთ ჩვენს HuggingFace estimator-ში. ამ გაკვეთილში, ჩვენ გამოვიყენებთ Amazon SageMaker Notebook Instance-ს ჩვენი ტრენინგის ამოცანის გასაშვებად. აქ შეგიძლიათ გაიგოთ, როგორ დააყენოთ Notebook Instance. რას გავაკეთებთ: ჩვენ განვახორციელებთ facebook/bart-large-cnn-ის წვრილ ოპტიმიზაციას (fine-tune) samsum მონაცემთა ნაკრებზე. „BART არის sequence-to-sequence მოდელი, რომელიც გაწვრთნილია ხმაურის მოცილებით, როგორც წინასწარი ტრენინგის (pretraining) ამოცანით.“ [წყარო] samsum მონაცემთა ნაკრები შეიცავს დაახლოებით 16 ათას მესენჯერის მსგავს საუბარს შეჯამებებით. მას შემდეგ, რაც ჩვენი SageMaker Notebook Instance ამოქმედდება, შეგვიძლია ავირჩიოთ Jupyer Notebook ან JupyterLab და შევქმნათ ახალი Notebook conda_pytorch_p36 ბირთვით (kernel). შენიშვნა: Jupyter-ის გამოყენება არჩევითია: SageMaker ტრენინგის ამოცანების გაშვება შეგვიძლია ნებისმიერი ადგილიდან, სადაც გვაქვს SDK დაინსტალირებული, ღრუბელთან კავშირი და შესაბამისი ნებართვები, მაგალითად, ლეპტოპიდან, სხვა IDE-დან ან დავალებების დამგეგმავიდან, როგორიცაა Airflow ან AWS Step Functions. ამის შემდეგ შეგვიძლია დავაყენოთ საჭირო დამოკიდებულებები, მათ შორის git-lfs მოდელის ასატვირთად. SageMaker-ზე ტრენინგის გასაშვებად, საჭიროა შევქმნათ sagemaker სესია და მივუთითოთ IAM როლი სწორი ნებართვით. ეს IAM როლი მოგვიანებით დაერთვება TrainingJob-ს, რაც მას საშუალებას მისცემს ჩამოტვირთოს მონაცემები, მაგალითად, Amazon S3-დან. 🤗 Transformers-ის რეპოზიტორიუმი შეიცავს მრავალ მაგალითს/სკრიპტს მოდელების წვრილი ოპტიმიზაციისთვის (fine-tuning) სხვადასხვა ამოცანებზე, ენის მოდელირებიდან ტოკენის კლასიფიკაციამდე. ჩვენს შემთხვევაში, ვიყენებთ run_summarization.py-ს seq2seq/ მაგალითებიდან. შენიშვნა: შეგიძლიათ გამოიყენოთ ეს გაკვეთილი უცვლელად, რათა გაწვრთნათ თქვენი მოდელი სხვა მაგალითის სკრიპტზე. ვინაიდან HuggingFace Estimator-ს აქვს ჩაშენებული git მხარდაჭერა, ჩვენ შეგვიძლია მივუთითოთ GitHub რეპოზიტორიუმში შენახული ტრენინგის სკრიპტი, როგორც entry_point და source_dir. ჩვენ გამოვიყენებთ transformers 4.4.2 DLC-ს, რაც ნიშნავს, რომ v4.4.2 უნდა დავაკონფიგურიროთ, როგორც ფილიალი (branch), რათა ჩამოვტვირთოთ თავსებადი მაგალითის სკრიპტები. შემდეგ, ჩვენ განვსაზღვრავთ ჩვენს ჰიპერპარამეტრებს და დავაკონფიგურირებთ ჩვენს განაწილებულ ტრენინგის სტრატეგიას. ჰიპერპარამეტრად შეგვიძლია განვსაზღვროთ ნებისმიერი Seq2SeqTrainingArguments და ის პარამეტრები, რომლებიც განსაზღვრულია run_summarization.py-ში. ვინაიდან ვიყენებთ SageMaker Data Parallelism-ს, ჩვენი total_batch_size იქნება per_device_train_batch_size * n_gpus. ტრენინგამდე ბოლო ნაბიჯი HuggingFace estimator-ის შექმნაა. Estimator მართავს ბოლოდან ბოლომდე Amazon SageMaker ტრენინგს. ჩვენ განვსაზღვრავთ, რომელი წვრილი ოპტიმიზაციის (fine-tuning) სკრიპტი უნდა იქნას გამოყენებული, როგორც entry_point, რომელი instance_type უნდა იქნას გამოყენებული და რომელი ჰიპერპარამეტრები გადაეცემა. instance_type-ად ვიყენებთ ml.p3dn.24xlarge-ს, რომელიც შეიცავს 8x NVIDIA A100-ს instance_count-ით 2. ეს ნიშნავს, რომ ტრენინგს გავუშვებთ 16 GPU-ზე და total_batch_size იქნება 16*4=64. ჩვენ ვწვრთნით 400 მილიონი პარამეტრის მოდელს total_batch_size 64-ით, რაც მართლაც შთამბეჭდავია. ტრენინგის დასაწყებად ვიძახებთ .fit() მეთოდს. ტრენინგის ხანგრძლივობა 2882 წამია, რადგან ის გამრავლებულია ინსტანსების რაოდენობაზე. თუ გამოვთვლით 2882/2=1441, ეს არის ხანგრძლივობა „ტრენინგის სურათის ჩამოტვირთვიდან“ „ტრენინგის ამოცანის დასრულებამდე“. რეალურ ფულზე გადაყვანილი, 16 NVIDIA Tesla V100-GPU-ზე ტრენინგი უახლესი შეჯამების მოდელისთვის დაახლოებით 28$-ს შეადგენს. ვინაიდან ჩვენმა მოდელმა საკმაოდ კარგი შედეგი აჩვენა, ჩვენ მას ავტვირთავთ huggingface.co-ზე, შევქმნით model_card-ს და ვტესტავთ Hosted Inference ვიჯეტის გამოყენებით. მოდელის ასატვირთად აქ უნდა შექმნათ ანგარიში. ჩვენ შეგვიძლია გადმოვწეროთ ჩვენი მოდელი Amazon S3-დან და გავხსნათ ის შემდეგი კოდის ფრაგმენტის გამოყენებით. სანამ ჩვენს მოდელს huggingface.co-ზე ავტვირთავთ, საჭიროა შევქმნათ model_card. model_card აღწერს მოდელს და მოიცავს ჰიპერპარამეტრებს, შედეგებს და მიუთითებს, თუ რომელი მონაცემთა ნაკრები იქნა გამოყენებული ტრენინგისთვის. model_card-ის შესაქმნელად, ჩვენ ვქმნით README.md-ს ჩვენს local_path-ში, მას შემდეგ, რაც ამოვიღებთ ყველა იმ მეტრიკას, რომლის ჩართვაც გვსურს, ამ ინფორმაციას შევიტანთ README.md-ში.