ღრმა სწავლის დაჩქარება Intel Xeon CPU-ებზე: ტრანსფერული სწავლის ახალი შესაძლებლობები
გრაფიკული პროცესორების (GPU) ნაცვლად, ტრანსფერული სწავლის განვითარება ღრმა სწავლის მოდელების ოპტიმიზაციისთვის CPU-ზე დაფუძნებულ კლასტერებს საინტერესო ალტერნატივად აქცევს. ეს სტატია განმარტავს, თუ როგორ შეიძლება PyTorch-ის სასწავლო ამოცანების დაჩქარება Intel Xeon Scalable CPU სერვერების გამოყენებით, Ice Lake არქიტექტურაზე დაფუძნებული ვირტუალური მანქანების კლასტერის შექმნით და წარმადობაზე ოპტიმიზებული პროგრამული ბიბლიოთეკების ინსტალაციით, როგორიცაა Intel extension for PyTorch და oneCCL.
გრაფიკული პროცესორები (GPU-ები) დიდი ხანია, რაც ღრმა სწავლის მოდელების დასამუშავებლად სტანდარტულ არჩევანს წარმოადგენს. თუმცა, ტრანსფერული სწავლის აღმავლობა თამაშის წესებს ცვლის. მოდელები ახლა იშვიათად მუშავდება ნულიდან უზარმაზარ მონაცემთა ნაკრებებზე. სამაგიეროდ, ისინი ხშირად წვრილად რეგულირდება (fine-tuned) კონკრეტულ (და უფრო მცირე) მონაცემთა ნაკრებებზე, რათა შეიქმნას სპეციალიზებული მოდელები, რომლებიც საბაზისო მოდელზე უფრო ზუსტია კონკრეტული ამოცანებისთვის. ვინაიდან ეს სასწავლო ამოცანები გაცილებით ხანმოკლეა, CPU-ზე დაფუძნებული კლასტერის გამოყენება შეიძლება საინტერესო ვარიანტი აღმოჩნდეს, რომელიც სწავლის დროსაც და ხარჯებსაც აკონტროლებს.
ამ პოსტში თქვენ შეისწავლით, თუ როგორ დააჩქაროთ PyTorch-ის სასწავლო ამოცანები მათი განაწილებით Intel Xeon Scalable CPU სერვერების კლასტერზე, რომლებიც აღჭურვილია Ice Lake არქიტექტურით და მუშაობს წარმადობაზე ოპტიმიზებული პროგრამული ბიბლიოთეკებით. ჩვენ ავაშენებთ კლასტერს ნულიდან ვირტუალური მანქანების გამოყენებით, და თქვენ მარტივად შეძლებთ დემოს გამეორებას თქვენს საკუთარ ინფრასტრუქტურაზე, იქნება ეს ღრუბელში თუ ადგილობრივ სერვერებზე. ტექსტის კლასიფიკაციის ამოცანის გაშვებით, ჩვენ დავარეგულირებთ (fine-tune) BERT მოდელს MRPC მონაცემთა ნაკრებზე (ერთ-ერთი ამოცანა, რომელიც შედის GLUE ბენჩმარკში). MRPC მონაცემთა ნაკრები შეიცავს 5,800 წინადადების წყვილს, რომლებიც ამოღებულია საინფორმაციო წყაროებიდან, და ეტიკეტს, რომელიც გვეუბნება, არის თუ არა თითოეულ წყვილში ორი წინადადება სემანტიკურად ეკვივალენტური. ჩვენ ავირჩიეთ ეს მონაცემთა ნაკრები მისი გონივრული სასწავლო დროის გამო, ხოლო სხვა GLUE ამოცანების ცდა მხოლოდ პარამეტრის შეცვლას საჭიროებს.
მას შემდეგ, რაც კლასტერი ამუშავდება, ჩვენ გავუშვებთ საწყის (baseline) ამოცანას ერთ სერვერზე. შემდეგ, მას გავაფართოვებთ 2 და 4 სერვერზე და გავზომავთ დაჩქარებას. მუშაობის პროცესში, ჩვენ განვიხილავთ შემდეგ თემებს: დავიწყოთ!
საუკეთესო წარმადობისთვის, ჩვენ გამოვიყენებთ Intel-ის სერვერებს Ice Lake არქიტექტურაზე დაფუძნებულს, რომელიც მხარს უჭერს ისეთ აპარატურულ მახასიათებლებს, როგორიცაა Intel AVX-512 და Intel Vector Neural Network Instructions (VNNI). ეს მახასიათებლები აჩქარებს ოპერაციებს, რომლებიც, როგორც წესი, გვხვდება ღრმა სწავლის სწავლებასა და ინფერენციაში. მათ შესახებ უფრო მეტის გაგება შეგიძლიათ ამ პრეზენტაციაში (PDF). ყველა სამი ძირითადი ღრუბლოვანი სერვისის პროვაიდერი გვთავაზობს ვირტუალურ მანქანებს, რომლებიც მუშაობს Intel Ice Lake CPU-ებზე: რა თქმა უნდა, შეგიძლიათ გამოიყენოთ თქვენი საკუთარი სერვერებიც. თუ ისინი დაფუძნებულია Cascade Lake არქიტექტურაზე (Ice Lake-ის წინამორბედი), მათი გამოყენება შესაძლებელია, რადგან Cascade Lake ასევე მოიცავს AVX-512-ს და VNNI-ს. PyTorch-ში AVX-512-ისა და VNNI-ის გამოსაყენებლად, Intel-მა შექმნა Intel-ის გაფართოება PyTorch-ისთვის. ეს პროგრამული ბიბლიოთეკა უზრუნველყოფს მყისიერ დაჩქარებას სწავლებისა და ინფერენციისთვის, ამიტომ აუცილებლად უნდა დავაინსტალიროთ.
რაც შეეხება განაწილებულ სწავლებას, მთავარი წარმადობის შეფერხება ხშირად ქსელური კავშირია. მართლაც, კლასტერის სხვადასხვა კვანძმა პერიოდულად უნდა გაცვალოს მოდელის მდგომარეობის შესახებ ინფორმაცია სინქრონიზაციის შესანარჩუნებლად. ვინაიდან ტრანსფორმერები დიდი მოდელებია მილიარდობით პარამეტრით (ზოგჯერ გაცილებით მეტით), ინფორმაციის მოცულობა მნიშვნელოვანია, და სიტუაცია უარესდება კვანძების რაოდენობის მატებასთან ერთად. ამრიგად, მნიშვნელოვანია გამოიყენოთ საკომუნიკაციო ბიბლიოთეკა, რომელიც ოპტიმიზებულია ღრმა სწავლისთვის. ფაქტობრივად, PyTorch მოიცავს `torch.distributed` პაკეტს, რომელიც მხარს უჭერს სხვადასხვა საკომუნიკაციო ბექენდს. აქ ჩვენ გამოვიყენებთ Intel oneAPI Collective Communications Library-ს (oneCCL), ღრმა სწავლაში გამოყენებული საკომუნიკაციო შაბლონების (მაგ. all-reduce) ეფექტურ იმპლემენტაციას. oneCCL-ის წარმადობის შესახებ სხვა ბექენდებთან შედარებით შეგიძლიათ შეიტყოთ ამ PyTorch ბლოგ-პოსტში.
ახლა, როდესაც სამშენებლო ბლოკები ნათელია, მოდით ვისაუბროთ ჩვენი სასწავლო კლასტერის საერთო კონფიგურაციაზე. ამ დემოში მე ვიყენებ Amazon EC2 ინსტანციებს, რომლებიც მუშაობს Amazon Linux 2-ზე (c6i.16xlarge, 64 vCPU, 128GB RAM, 25 გბიტ/წმ ქსელური კავშირი). კონფიგურაცია განსხვავებული იქნება სხვა გარემოებებში, მაგრამ ნაბიჯები უნდა იყოს ძალიან მსგავსი. გაითვალისწინეთ, რომ დაგჭირდებათ 4 იდენტური ინსტანცია, ამიტომ შესაძლოა, დაგეგმოთ რაიმე სახის ავტომატიზაცია, რათა თავიდან აიცილოთ ერთი და იგივე კონფიგურაციის 4-ჯერ გაშვება. აქ მე ხელით დავაკონფიგურირებ ერთ ინსტანციას, შევქმნი ახალ Amazon Machine Image-ს (AMI) ამ ინსტანციიდან და გამოვიყენებ ამ AMI-ს სამი იდენტური ინსტანციის გასაშვებად.
ქსელური კავშირის პერსპექტივიდან, დაგვჭირდება შემდეგი კონფიგურაცია: ახლა, ხელით მოვამზადოთ პირველი ინსტანცია. მე ჯერ თავად ვქმნი ინსტანციას, ვუმაგრებ ზემოთ მოცემულ უსაფრთხოების ჯგუფს და ვამატებ 128 GB მეხსიერებას. ხარჯების ოპტიმიზაციისთვის, ის გავუშვი, როგორც სპოტ ინსტანცია. მას შემდეგ, რაც ინსტანცია ამუშავდება, მას ვუკავშირდები SSH-ით, რათა დავაინსტალირო დამოკიდებულებები. აი, ნაბიჯები, რომლებსაც მივყვებით: შეიძლება ბევრი ჩანდეს, მაგრამ არაფერია რთული. დავიწყოთ!
**Intel-ის ინსტრუმენტების ნაკრებების ინსტალაცია**
პირველ რიგში, ჩვენ ჩამოვტვირთავთ და დავაინსტალირებთ Intel OneAPI-ის საბაზო ინსტრუმენტების ნაკრებს, ასევე AI-ის ინსტრუმენტების ნაკრებს. მათ შესახებ შეგიძლიათ გაიგოთ Intel-ის ვებსაიტზე.
**Anaconda-ს ინსტალაცია**
შემდეგ, ჩვენ ჩამოვტვირთავთ და დავაინსტალირებთ Anaconda დისტრიბუციას.
**ახალი Conda გარემოს შექმნა**
ჩვენ გამოვდივართ და ისევ შევდივართ, რათა განვაახლოთ გზები (paths). შემდეგ, ვქმნით ახალ Conda გარემოს, რათა ყველაფერი მოწესრიგებული იყოს.
**PyTorch-ის და Intel-ის გაფართოების ინსტალაცია PyTorch-ისთვის**
შემდეგ, ჩვენ ვაინსტალირებთ PyTorch 1.9-ს და Intel-ის გაფართოების ინსტრუმენტების ნაკრებს. ვერსიები უნდა ემთხვეოდეს.
**oneCCL-ის კომპილაცია და ინსტალაცია**
შემდეგ, ჩვენ ვაინსტალირებთ რამდენიმე ნატიურ დამოკიდებულებას, რომლებიც საჭიროა oneCCL-ის კომპილაციისთვის.
თეგები:
#ტექნოლოგიები
#ხელოვნური ინტელექტი
#gpu
#ღრმა სწავლა
#მანქანური სწავლა
#pytorch
#aws
#intel xeon
#განაწილებული სწავლება
#cpu
#ტრანსფერული სწავლა
#ice lake
#oneccl
წყარო: huggingface.co
AI-ით გადამუშავებული
მსგავსი სტატიები
ტექნოლოგიები
Honor Magic V6: უთხელესი დასაკეცი ტელეფონი? პირველი შთაბეჭდილებები
ტექნოლოგიები
Honor Magic V6: ყველაზე თხელი დასაკეცი სმარტფონი და მისი შთამბეჭდავი შესაძლებლობები
ტექნოლოგიები