AI-ის ეფექტურობის რევოლუცია: Hugging Face და AMD Llama 3.1-ს MI300X-ზე აუმჯობესებენ
ყოველდღიურად მილიარდობით AI მოთხოვნის დამუშავება, როგორიცაა ChatGPT-ის მიერ, მოდელის ოპტიმიზაციას გადამწყვეტ მნიშვნელობას ანიჭებს. განსაკუთრებით კრიტიკულია ბირთვის (kernel) დონის ოპტიმიზაცია, რაც ხშირად უგულებელყოფილია მრავალი მოწყობილობისთვის, განსაკუთრებით AMD GPU-ებისთვის. Hugging Face-მა AMD-სთან ითანამშრომლა, რათა შეემუშავებინა ღია წყაროს ოპტიმიზებული ბირთვები Llama 3.1 405B მოდელის მუშაობის გასაუმჯობესებლად FP8 ფორმატში, 8 MI300X GPU-ით აღჭურვილ კვანძზე, VLLM-ის გამოყენებით. ეს პარტნიორობა
დღეში მილიარდზე მეტი მოთხოვნა: ეს არის ChatGPT-ის მიერ ყოველდღიურად დამუშავებული მოთხოვნების მინიმალური შეფასება, რიცხვი, რომელიც, სავარაუდოდ, მალე არ შემცირდება. თითოეული მოთხოვნისთვის და თითოეული გენერირებული ტოკენისთვის, ჩვენ ვახორციელებთ მრავალმილიარდიანი პარამეტრის მოდელის ინფერენსს. სწორედ ამიტომ არის მოდელის ოპტიმიზაცია უმნიშვნელოვანესი ყველა დონეზე: როდესაც ასეთი მასშტაბის მონაცემებთან გაქვთ საქმე, თუნდაც 1%-იანმა შეყოვნების ან ენერგიის მოხმარების გაუმჯობესებამ შეიძლება უზარმაზარი დანაზოგი მოიტანოს.
მაგრამ საიდან შეიძლება მოდიოდეს ეს გაუმჯობესება? მოდელის არქიტექტურები უკვე კარგად არის ჩამოყალიბებული, და პოპულარულ მოდელებს დიდი ხანია აქვთ კვანტიზირებული წონები. თუმცა, რჩება გადამწყვეტი დონე, რომელზეც შეგვიძლია მოდელის ინფერენსის ოპტიმიზაცია: ბირთვის (kernel) დონე. ბირთვები არის ალგორითმები, რომლებიც სრულდება, როდესაც თქვენს ქსელში რაიმე ოპერაციას ასრულებთ: არსებობს მატრიცული გამრავლების ბირთვები, კონვოლუციის ბირთვები, სერიული ნორმალიზაციის ბირთვები და ა.შ. ბირთვები არის დაბალი დონის, მაღალოპტიმიზებული ალგორითმები, ხშირად მორგებული იმ მოწყობილობაზე, რომელზეც ისინი იმუშავებენ. მათი დაწერა ცნობილად ხანგრძლივი და რთულია და მოითხოვს GPU-ის შიდა მუშაობის კარგ გაგებას.
ბირთვები აუცილებელია ნერვულ ქსელებში ოპერაციების შესასრულებლად — ბირთვის გარეშე, ოპერაციის ეფექტურად გამოყენება შეუძლებელია. ამის გამო, ახალი ინოვაციები ხშირად იწყება "დღე 0" ბირთვით, რომელიც, როგორც წესი, ოპტიმიზებულია მხოლოდ უახლესი Nvidia აპარატურისთვის. ეს მიდგომა გამორიცხავს ბევრ სხვა მოწყობილობას, განსაკუთრებით AMD GPU-ებს, რომლებიც, მიუხედავად შედარებითი ან აღმატებული სპეციფიკაციებისა, ხშირად რჩებიან ბირთვის დეველოპერების ყურადღების მიღმა. Hugging Face-მა AMD-სთან ითანამშრომლა, რათა მიეღწია უახლესი დონის წარმადობისთვის AMD პლატფორმებზე და ეს სარგებელი გაეზიარებინა ღია წყაროს საზოგადოებისთვის. ამ პარტნიორობის ფარგლებში, ჩვენ AMD-სთან ერთად გადავწყვიტეთ, ფოკუსირება მოვახდინოთ ღია წყაროს ოპტიმიზებული ბირთვების მიწოდებაზე, რათა გაუმჯობესდეს Llama 3.1 405B-ის მუშაობა FP8-ში, 8 MI300X-ის კვანძზე, VLLM-ის გამოყენებით.
ამ ბლოგპოსტში, ჩვენ განვიხილავთ, თუ როგორ მოვახდინეთ MI300X-ისთვის წარმადობის ოპტიმიზაცია და როგორ დაზუსტდა თითოეული ბირთვი ინდივიდუალურად. მაგრამ ჯერ, მოდით გადავხედოთ მიღწეულ წარმადობის გაუმჯობესებას ჩვენი მორგებული ბირთვების გამოყენებით. შემდეგი სამი ოპტიმიზებული ბირთვის კომბინაციით: ჩვენ მივაღწიეთ მნიშვნელოვან აჩქარებას VLLM-ის გაშვებისას MI300X GPU-ებით აღჭურვილ კვანძზე.
გაზომვები განხორციელდა შეყვანის ზომით 1 და გამომავალი ზომით 128, რათა მიმეტიკურად აღგვედგინა დეკოდირების რეჟიმი. ჩვენ ვზომავთ დეკოდირების შეყოვნებას 30 იტერაციაზე მიღებული მედიანის გამოყენებით.
ეს წარმადობის გაუმჯობესებები გაიზომა VLLM-ში, მაგრამ შეგიძლიათ ბირთვები ცალკეული სახითაც გამოიყენოთ, როგორც ეს აღწერილია შემდეგ „როგორ“ სექციაში. ყველა ზემოთ აღწერილი ბირთვი ხელმისაწვდომია hf-rocm-kernels რეპოზიტორიუმში. მასში ნახავთ ინსტრუქციებს პაკეტის ინსტალაციის შესახებ, თითოეული ბირთვის საწყის კოდს, მათ შესაბამის პითონის ბაინდინგებს, სხვადასხვა ბენჩმარკინგის სკრიპტებს და ტესტების კომპლექტს. ბენჩმარკინგის სკრიპტებისა და MI300X-ის გამოყენებით, შესაძლოა, ამ ბლოგპოსტიდან მოცემული შედეგებიც კი გაიმეოროთ. Torch-ისთვის ან VLLM-ისთვის იგივე შედეგების უზრუნველსაყოფად, შეგიძლიათ გამოიყენოთ იგივე კონტეინერი, რაც ჩვენ გამოვიყენეთ.
ასევე შეგიძლიათ გამოიყენოთ რეპოზიტორიუმი, როგორც საფუძველი საკუთარი ბირთვების შესაქმნელად: ის შეიცავს ინსტრუქციებს, თუ როგორ დააკავშიროთ CUDA-ს სტილის ბირთვი პითონთან და მარტივი ნიმუში ბირთვი. შეგიძლიათ გადახედოთ ახალი ბირთვების შემუშავების ფილიალებსაც, მაგალითად, გამოთვლისა და კომუნიკაციის ბირთვს, როგორც ეს აქ არის აღწერილი.
აღწერილი ბირთვები მალე ინტეგრირებული იქნება VLLM პროექტის AMD-ის ფილიალში, მაგრამ თუ გსურთ ნახოთ, როგორ შეგიძლიათ მსგავსი რამის გაკეთება თავად, შეგიძლიათ შეამოწმოთ ეს ფილიალი და ეს დოკუმენტი. პირველ რიგში, სწრაფად განვაახლებთ ჩვენს ცოდნას იმ მოწყობილობის არქიტექტურის შესახებ, რომელზეც ვმუშაობთ: MI300X. შემდეგ, ოპტიმიზაციამდე გადავხედავთ ჩვენი მოდელის ინფერენსის მდგომარეობას. ეს მოგვცემს საშუალებას, გამოვავლინოთ შეფერხებები და ვიცოდეთ, რომელი მორგებული ბირთვების დაწერა გვჭირდება. ამის შემდეგ, გადავხედავთ თითოეულ დაწერილ ბირთვს, რაც მოგვცემს შესაძლებლობას, მრავალი კუთხით შევისწავლოთ, თუ როგორ ხორციელდება ბირთვის ოპტიმიზაცია. სანამ GPU კოდის ოპტიმიზაციას დავიწყებთ, უნდა ვიცოდეთ, როგორ მუშაობს GPU. არსებობს უამრავი რესურსი, რომელიც უკვე კარგად ხსნის GPU-ის შიდა მუშაობას, რომლებსაც აქ, აქ და აქ დავაკავშირებ. ჩვენ მაინც სწრაფად გადავხედავთ GPU-ის სხვადასხვა დონეს, როგორც სწრაფი განახლება. თუ გსურთ გამოტოვოთ განახლება და პირდაპირ გადახვიდეთ ჩვენი მორგებული ბირთვების დეტალებზე, დააწკაპუნეთ აქ! GPU-ში მუშაობის უმცირესი ერთეული არის თრედი. ნებისმიერ დროს, როდესაც რაიმე სამუშაო სრულდება GPU-ზე, ეს ხდება იმიტომ, რომ თრედმა შეასრულა ინსტრუქცია. ინსტრუქციები არის ძირითადი ოპერაციები, როგორიცაა შეკრება, გამრავლება, ერთი მონაცემთა ტიპიდან მეორეზე გადაყვანა, ან ჩატვირთვა და შენახვა. თითოეულ თრედს აქვს საკუთარი მეხსიერება, სახელწოდებით რეგისტრები (ან VGPRs), რომლებზეც მხოლოდ მას შეუძლია წვდომა. თრედს შეიძლება ჰქონდეს მაქსიმუმ 256 რეგისტრი, თითოეული 32-ბიტიანი სიგანით. ქვემოთ წარმოდგენილია თრედი, რომელსაც აქვს წვდომა თავის 256 VGPR-ზე. თრედები, გარდა ჩატვირთვის ან შენახვის ინსტრუქციების გამოყენებისა, შეუძლიათ მხოლოდ საკუთარ რეგისტრებზე შეასრულონ ინსტრუქციები. მაგალითად, ორი ვექტორის A და B ერთად დასამატებლად, თითოეული თრედი 1) ჩატვირთავს თავის რეგისტრებში A-დან ელემენტს და 2) მეორეს B-დან, შემდეგ 3) შეასრულებს ტ
თეგები:
#ai
#მანქანური სწავლება
#ოპტიმიზაცია
#gpu
#ღია წყარო
#hugging face
#amd
#mi300x
#vllm
#llama 3.1
#ბირთვები
წყარო: huggingface.co
AI-ით გადამუშავებული
მსგავსი სტატიები
ტექნოლოგიები
Honor Magic V6: უთხელესი დასაკეცი ტელეფონი? პირველი შთაბეჭდილებები
ტექნოლოგიები
Honor Magic V6: ყველაზე თხელი დასაკეცი სმარტფონი და მისი შთამბეჭდავი შესაძლებლობები
ტექნოლოგიები